Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  1. /*
  2.  * All HWMC kernels
  3.  * Copyright © <2010>, Intel Corporation.
  4.  *
  5.  * This program is licensed under the terms and conditions of the
  6.  * Eclipse Public License (EPL), version 1.0.  The full text of the EPL is at
  7.  * http://www.opensource.org/licenses/eclipse-1.0.php.
  8.  *
  9.  */
  10.  
  11. // Kernel name: AllAVC.asm
  12. //
  13. // All HWMC kernels merged into this file
  14. //
  15. //  $Revision: 2 $
  16. //  $Date: 9/10/06 2:02a $
  17. //
  18.  
  19. // Note: To enable SW scoreboard for ILK AVC kernels, simply toggle the HW_SCOREBOARD
  20. //               and SW_SCOREBOARD definition as described below.
  21. //
  22. // ----------------------------------------------------
  23. //  Main: ALLINTRA
  24. // ----------------------------------------------------
  25.  
  26. #define COMBINED_KERNEL
  27. #define ENABLE_ILDB
  28.  
  29. //      WA for *Stim tool issue, should be removed later
  30.  
  31. #ifdef DEV_ILK
  32. #define INSTFACTOR      2       // 128-bit count as 2 instructions
  33. #else
  34. #define INSTFACTOR      1       // 128-bit is 1 instruction
  35. #endif  // DEV_ILK
  36.  
  37. #ifdef DEV_CTG
  38.   #define SW_SCOREBOARD         // SW Scoreboard should be enabled for CTG and earlier
  39.   #undef HW_SCOREBOARD          // HW Scoreboard should be disabled for CTG and earlier
  40. #else
  41.   #define HW_SCOREBOARD         // HW Scoreboard should be enabled for ILK and beyond
  42.   #undef SW_SCOREBOARD          // SW Scoreboard should be disabled for ILK and beyond
  43. #endif  // DEV_CTG
  44. #ifdef BOOTSTRAP
  45. #  ifdef ENABLE_ILDB
  46. #    define ALL_SPAWNED_UV_ILDB_FRAME_IP        0
  47. #    define SLEEP_ENTRY_UV_ILDB_FRAME_IP        0
  48. #    define POST_SLEEP_UV_ILDB_FRAME_IP         0
  49. #    define ALL_SPAWNED_Y_ILDB_FRAME_IP         0
  50. #    define SLEEP_ENTRY_Y_ILDB_FRAME_IP         0
  51. #    define POST_SLEEP_Y_ILDB_FRAME_IP          0
  52. #  endif
  53. #elif defined(DEV_ILK)
  54. # include "export.inc.gen5"
  55. #elif defined(DEV_CTG)
  56. # include "export.inc"
  57. #endif
  58. #if defined(_EXPORT)
  59.         #include "AllAVC_Export.inc"
  60. #elif defined(_BUILD)
  61.         #include "AllAVC.ich"                   // ISAasm dumped .exports
  62.         #include "AllAVC_Export.inc"    // Keep jumping targets aligned, only for CTG and beyond
  63.         #include "AllAVC_Build.inc"
  64. #else
  65. #endif
  66.  
  67. .kernel AllAVC
  68.  
  69. // Build all intra prediction kernels
  70. //
  71. #ifdef INTRA_16x16_PAD_NENOP
  72.     $for(0; <INTRA_16x16_PAD_NENOP; 1) {
  73.         nenop
  74.         }
  75. #endif
  76. #ifdef INTRA_16x16_PAD_NOP
  77.     $for(0; <INTRA_16x16_PAD_NOP; 1) {
  78.         nop
  79.         }
  80. #endif
  81.     #include "Intra_16x16.asm"
  82.  
  83. #ifdef INTRA_8x8_PAD_NENOP
  84.     $for(0; <INTRA_8x8_PAD_NENOP; 1) {
  85.         nenop
  86.         }
  87. #endif
  88. #ifdef INTRA_8x8_PAD_NOP
  89.     $for(0; <INTRA_8x8_PAD_NOP; 1) {
  90.         nop
  91.         }
  92. #endif
  93.     #include "Intra_8x8.asm"
  94.  
  95. #ifdef INTRA_4x4_PAD_NENOP
  96.     $for(0; <INTRA_4x4_PAD_NENOP; 1) {
  97.         nenop
  98.         }
  99. #endif
  100. #ifdef INTRA_4x4_PAD_NOP
  101.     $for(0; <INTRA_4x4_PAD_NOP; 1) {
  102.         nop
  103.         }
  104. #endif
  105.     #include "Intra_4x4.asm"
  106.  
  107. #ifdef INTRA_PCM_PAD_NENOP
  108.     $for(0; <INTRA_PCM_PAD_NENOP; 1) {
  109.         nenop
  110.         }
  111. #endif
  112. #ifdef INTRA_PCM_PAD_NOP
  113.     $for(0; <INTRA_PCM_PAD_NOP; 1) {
  114.         nop
  115.         }
  116. #endif
  117.     #include "Intra_PCM.asm"
  118.  
  119. // Build FrameMB_Motion kernel
  120. //
  121. #define FRAME
  122.  
  123.   #ifdef FRAME_MB_PAD_NENOP
  124.     $for(0; <FRAME_MB_PAD_NENOP; 1) {
  125.         nenop
  126.         }
  127.   #endif
  128.   #ifdef FRAME_MB_PAD_NOP
  129.     $for(0; <FRAME_MB_PAD_NOP; 1) {
  130.         nop
  131.         }
  132.   #endif
  133.     #include "AVCMCInter.asm"
  134. #undef  FRAME
  135.  
  136. // Build FieldMB_Motion kernel
  137. //
  138. #define FIELD
  139.  
  140.   #ifdef FIELD_MB_PAD_NENOP
  141.     $for(0; <FIELD_MB_PAD_NENOP; 1) {
  142.         nenop
  143.         }
  144.   #endif
  145.   #ifdef FIELD_MB_PAD_NOP
  146.     $for(0; <FIELD_MB_PAD_NOP; 1) {
  147.         nop
  148.         }
  149.   #endif
  150.     #include "AVCMCInter.asm"
  151. #undef  FIELD
  152.  
  153. // Build MBAff_Motion kernel
  154. //
  155. #define MBAFF
  156.  
  157.   #ifdef MBAFF_MB_PAD_NENOP
  158.     $for(0; <MBAFF_MB_PAD_NENOP; 1) {
  159.         nenop
  160.         }
  161.   #endif
  162.   #ifdef MBAFF_MB_PAD_NOP
  163.     $for(0; <MBAFF_MB_PAD_NOP; 1) {
  164.         nop
  165.         }
  166.   #endif
  167.     #include "AVCMCInter.asm"
  168. #undef  MBAFF
  169.  
  170. #ifdef SW_SCOREBOARD    
  171.  
  172. // SW scoreboard kernel for non-MBAFF
  173. //
  174. #ifdef SCOREBOARD_PAD_NENOP
  175.     $for(0; <SCOREBOARD_PAD_NENOP; 1) {
  176.         nenop
  177.         }
  178. #endif
  179. #ifdef SCOREBOARD_PAD_NOP
  180.     $for(0; <SCOREBOARD_PAD_NOP; 1) {
  181.         nop
  182.         }
  183. #endif
  184.     #include "scoreboard.asm"
  185.  
  186. //      SW scoreboard kernel for MBAFF
  187.  
  188. #ifdef SCOREBOARD_MBAFF_PAD_NENOP
  189.     $for(0; <SCOREBOARD_MBAFF_PAD_NENOP; 1) {
  190.         nenop
  191.         }
  192. #endif
  193. #ifdef SCOREBOARD_MBAFF_PAD_NOP
  194.     $for(0; <SCOREBOARD_MBAFF_PAD_NOP; 1) {
  195.         nop
  196.         }
  197. #endif
  198.     #include "scoreboard_MBAFF.asm"
  199.  
  200. #elif defined(HW_SCOREBOARD)
  201.  
  202. // SetHWscoreboard kernel for non-MBAFF
  203. //
  204. #ifdef SETHWSCOREBOARD_PAD_NENOP
  205.     $for(0; <SETHWSCOREBOARD_PAD_NENOP; 1) {
  206.         nenop
  207.         }
  208. #endif
  209. #ifdef SETHWSCOREBOARD_PAD_NOP
  210.     $for(0; <SETHWSCOREBOARD_PAD_NOP; 1) {
  211.         nop
  212.         }
  213. #endif
  214.     #include "SetHWScoreboard.asm"
  215.  
  216. //      SetHWscoreboard kernel for MBAFF
  217.  
  218. #ifdef SETHWSCOREBOARD_MBAFF_PAD_NENOP
  219.     $for(0; <SETHWSCOREBOARD_MBAFF_PAD_NENOP; 1) {
  220.         nenop
  221.         }
  222. #endif
  223. #ifdef SETHWSCOREBOARD_MBAFF_PAD_NOP
  224.     $for(0; <SETHWSCOREBOARD_MBAFF_PAD_NOP; 1) {
  225.         nop
  226.         }
  227. #endif
  228.     #include "SetHWScoreboard_MBAFF.asm"
  229.  
  230. #endif  // SW_SCOREBOARD
  231.  
  232. #ifdef BSDRESET_PAD_NENOP
  233.     $for(0; <BSDRESET_PAD_NENOP; 1) {
  234.         nenop
  235.         }
  236. #endif
  237. #ifdef BSDRESET_PAD_NOP
  238.     $for(0; <BSDRESET_PAD_NOP; 1) {
  239.         nop
  240.         }
  241. #endif
  242.     #include "BSDReset.asm"
  243.  
  244. #ifdef DCRESETDUMMY_PAD_NENOP
  245.     $for(0; <DCRESETDUMMY_PAD_NENOP; 1) {
  246.         nenop
  247.         }
  248. #endif
  249. #ifdef DCRESETDUMMY_PAD_NOP
  250.     $for(0; <DCRESETDUMMY_PAD_NOP; 1) {
  251.         nop
  252.         }
  253. #endif
  254.     #include "DCResetDummy.asm"
  255.  
  256. #ifdef ENABLE_ILDB
  257.  
  258. // Build all ILDB kernels
  259. //
  260. //      Undefine some previous defined symbols since they will be re-defined/re-declared in ILDB kernels
  261. #undef  A
  262. #undef  B
  263. #undef  p0
  264. #undef  p1
  265.  
  266. #define MSGPAYLOADB MSGPAYLOADB_ILDB
  267. #define MSGPAYLOADW MSGPAYLOADW_ILDB
  268. #define MSGPAYLOADD MSGPAYLOADD_ILDB
  269. #define MSGPAYLOADF MSGPAYLOADF_ILDB
  270.  
  271. //                              < Frame ILDB >
  272. #define _PROGRESSIVE
  273. #define ILDB_LABEL(x)   x##_ILDB_FRAME
  274. #ifdef AVC_ILDB_ROOT_Y_ILDB_FRAME_PAD_NENOP
  275.     $for(0; <AVC_ILDB_ROOT_Y_ILDB_FRAME_PAD_NENOP; 1) {
  276.         nenop
  277.         }
  278. #endif
  279. #ifdef AVC_ILDB_ROOT_Y_ILDB_FRAME_PAD_NOP
  280.     $for(0; <AVC_ILDB_ROOT_Y_ILDB_FRAME_PAD_NOP; 1) {
  281.         nop
  282.         }
  283. #endif
  284.     #include "AVC_ILDB_Root_Y.asm"
  285.  
  286. #ifdef AVC_ILDB_CHILD_Y_ILDB_FRAME_PAD_NENOP
  287.     $for(0; <AVC_ILDB_CHILD_Y_ILDB_FRAME_PAD_NENOP; 1) {
  288.         nenop
  289.         }
  290. #endif
  291. #ifdef AVC_ILDB_CHILD_Y_ILDB_FRAME_PAD_NOP
  292.     $for(0; <AVC_ILDB_CHILD_Y_ILDB_FRAME_PAD_NOP; 1) {
  293.         nop
  294.         }
  295. #endif
  296.     #include "AVC_ILDB_Child_Y.asm"
  297.  
  298. #ifdef AVC_ILDB_ROOT_UV_ILDB_FRAME_PAD_NENOP
  299.     $for(0; <AVC_ILDB_ROOT_UV_ILDB_FRAME_PAD_NENOP; 1) {
  300.         nenop
  301.         }
  302. #endif
  303. #ifdef AVC_ILDB_ROOT_UV_ILDB_FRAME_PAD_NOP
  304.     $for(0; <AVC_ILDB_ROOT_UV_ILDB_FRAME_PAD_NOP; 1) {
  305.         nop
  306.         }
  307. #endif
  308.     #include "AVC_ILDB_Root_UV.asm"
  309.  
  310. #ifdef AVC_ILDB_CHILD_UV_ILDB_FRAME_PAD_NENOP
  311.     $for(0; <AVC_ILDB_CHILD_UV_ILDB_FRAME_PAD_NENOP; 1) {
  312.         nenop
  313.         }
  314. #endif
  315. #ifdef AVC_ILDB_CHILD_UV_ILDB_FRAME_PAD_NOP
  316.     $for(0; <AVC_ILDB_CHILD_UV_ILDB_FRAME_PAD_NOP; 1) {
  317.         nop
  318.         }
  319. #endif
  320.     #include "AVC_ILDB_Child_UV.asm"
  321. #undef ILDB_LABEL
  322. #undef _PROGRESSIVE
  323.  
  324. //                              < Field ILDB >
  325. #define _FIELD
  326. #define ILDB_LABEL(x)   x##_ILDB_FIELD
  327. #ifdef AVC_ILDB_ROOT_Y_ILDB_FIELD_PAD_NENOP
  328.     $for(0; <AVC_ILDB_ROOT_Y_ILDB_FIELD_PAD_NENOP; 1) {
  329.         nenop
  330.         }
  331. #endif
  332. #ifdef AVC_ILDB_ROOT_Y_ILDB_FIELD_PAD_NOP
  333.     $for(0; <AVC_ILDB_ROOT_Y_ILDB_FIELD_PAD_NOP; 1) {
  334.         nop
  335.         }
  336. #endif
  337.     #include "AVC_ILDB_Root_Field_Y.asm"
  338.  
  339. #ifdef AVC_ILDB_CHILD_Y_ILDB_FIELD_PAD_NENOP
  340.     $for(0; <AVC_ILDB_CHILD_Y_ILDB_FIELD_PAD_NENOP; 1) {
  341.         nenop
  342.         }
  343. #endif
  344. #ifdef AVC_ILDB_CHILD_Y_ILDB_FIELD_PAD_NOP
  345.     $for(0; <AVC_ILDB_CHILD_Y_ILDB_FIELD_PAD_NOP; 1) {
  346.         nop
  347.         }
  348. #endif
  349.     #include "AVC_ILDB_Child_Field_Y.asm"
  350.  
  351. #ifdef AVC_ILDB_ROOT_UV_ILDB_FIELD_PAD_NENOP
  352.     $for(0; <AVC_ILDB_ROOT_UV_ILDB_FIELD_PAD_NENOP; 1) {
  353.         nenop
  354.         }
  355. #endif
  356. #ifdef AVC_ILDB_ROOT_UV_ILDB_FIELD_PAD_NOP
  357.     $for(0; <AVC_ILDB_ROOT_UV_ILDB_FIELD_PAD_NOP; 1) {
  358.         nop
  359.         }
  360. #endif
  361.     #include "AVC_ILDB_Root_Field_UV.asm"
  362.  
  363. #ifdef AVC_ILDB_CHILD_UV_ILDB_FIELD_PAD_NENOP
  364.     $for(0; <AVC_ILDB_CHILD_UV_ILDB_FIELD_PAD_NENOP; 1) {
  365.         nenop
  366.         }
  367. #endif
  368. #ifdef AVC_ILDB_CHILD_UV_ILDB_FIELD_PAD_NOP
  369.     $for(0; <AVC_ILDB_CHILD_UV_ILDB_FIELD_PAD_NOP; 1) {
  370.         nop
  371.         }
  372. #endif
  373.     #include "AVC_ILDB_Child_Field_UV.asm"
  374. #undef ILDB_LABEL
  375. #undef _FIELD
  376.  
  377. //                              < MBAFF Frame ILDB >
  378. #define _MBAFF
  379. #define ILDB_LABEL(x)   x##_ILDB_MBAFF
  380. #ifdef AVC_ILDB_ROOT_Y_ILDB_MBAFF_PAD_NENOP
  381.     $for(0; <AVC_ILDB_ROOT_Y_ILDB_MBAFF_PAD_NENOP; 1) {
  382.         nenop
  383.         }
  384. #endif
  385. #ifdef AVC_ILDB_ROOT_Y_ILDB_MBAFF_PAD_NOP
  386.     $for(0; <AVC_ILDB_ROOT_Y_ILDB_MBAFF_PAD_NOP; 1) {
  387.         nop
  388.         }
  389. #endif
  390.     #include "AVC_ILDB_Root_Mbaff_Y.asm"
  391.  
  392. #ifdef AVC_ILDB_CHILD_Y_ILDB_MBAFF_PAD_NENOP
  393.     $for(0; <AVC_ILDB_CHILD_Y_ILDB_MBAFF_PAD_NENOP; 1) {
  394.         nenop
  395.         }
  396. #endif
  397. #ifdef AVC_ILDB_CHILD_Y_ILDB_MBAFF_PAD_NOP
  398.     $for(0; <AVC_ILDB_CHILD_Y_ILDB_MBAFF_PAD_NOP; 1) {
  399.         nop
  400.         }
  401. #endif
  402.     #include "AVC_ILDB_Child_Mbaff_Y.asm"
  403.  
  404. #ifdef AVC_ILDB_ROOT_UV_ILDB_MBAFF_PAD_NENOP
  405.     $for(0; <AVC_ILDB_ROOT_UV_ILDB_MBAFF_PAD_NENOP; 1) {
  406.         nenop
  407.         }
  408. #endif
  409. #ifdef AVC_ILDB_ROOT_UV_ILDB_MBAFF_PAD_NOP
  410.     $for(0; <AVC_ILDB_ROOT_UV_ILDB_MBAFF_PAD_NOP; 1) {
  411.         nop
  412.         }
  413. #endif
  414.     #include "AVC_ILDB_Root_Mbaff_UV.asm"
  415.  
  416. #ifdef AVC_ILDB_CHILD_UV_ILDB_MBAFF_PAD_NENOP
  417.     $for(0; <AVC_ILDB_CHILD_UV_ILDB_MBAFF_PAD_NENOP; 1) {
  418.         nenop
  419.         }
  420. #endif
  421. #ifdef AVC_ILDB_CHILD_UV_ILDB_MBAFF_PAD_NOP
  422.     $for(0; <AVC_ILDB_CHILD_UV_ILDB_MBAFF_PAD_NOP; 1) {
  423.         nop
  424.         }
  425. #endif
  426.     #include "AVC_ILDB_Child_Mbaff_UV.asm"
  427. #undef ILDB_LABEL
  428. #undef _MBAFF
  429.  
  430. #endif          // ENABLE_ILDB
  431.  
  432. AllAVC_END:
  433. nop
  434. // End of AllAVC
  435.  
  436. .end_code
  437.  
  438. .end_kernel
  439.  
  440.