Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  1. /*
  2.  *  Copyright 2000-2011 Intel Corporation All Rights Reserved
  3.  *
  4.  *  Licensed under the Apache License, Version 2.0 (the "License");
  5.  *  you may not use this file except in compliance with the License.
  6.  *  You may obtain a copy of the License at
  7.  *
  8.  *      http://www.apache.org/licenses/LICENSE-2.0
  9.  *
  10.  *  Unless required by applicable law or agreed to in writing, software
  11.  *  distributed under the License is distributed on an "AS IS" BASIS,
  12.  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13.  *  See the License for the specific language governing permissions and
  14.  *  limitations under the License.
  15.  */
  16. /*
  17.  *  Copyright 2000-2011 Intel Corporation All Rights Reserved
  18.  *
  19.  *  Licensed under the Apache License, Version 2.0 (the "License");
  20.  *  you may not use this file except in compliance with the License.
  21.  *  You may obtain a copy of the License at
  22.  *
  23.  *      http://www.apache.org/licenses/LICENSE-2.0
  24.  *
  25.  *  Unless required by applicable law or agreed to in writing, software
  26.  *  distributed under the License is distributed on an "AS IS" BASIS,
  27.  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  28.  *  See the License for the specific language governing permissions and
  29.  *  limitations under the License.
  30.  */
  31.  
  32. //  326    // Total instruction count
  33. //    1    // Total kernel count
  34.  
  35.  
  36.  
  37. // Module name: common.inc
  38. //
  39. // Common header file for all Video-Processing kernels
  40. //
  41.  
  42. .default_execution_size (16)
  43. .default_register_type  :ub
  44.  
  45. .reg_count_total        128
  46. .reg_count_payload      7
  47.  
  48. //========== Common constants ==========
  49.  
  50.  
  51. //========== Macros ==========
  52.  
  53.  
  54. //Fast Jump, For more details see "Set_Layer_N.asm"
  55.  
  56.  
  57. //========== Defines ====================
  58.  
  59. //========== Static Parameters (Common To All) ==========
  60. //r1
  61.  
  62.  
  63. //r2
  64.  
  65.                                     //  e.g.            byte0   byte1  byte2
  66.                                     // YUYV               0       1      3
  67.                                     // YVYU               0       3      1
  68.  
  69. //Color Pipe (IECP) parameters
  70.  
  71.  
  72. //ByteCopy
  73.  
  74.  
  75. //r4
  76.  
  77.                                     //  e.g.              byte0           byte1           byte2
  78.                                     // YUYV                 0               1               3
  79.                                     // YVYU                 0               3               1
  80.  
  81.  
  82. //========== Inline parameters (Common To All) ===========
  83.  
  84.  
  85. //============== Binding Index Table===========
  86. //Common between DNDI and DNUV
  87.  
  88.  
  89. //================= Common Message Descriptor =====
  90. // Message descriptor for thread spawning
  91. // Message Descriptors
  92. //                = 000 0001 (min message len 1 ) 0,0000 (resp len 0   -add later)
  93. //                  0000,0000,0000
  94. //                  0001(Spawn a root thread),0001 (Root thread spawn thread)
  95. //                = 0x02000011
  96. // Thread Spawner Message Descriptor
  97.  
  98.  
  99. // Message descriptor for atomic operation add
  100. // Message Descriptors
  101. //                = 000 0110 (min message len 6 ) 0,0000 (resp len 0   -add later)
  102. //                  1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
  103. //                  0000,0000 (Binding table index, added later)
  104. //                = 0x02000011
  105.  
  106. // Atomic Operation Add Message Descriptor
  107.  
  108.  
  109. // Message descriptor for dataport media write
  110.         // Message Descriptors
  111.                 //                = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
  112.                 //                  1 (header present 1) 0 1010 (media block write) 000000
  113.                 //                  00000000 (binding table index - set later)
  114.                 //                = 0x020A8000
  115.  
  116.  
  117. // Message Length defines
  118.  
  119.  
  120. // Response Length defines
  121.  
  122.  
  123. // Block Width and Height Size defines
  124.  
  125.  
  126. // Extended Message Descriptors
  127.  
  128.  
  129. // Common message descriptors:
  130.  
  131.  
  132. //===================== Math Function Control ===================================
  133.  
  134.  
  135. //============ Message Registers ===============
  136.                              // buf4 starts from r28
  137.  
  138.  
  139. //#define mMSGHDR_EOT  r43    // Dummy Message Register for EOT
  140.  
  141.  
  142. .declare    mubMSGPAYLOAD  Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
  143. .declare    muwMSGPAYLOAD  Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
  144. .declare    mudMSGPAYLOAD  Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
  145. .declare    mfMSGPAYLOAD   Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
  146.  
  147. //=================== End of thread instruction ===========================
  148.  
  149.  
  150. //=====================Pointers Used=====================================
  151.  
  152.  
  153. //=======================================================================
  154.  
  155.  
  156. //r9-r17
  157. // Define temp space for any usages
  158.  
  159.  
  160. // Common Buffers
  161.  
  162.  
  163. // temp space for rotation
  164.  
  165. .declare fROBUF           Base=r9.0             ElementSize=4           SrcRegion=<8;8,1>                 DstRegion=<1>         Type=f
  166.  
  167. .declare udROBUF                Base=r9.0               ElementSize=4           SrcRegion=<8;8,1>                 DstRegion=<1>         Type=ud
  168.  
  169. .declare uwROBUF                Base=r9.0               ElementSize=2           SrcRegion=<16;16,1>             DstRegion=<1>           Type=uw
  170.  
  171. .declare ubROBUF                Base=r9.0               ElementSize=1           SrcRegion=<16;16,1>             DstRegion=<1>           Type=ub
  172.  
  173. .declare ub4ROBUF       Base=r9.0               ElementSize=1           SrcRegion=<32;8,4>              DstRegion=<4>           Type=ub
  174.  
  175.  
  176. // End of common.inc
  177.  
  178.  
  179. // FileName:            VP_Setup.asm
  180. // Author:                      Vivek Kumar
  181. // Description:         Sets up all parameters for the Video Processing Kernel
  182.  
  183.  
  184.  
  185.  
  186. // Description: Includes all definitions explicit to Fast Composite.
  187.  
  188.  
  189.  
  190.  
  191. // End of common.inc
  192.  
  193.  
  194. //========== GRF partition ==========
  195.      // r0 header            :   r0          (1 GRF)
  196.      // Static parameters    :   r1 - r6     (6 GRFS)
  197.      // Inline parameters    :   r7 - r8     (2 GRFs)
  198.      // MSGSRC               :   r27         (1 GRF)
  199. //===================================
  200.  
  201. //Interface:
  202. //========== Static Parameters (Explicit To Fast Composite) ==========
  203. //r1
  204. //CSC Set 0
  205.  
  206.  
  207. .declare udCSC_CURBE    Base=r1.0      ElementSize=4       Type=ud
  208.  
  209. //Constant alpha
  210.  
  211.  
  212. //r2
  213.  
  214.  
  215. // Gen7 AVS WA
  216.  
  217.  
  218. // WiDi Definitions
  219.  
  220.  
  221. //Colorfill
  222.  
  223.  
  224.                                       // 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.     
  225.  
  226. .declare ubCOLOR_PIXEL_VAL      Base=r2.20      ElementSize=1       SrcRegion=<0;1,0>       DstRegion=<1>       Type=ub
  227.  
  228. //r3
  229. //Normalised Ratio of Horizontal step size with main video for all layers
  230.  
  231.  
  232.     //Normalised Ratio of Horizontal step size with main video for all layers becomes
  233.     //Normalised Horizontal step size for all layers in VP_Setup.asm
  234.  
  235.  
  236. //r4
  237. //Normalised Vertical step size for all layers
  238.  
  239.  
  240. //r5
  241. //Normalised Vertical Frame Origin for all layers
  242.  
  243.  
  244. //r6
  245. //Normalised Horizontal Frame Origin for all layers
  246.  
  247.  
  248. //========== Inline Parameters (Explicit To Fast Composite) ==========
  249.  
  250.  
  251. //Main video Step X
  252.  
  253.  
  254. //====================== Binding table (Explicit To Fast Composite)=========================================
  255.  
  256.  
  257. //Used by Interlaced Scaling Kernels
  258.  
  259.  
  260. //========== Sampler State Table Index (Explicit To Fast Composite)==========
  261. //Sampler Index for AVS/IEF messages
  262.  
  263.  
  264. //Sampler Index for SIMD16 sampler messages
  265.  
  266.  
  267. //=============================================================================
  268.  
  269. .declare fBUFFER_0      Base=r64.0       ElementSize=4       SrcRegion=<8;8,1>       DstRegion=<1>       Type=f
  270. .declare fBUFFER_1      Base=r80.0       ElementSize=4       SrcRegion=<8;8,1>       DstRegion=<1>       Type=f
  271. .declare fBUFFER_2      Base=r96.0       ElementSize=4       SrcRegion=<8;8,1>       DstRegion=<1>       Type=f
  272. .declare fBUFFER_3      Base=r112.0       ElementSize=4       SrcRegion=<8;8,1>       DstRegion=<1>       Type=f
  273. .declare fBUFFER_4      Base=r28.0       ElementSize=4       SrcRegion=<8;8,1>       DstRegion=<1>       Type=f
  274. .declare fBUFFER_5      Base=r46.0       ElementSize=4       SrcRegion=<8;8,1>       DstRegion=<1>       Type=f
  275.  
  276. .declare udBUFFER_0     Base=r64.0       ElementSize=4       SrcRegion=<8;8,1>       DstRegion=<1>       Type=ud
  277. .declare udBUFFER_1     Base=r80.0       ElementSize=4       SrcRegion=<8;8,1>       DstRegion=<1>       Type=ud
  278. .declare udBUFFER_2     Base=r96.0       ElementSize=4       SrcRegion=<8;8,1>       DstRegion=<1>       Type=ud
  279. .declare udBUFFER_3     Base=r112.0       ElementSize=4       SrcRegion=<8;8,1>       DstRegion=<1>       Type=ud
  280. .declare udBUFFER_4     Base=r28.0       ElementSize=4       SrcRegion=<8;8,1>       DstRegion=<1>       Type=ud
  281. .declare udBUFFER_5     Base=r46.0       ElementSize=4       SrcRegion=<8;8,1>       DstRegion=<1>       Type=ud
  282.  
  283. .declare uwBUFFER_0     Base=r64.0       ElementSize=2       SrcRegion=<16;16,1>     DstRegion=<1>       Type=uw
  284. .declare uwBUFFER_1     Base=r80.0       ElementSize=2       SrcRegion=<16;16,1>     DstRegion=<1>       Type=uw
  285. .declare uwBUFFER_2     Base=r96.0       ElementSize=2       SrcRegion=<16;16,1>     DstRegion=<1>       Type=uw
  286. .declare uwBUFFER_3     Base=r112.0       ElementSize=2       SrcRegion=<16;16,1>     DstRegion=<1>       Type=uw
  287. .declare uwBUFFER_4     Base=r28.0       ElementSize=2       SrcRegion=<16;16,1>     DstRegion=<1>       Type=uw
  288. .declare uwBUFFER_5     Base=r46.0       ElementSize=2       SrcRegion=<16;16,1>     DstRegion=<1>       Type=uw
  289.  
  290. .declare ubBUFFER_0     Base=r64.0       ElementSize=1       SrcRegion=<16;16,1>     DstRegion=<1>       Type=ub
  291. .declare ubBUFFER_1     Base=r80.0       ElementSize=1       SrcRegion=<16;16,1>     DstRegion=<1>       Type=ub
  292. .declare ubBUFFER_2     Base=r96.0       ElementSize=1       SrcRegion=<16;16,1>     DstRegion=<1>       Type=ub
  293. .declare ubBUFFER_3     Base=r112.0       ElementSize=1       SrcRegion=<16;16,1>     DstRegion=<1>       Type=ub
  294. .declare ubBUFFER_4     Base=r28.0       ElementSize=1       SrcRegion=<16;16,1>     DstRegion=<1>       Type=ub
  295. .declare ubBUFFER_5     Base=r46.0       ElementSize=1       SrcRegion=<16;16,1>     DstRegion=<1>       Type=ub
  296.  
  297. .declare ub4BUFFER_0    Base=r64.0       ElementSize=1       SrcRegion=<32;8,4>      DstRegion=<4>       Type=ub
  298. .declare ub4BUFFER_1    Base=r80.0       ElementSize=1       SrcRegion=<32;8,4>      DstRegion=<4>       Type=ub
  299. .declare ub4BUFFER_2    Base=r96.0       ElementSize=1       SrcRegion=<32;8,4>      DstRegion=<4>       Type=ub
  300. .declare ub4BUFFER_3    Base=r112.0       ElementSize=1       SrcRegion=<32;8,4>      DstRegion=<4>       Type=ub
  301. .declare ub4BUFFER_4    Base=r28.0       ElementSize=1       SrcRegion=<32;8,4>      DstRegion=<4>       Type=ub
  302. .declare ub4BUFFER_5    Base=r46.0       ElementSize=1       SrcRegion=<32;8,4>      DstRegion=<4>       Type=ub
  303.  
  304. //Pointer to mask reg
  305.  
  306.  
  307. //r18
  308.  
  309.  
  310. //Always keep Cannel Pointers and Offsets in same GRF, so that we can use
  311. // NODDCLR, NODDCHK flags. -rT
  312.  
  313.  
  314. .declare udCSC_COEFF_0  Base=r18.0    ElementSize=4 Type=ud       // 1 GRF
  315.  
  316. //r19
  317.  
  318.  
  319. .declare udCSC_COEFF_1  Base=r19.0    ElementSize=4 Type=ud       // 1 GRF
  320.  
  321.  
  322. //r20
  323.  
  324. .declare uwALPHA_MASK_REG_TEMP  Base=r20.0    ElementSize=2 SrcRegion=<16;16,1> Type=uw        // 1 GRF
  325.  
  326. //r21
  327.  
  328. .declare uwALPHA_MASK_REG       Base=r21.0         ElementSize=2 SrcRegion=<16;16,1> Type=uw        // 1 GRF
  329.  
  330. //r22
  331.  
  332.  
  333. //Always keep Cannel Pointers and Offsets in same GRF, so that we can use
  334. // NODDCLR, NODDCHK flags. -rT
  335.  
  336.  
  337. //Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
  338. //sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
  339.  
  340. //r23
  341.  
  342.  
  343. //Lumakey
  344.  
  345.  
  346. //r24
  347.  
  348.  
  349. //r25
  350.  
  351.  
  352. //r26
  353.  
  354.  
  355. //defines to generate LABELS during compile time.
  356.  
  357.  
  358. //Setup pointer to the inline parameter
  359.  
  360. // Copy MSG HDR
  361.         mov (8)         r27.0<1>:ud     r0.0<8;8,1>:ud  // Initialize message payload header with R0
  362.  
  363.  
  364. //temp; remove it once unread msg warnings are resolved -vK
  365. mov (8) r25:ud  r0.0<8;8,1>:ud
  366. mov (8) r26:ud  r0.0<8;8,1>:ud
  367.  
  368. // Calculate StepX for all layers and overwrite it on the ratio
  369.         mul     (8)             r3.0<1>:f   r3.0<8;8,1>:f       r7.4<0;1,0>:f                           //StepX_ratio = StepX / VideoStepX
  370.  
  371.         //Normalised Ratio of Horizontal step size with main video for all layers now becomes
  372.         //Normalised Horizontal step size for all layers
  373.  
  374. // Calculate block origin for all layers and overwrite it on the frame origin
  375.         mov (2) r8.5<1>:f                                               r7.0<2;2,1>:w           //Convert origin from word to float
  376.  
  377.         cmp.e.f0.0      (8)     null<1>:d                               r2.26:ub                1:uw
  378.  
  379.  
  380.     shr (1) r17.0<1>:uw    r2.2<0;1,0>:uw    0:uw
  381.     and (1) r17.0<1>:uw    r17.0<0;1,0>:uw           3:uw
  382.     cmp.e.f0.1 (1) null<1>:w    r17.0<0;1,0>:uw    1:uw
  383.     (f0.1) jmpi (1) ROTATE_90_L0
  384.     cmp.e.f0.1 (1) null<1>:w    r17.0<0;1,0>:uw    2:uw
  385.     (f0.1) jmpi (1) ROTATE_180_L0
  386.     cmp.e.f0.1 (1) null<1>:w    r17.0<0;1,0>:uw    3:uw
  387.     (f0.1) jmpi (1) ROTATE_270_L0
  388.  
  389.   // rotate 0 degree
  390. ROTATE_0_L0:  
  391.     (-f0.0)mov  (1)     acc0.0:f                                           r6.0<0;1,0>:f
  392.     (-f0.0)mac  (1)     r6.0<1>:f    r3.0<0;1,0>:f              r8.5<0;1,0>:f
  393.  
  394.     mov (1)     acc0.0:f            r5.0<0;1,0>:f
  395.     mac (1)     r5.0<1>:f    r4.0<0;1,0>:f                  r8.6<0;1,0>:f
  396.     jmpi (1) END_SRC_BLOCK_ORIG_COMP_L0
  397.  
  398.   // rotate 90 degree
  399. ROTATE_90_L0:  
  400.     (-f0.0)mov  (1)     acc0.0:f            r6.0<0;1,0>:f
  401.     (-f0.0)mac  (1)     r6.0<1>:f    r3.0<0;1,0>:f              r8.6<0;1,0>:f
  402.  
  403.     mov (1) r16.0<1>:f    r2.0<0;1,0>:uw
  404.     add (1) r17.0<1>:f    -r8.5<0;1,0>:f               r16.0<0;1,0>:f
  405.     add (1) r17.0<1>:f    r17.0<0;1,0>:f        -16.0:f        
  406.  
  407.     mov (1)     acc0.0:f                                                        r5.0<0;1,0>:f
  408.     mac (1)     r5.0<1>:f     r4.0<0;1,0>:f             r17.0<0;1,0>:f
  409.     jmpi (1) END_SRC_BLOCK_ORIG_COMP_L0
  410.  
  411.   // rotate 180 degree
  412. ROTATE_180_L0:  
  413.     (-f0.0)mov (1) r16.0<1>:f    r2.0<0;1,0>:uw
  414.     (-f0.0)add (1) r17.0<1>:f    -r8.5<0;1,0>:f              r16.0<0;1,0>:f
  415.     (-f0.0)add (1) r17.0<1>:f    r17.0<0;1,0>:f       -16.0:f  
  416.     (-f0.0)mov (1) acc0.0:f             r6.0<0;1,0>:f
  417.     (-f0.0)mac (1) r6.0<1>:f     r3.0<0;1,0>:f          r17.0<0;1,0>:f
  418.  
  419.     mov (1) r16.0<1>:f    r2.1<0;1,0>:uw       
  420.     add (1) r17.0<1>:f    -r8.6<0;1,0>:f                     r16.0<0;1,0>:f
  421.     add (1) r17.0<1>:f    r17.0<0;1,0>:f              -16.0:f  
  422.     mov (1)     acc0.0:f             r5.0<0;1,0>:f
  423.     mac (1)     r5.0<1>:f     r4.0<0;1,0>:f                 r17.0<0;1,0>:f
  424.     jmpi (1) END_SRC_BLOCK_ORIG_COMP_L0  
  425.  
  426.   // rotate 270 degree
  427. ROTATE_270_L0:    
  428.     (-f0.0)mov (1) r16.0<1>:f    r2.1<0;1,0>:uw
  429.     (-f0.0)add (1) r17.0<1>:f    -r8.6<0;1,0>:f              r16.0<0;1,0>:f
  430.     (-f0.0)add (1) r17.0<1>:f    r17.0<0;1,0>:f       -16.0:f  
  431.     (-f0.0)mov (1) acc0.0:f             r6.0<0;1,0>:f
  432.     (-f0.0)mac (1) r6.0<1>:f     r3.0<0;1,0>:f          r17.0<0;1,0>:f
  433.  
  434.     mov (1)     acc0.0:f                    r5.0<0;1,0>:f
  435.     mac (1)     r5.0<1>:f            r4.0<0;1,0>:f          r8.5<0;1,0>:f
  436.  
  437. END_SRC_BLOCK_ORIG_COMP_L0:            
  438.     nop
  439.     shr (1) r17.0<1>:uw    r2.2<0;1,0>:uw    2:uw
  440.     and (1) r17.0<1>:uw    r17.0<0;1,0>:uw           3:uw
  441.     cmp.e.f0.1 (1) null<1>:w    r17.0<0;1,0>:uw    1:uw
  442.     (f0.1) jmpi (1) ROTATE_90_L1
  443.     cmp.e.f0.1 (1) null<1>:w    r17.0<0;1,0>:uw    2:uw
  444.     (f0.1) jmpi (1) ROTATE_180_L1
  445.     cmp.e.f0.1 (1) null<1>:w    r17.0<0;1,0>:uw    3:uw
  446.     (f0.1) jmpi (1) ROTATE_270_L1
  447.  
  448.   // rotate 0 degree
  449. ROTATE_0_L1:  
  450.     (-f0.0)mov  (1)     acc0.1:f                                           r6.1<0;1,0>:f
  451.     (-f0.0)mac  (1)     r6.1<1>:f    r3.1<0;1,0>:f              r8.5<0;1,0>:f
  452.  
  453.     mov (1)     acc0.1:f            r5.1<0;1,0>:f
  454.     mac (1)     r5.1<1>:f    r4.1<0;1,0>:f                  r8.6<0;1,0>:f
  455.     jmpi (1) END_SRC_BLOCK_ORIG_COMP_L1
  456.  
  457.   // rotate 90 degree
  458. ROTATE_90_L1:  
  459.     (-f0.0)mov  (1)     acc0.1:f            r6.1<0;1,0>:f
  460.     (-f0.0)mac  (1)     r6.1<1>:f    r3.1<0;1,0>:f              r8.6<0;1,0>:f
  461.  
  462.     mov (1) r16.0<1>:f    r2.0<0;1,0>:uw
  463.     add (1) r17.0<1>:f    -r8.5<0;1,0>:f               r16.0<0;1,0>:f
  464.     add (1) r17.0<1>:f    r17.0<0;1,0>:f        -16.0:f        
  465.  
  466.     mov (1)     acc0.1:f                                                        r5.1<0;1,0>:f
  467.     mac (1)     r5.1<1>:f     r4.1<0;1,0>:f             r17.0<0;1,0>:f
  468.     jmpi (1) END_SRC_BLOCK_ORIG_COMP_L1
  469.  
  470.   // rotate 180 degree
  471. ROTATE_180_L1:  
  472.     (-f0.0)mov (1) r16.0<1>:f    r2.0<0;1,0>:uw
  473.     (-f0.0)add (1) r17.0<1>:f    -r8.5<0;1,0>:f              r16.0<0;1,0>:f
  474.     (-f0.0)add (1) r17.0<1>:f    r17.0<0;1,0>:f       -16.0:f  
  475.     (-f0.0)mov (1) acc0.1:f             r6.1<0;1,0>:f
  476.     (-f0.0)mac (1) r6.1<1>:f     r3.1<0;1,0>:f          r17.0<0;1,0>:f
  477.  
  478.     mov (1) r16.0<1>:f    r2.1<0;1,0>:uw       
  479.     add (1) r17.0<1>:f    -r8.6<0;1,0>:f                     r16.0<0;1,0>:f
  480.     add (1) r17.0<1>:f    r17.0<0;1,0>:f              -16.0:f  
  481.     mov (1)     acc0.1:f             r5.1<0;1,0>:f
  482.     mac (1)     r5.1<1>:f     r4.1<0;1,0>:f                 r17.0<0;1,0>:f
  483.     jmpi (1) END_SRC_BLOCK_ORIG_COMP_L1  
  484.  
  485.   // rotate 270 degree
  486. ROTATE_270_L1:    
  487.     (-f0.0)mov (1) r16.0<1>:f    r2.1<0;1,0>:uw
  488.     (-f0.0)add (1) r17.0<1>:f    -r8.6<0;1,0>:f              r16.0<0;1,0>:f
  489.     (-f0.0)add (1) r17.0<1>:f    r17.0<0;1,0>:f       -16.0:f  
  490.     (-f0.0)mov (1) acc0.1:f             r6.1<0;1,0>:f
  491.     (-f0.0)mac (1) r6.1<1>:f     r3.1<0;1,0>:f          r17.0<0;1,0>:f
  492.  
  493.     mov (1)     acc0.1:f                    r5.1<0;1,0>:f
  494.     mac (1)     r5.1<1>:f            r4.1<0;1,0>:f          r8.5<0;1,0>:f
  495.  
  496. END_SRC_BLOCK_ORIG_COMP_L1:            
  497.     nop
  498.     shr (1) r17.0<1>:uw    r2.2<0;1,0>:uw    4:uw
  499.     and (1) r17.0<1>:uw    r17.0<0;1,0>:uw           3:uw
  500.     cmp.e.f0.1 (1) null<1>:w    r17.0<0;1,0>:uw    1:uw
  501.     (f0.1) jmpi (1) ROTATE_90_L2
  502.     cmp.e.f0.1 (1) null<1>:w    r17.0<0;1,0>:uw    2:uw
  503.     (f0.1) jmpi (1) ROTATE_180_L2
  504.     cmp.e.f0.1 (1) null<1>:w    r17.0<0;1,0>:uw    3:uw
  505.     (f0.1) jmpi (1) ROTATE_270_L2
  506.  
  507.   // rotate 0 degree
  508. ROTATE_0_L2:  
  509.     (-f0.0)mov  (1)     acc0.2:f                                           r6.2<0;1,0>:f
  510.     (-f0.0)mac  (1)     r6.2<1>:f    r3.2<0;1,0>:f              r8.5<0;1,0>:f
  511.  
  512.     mov (1)     acc0.2:f            r5.2<0;1,0>:f
  513.     mac (1)     r5.2<1>:f    r4.2<0;1,0>:f                  r8.6<0;1,0>:f
  514.     jmpi (1) END_SRC_BLOCK_ORIG_COMP_L2
  515.  
  516.   // rotate 90 degree
  517. ROTATE_90_L2:  
  518.     (-f0.0)mov  (1)     acc0.2:f            r6.2<0;1,0>:f
  519.     (-f0.0)mac  (1)     r6.2<1>:f    r3.2<0;1,0>:f              r8.6<0;1,0>:f
  520.  
  521.     mov (1) r16.0<1>:f    r2.0<0;1,0>:uw
  522.     add (1) r17.0<1>:f    -r8.5<0;1,0>:f               r16.0<0;1,0>:f
  523.     add (1) r17.0<1>:f    r17.0<0;1,0>:f        -16.0:f        
  524.  
  525.     mov (1)     acc0.2:f                                                        r5.2<0;1,0>:f
  526.     mac (1)     r5.2<1>:f     r4.2<0;1,0>:f             r17.0<0;1,0>:f
  527.     jmpi (1) END_SRC_BLOCK_ORIG_COMP_L2
  528.  
  529.   // rotate 180 degree
  530. ROTATE_180_L2:  
  531.     (-f0.0)mov (1) r16.0<1>:f    r2.0<0;1,0>:uw
  532.     (-f0.0)add (1) r17.0<1>:f    -r8.5<0;1,0>:f              r16.0<0;1,0>:f
  533.     (-f0.0)add (1) r17.0<1>:f    r17.0<0;1,0>:f       -16.0:f  
  534.     (-f0.0)mov (1) acc0.2:f             r6.2<0;1,0>:f
  535.     (-f0.0)mac (1) r6.2<1>:f     r3.2<0;1,0>:f          r17.0<0;1,0>:f
  536.  
  537.     mov (1) r16.0<1>:f    r2.1<0;1,0>:uw       
  538.     add (1) r17.0<1>:f    -r8.6<0;1,0>:f                     r16.0<0;1,0>:f
  539.     add (1) r17.0<1>:f    r17.0<0;1,0>:f              -16.0:f  
  540.     mov (1)     acc0.2:f             r5.2<0;1,0>:f
  541.     mac (1)     r5.2<1>:f     r4.2<0;1,0>:f                 r17.0<0;1,0>:f
  542.     jmpi (1) END_SRC_BLOCK_ORIG_COMP_L2  
  543.  
  544.   // rotate 270 degree
  545. ROTATE_270_L2:    
  546.     (-f0.0)mov (1) r16.0<1>:f    r2.1<0;1,0>:uw
  547.     (-f0.0)add (1) r17.0<1>:f    -r8.6<0;1,0>:f              r16.0<0;1,0>:f
  548.     (-f0.0)add (1) r17.0<1>:f    r17.0<0;1,0>:f       -16.0:f  
  549.     (-f0.0)mov (1) acc0.2:f             r6.2<0;1,0>:f
  550.     (-f0.0)mac (1) r6.2<1>:f     r3.2<0;1,0>:f          r17.0<0;1,0>:f
  551.  
  552.     mov (1)     acc0.2:f                    r5.2<0;1,0>:f
  553.     mac (1)     r5.2<1>:f            r4.2<0;1,0>:f          r8.5<0;1,0>:f
  554.  
  555. END_SRC_BLOCK_ORIG_COMP_L2:            
  556.     nop
  557.     shr (1) r17.0<1>:uw    r2.2<0;1,0>:uw    6:uw
  558.     and (1) r17.0<1>:uw    r17.0<0;1,0>:uw           3:uw
  559.     cmp.e.f0.1 (1) null<1>:w    r17.0<0;1,0>:uw    1:uw
  560.     (f0.1) jmpi (1) ROTATE_90_L3
  561.     cmp.e.f0.1 (1) null<1>:w    r17.0<0;1,0>:uw    2:uw
  562.     (f0.1) jmpi (1) ROTATE_180_L3
  563.     cmp.e.f0.1 (1) null<1>:w    r17.0<0;1,0>:uw    3:uw
  564.     (f0.1) jmpi (1) ROTATE_270_L3
  565.  
  566.   // rotate 0 degree
  567. ROTATE_0_L3:  
  568.     (-f0.0)mov  (1)     acc0.3:f                                           r6.3<0;1,0>:f
  569.     (-f0.0)mac  (1)     r6.3<1>:f    r3.3<0;1,0>:f              r8.5<0;1,0>:f
  570.  
  571.     mov (1)     acc0.3:f            r5.3<0;1,0>:f
  572.     mac (1)     r5.3<1>:f    r4.3<0;1,0>:f                  r8.6<0;1,0>:f
  573.     jmpi (1) END_SRC_BLOCK_ORIG_COMP_L3
  574.  
  575.   // rotate 90 degree
  576. ROTATE_90_L3:  
  577.     (-f0.0)mov  (1)     acc0.3:f            r6.3<0;1,0>:f
  578.     (-f0.0)mac  (1)     r6.3<1>:f    r3.3<0;1,0>:f              r8.6<0;1,0>:f
  579.  
  580.     mov (1) r16.0<1>:f    r2.0<0;1,0>:uw
  581.     add (1) r17.0<1>:f    -r8.5<0;1,0>:f               r16.0<0;1,0>:f
  582.     add (1) r17.0<1>:f    r17.0<0;1,0>:f        -16.0:f        
  583.  
  584.     mov (1)     acc0.3:f                                                        r5.3<0;1,0>:f
  585.     mac (1)     r5.3<1>:f     r4.3<0;1,0>:f             r17.0<0;1,0>:f
  586.     jmpi (1) END_SRC_BLOCK_ORIG_COMP_L3
  587.  
  588.   // rotate 180 degree
  589. ROTATE_180_L3:  
  590.     (-f0.0)mov (1) r16.0<1>:f    r2.0<0;1,0>:uw
  591.     (-f0.0)add (1) r17.0<1>:f    -r8.5<0;1,0>:f              r16.0<0;1,0>:f
  592.     (-f0.0)add (1) r17.0<1>:f    r17.0<0;1,0>:f       -16.0:f  
  593.     (-f0.0)mov (1) acc0.3:f             r6.3<0;1,0>:f
  594.     (-f0.0)mac (1) r6.3<1>:f     r3.3<0;1,0>:f          r17.0<0;1,0>:f
  595.  
  596.     mov (1) r16.0<1>:f    r2.1<0;1,0>:uw       
  597.     add (1) r17.0<1>:f    -r8.6<0;1,0>:f                     r16.0<0;1,0>:f
  598.     add (1) r17.0<1>:f    r17.0<0;1,0>:f              -16.0:f  
  599.     mov (1)     acc0.3:f             r5.3<0;1,0>:f
  600.     mac (1)     r5.3<1>:f     r4.3<0;1,0>:f                 r17.0<0;1,0>:f
  601.     jmpi (1) END_SRC_BLOCK_ORIG_COMP_L3  
  602.  
  603.   // rotate 270 degree
  604. ROTATE_270_L3:    
  605.     (-f0.0)mov (1) r16.0<1>:f    r2.1<0;1,0>:uw
  606.     (-f0.0)add (1) r17.0<1>:f    -r8.6<0;1,0>:f              r16.0<0;1,0>:f
  607.     (-f0.0)add (1) r17.0<1>:f    r17.0<0;1,0>:f       -16.0:f  
  608.     (-f0.0)mov (1) acc0.3:f             r6.3<0;1,0>:f
  609.     (-f0.0)mac (1) r6.3<1>:f     r3.3<0;1,0>:f          r17.0<0;1,0>:f
  610.  
  611.     mov (1)     acc0.3:f                    r5.3<0;1,0>:f
  612.     mac (1)     r5.3<1>:f            r4.3<0;1,0>:f          r8.5<0;1,0>:f
  613.  
  614. END_SRC_BLOCK_ORIG_COMP_L3:            
  615.     nop
  616.     shr (1) r17.0<1>:uw    r2.2<0;1,0>:uw    8:uw
  617.     and (1) r17.0<1>:uw    r17.0<0;1,0>:uw           3:uw
  618.     cmp.e.f0.1 (1) null<1>:w    r17.0<0;1,0>:uw    1:uw
  619.     (f0.1) jmpi (1) ROTATE_90_L4
  620.     cmp.e.f0.1 (1) null<1>:w    r17.0<0;1,0>:uw    2:uw
  621.     (f0.1) jmpi (1) ROTATE_180_L4
  622.     cmp.e.f0.1 (1) null<1>:w    r17.0<0;1,0>:uw    3:uw
  623.     (f0.1) jmpi (1) ROTATE_270_L4
  624.  
  625.   // rotate 0 degree
  626. ROTATE_0_L4:  
  627.     (-f0.0)mov  (1)     acc0.4:f                                           r6.4<0;1,0>:f
  628.     (-f0.0)mac  (1)     r6.4<1>:f    r3.4<0;1,0>:f              r8.5<0;1,0>:f
  629.  
  630.     mov (1)     acc0.4:f            r5.4<0;1,0>:f
  631.     mac (1)     r5.4<1>:f    r4.4<0;1,0>:f                  r8.6<0;1,0>:f
  632.     jmpi (1) END_SRC_BLOCK_ORIG_COMP_L4
  633.  
  634.   // rotate 90 degree
  635. ROTATE_90_L4:  
  636.     (-f0.0)mov  (1)     acc0.4:f            r6.4<0;1,0>:f
  637.     (-f0.0)mac  (1)     r6.4<1>:f    r3.4<0;1,0>:f              r8.6<0;1,0>:f
  638.  
  639.     mov (1) r16.0<1>:f    r2.0<0;1,0>:uw
  640.     add (1) r17.0<1>:f    -r8.5<0;1,0>:f               r16.0<0;1,0>:f
  641.     add (1) r17.0<1>:f    r17.0<0;1,0>:f        -16.0:f        
  642.  
  643.     mov (1)     acc0.4:f                                                        r5.4<0;1,0>:f
  644.     mac (1)     r5.4<1>:f     r4.4<0;1,0>:f             r17.0<0;1,0>:f
  645.     jmpi (1) END_SRC_BLOCK_ORIG_COMP_L4
  646.  
  647.   // rotate 180 degree
  648. ROTATE_180_L4:  
  649.     (-f0.0)mov (1) r16.0<1>:f    r2.0<0;1,0>:uw
  650.     (-f0.0)add (1) r17.0<1>:f    -r8.5<0;1,0>:f              r16.0<0;1,0>:f
  651.     (-f0.0)add (1) r17.0<1>:f    r17.0<0;1,0>:f       -16.0:f  
  652.     (-f0.0)mov (1) acc0.4:f             r6.4<0;1,0>:f
  653.     (-f0.0)mac (1) r6.4<1>:f     r3.4<0;1,0>:f          r17.0<0;1,0>:f
  654.  
  655.     mov (1) r16.0<1>:f    r2.1<0;1,0>:uw       
  656.     add (1) r17.0<1>:f    -r8.6<0;1,0>:f                     r16.0<0;1,0>:f
  657.     add (1) r17.0<1>:f    r17.0<0;1,0>:f              -16.0:f  
  658.     mov (1)     acc0.4:f             r5.4<0;1,0>:f
  659.     mac (1)     r5.4<1>:f     r4.4<0;1,0>:f                 r17.0<0;1,0>:f
  660.     jmpi (1) END_SRC_BLOCK_ORIG_COMP_L4  
  661.  
  662.   // rotate 270 degree
  663. ROTATE_270_L4:    
  664.     (-f0.0)mov (1) r16.0<1>:f    r2.1<0;1,0>:uw
  665.     (-f0.0)add (1) r17.0<1>:f    -r8.6<0;1,0>:f              r16.0<0;1,0>:f
  666.     (-f0.0)add (1) r17.0<1>:f    r17.0<0;1,0>:f       -16.0:f  
  667.     (-f0.0)mov (1) acc0.4:f             r6.4<0;1,0>:f
  668.     (-f0.0)mac (1) r6.4<1>:f     r3.4<0;1,0>:f          r17.0<0;1,0>:f
  669.  
  670.     mov (1)     acc0.4:f                    r5.4<0;1,0>:f
  671.     mac (1)     r5.4<1>:f            r4.4<0;1,0>:f          r8.5<0;1,0>:f
  672.  
  673. END_SRC_BLOCK_ORIG_COMP_L4:            
  674.     nop
  675.     shr (1) r17.0<1>:uw    r2.2<0;1,0>:uw    10:uw
  676.     and (1) r17.0<1>:uw    r17.0<0;1,0>:uw           3:uw
  677.     cmp.e.f0.1 (1) null<1>:w    r17.0<0;1,0>:uw    1:uw
  678.     (f0.1) jmpi (1) ROTATE_90_L5
  679.     cmp.e.f0.1 (1) null<1>:w    r17.0<0;1,0>:uw    2:uw
  680.     (f0.1) jmpi (1) ROTATE_180_L5
  681.     cmp.e.f0.1 (1) null<1>:w    r17.0<0;1,0>:uw    3:uw
  682.     (f0.1) jmpi (1) ROTATE_270_L5
  683.  
  684.   // rotate 0 degree
  685. ROTATE_0_L5:  
  686.     (-f0.0)mov  (1)     acc0.5:f                                           r6.5<0;1,0>:f
  687.     (-f0.0)mac  (1)     r6.5<1>:f    r3.5<0;1,0>:f              r8.5<0;1,0>:f
  688.  
  689.     mov (1)     acc0.5:f            r5.5<0;1,0>:f
  690.     mac (1)     r5.5<1>:f    r4.5<0;1,0>:f                  r8.6<0;1,0>:f
  691.     jmpi (1) END_SRC_BLOCK_ORIG_COMP_L5
  692.  
  693.   // rotate 90 degree
  694. ROTATE_90_L5:  
  695.     (-f0.0)mov  (1)     acc0.5:f            r6.5<0;1,0>:f
  696.     (-f0.0)mac  (1)     r6.5<1>:f    r3.5<0;1,0>:f              r8.6<0;1,0>:f
  697.  
  698.     mov (1) r16.0<1>:f    r2.0<0;1,0>:uw
  699.     add (1) r17.0<1>:f    -r8.5<0;1,0>:f               r16.0<0;1,0>:f
  700.     add (1) r17.0<1>:f    r17.0<0;1,0>:f        -16.0:f        
  701.  
  702.     mov (1)     acc0.5:f                                                        r5.5<0;1,0>:f
  703.     mac (1)     r5.5<1>:f     r4.5<0;1,0>:f             r17.0<0;1,0>:f
  704.     jmpi (1) END_SRC_BLOCK_ORIG_COMP_L5
  705.  
  706.   // rotate 180 degree
  707. ROTATE_180_L5:  
  708.     (-f0.0)mov (1) r16.0<1>:f    r2.0<0;1,0>:uw
  709.     (-f0.0)add (1) r17.0<1>:f    -r8.5<0;1,0>:f              r16.0<0;1,0>:f
  710.     (-f0.0)add (1) r17.0<1>:f    r17.0<0;1,0>:f       -16.0:f  
  711.     (-f0.0)mov (1) acc0.5:f             r6.5<0;1,0>:f
  712.     (-f0.0)mac (1) r6.5<1>:f     r3.5<0;1,0>:f          r17.0<0;1,0>:f
  713.  
  714.     mov (1) r16.0<1>:f    r2.1<0;1,0>:uw       
  715.     add (1) r17.0<1>:f    -r8.6<0;1,0>:f                     r16.0<0;1,0>:f
  716.     add (1) r17.0<1>:f    r17.0<0;1,0>:f              -16.0:f  
  717.     mov (1)     acc0.5:f             r5.5<0;1,0>:f
  718.     mac (1)     r5.5<1>:f     r4.5<0;1,0>:f                 r17.0<0;1,0>:f
  719.     jmpi (1) END_SRC_BLOCK_ORIG_COMP_L5  
  720.  
  721.   // rotate 270 degree
  722. ROTATE_270_L5:    
  723.     (-f0.0)mov (1) r16.0<1>:f    r2.1<0;1,0>:uw
  724.     (-f0.0)add (1) r17.0<1>:f    -r8.6<0;1,0>:f              r16.0<0;1,0>:f
  725.     (-f0.0)add (1) r17.0<1>:f    r17.0<0;1,0>:f       -16.0:f  
  726.     (-f0.0)mov (1) acc0.5:f             r6.5<0;1,0>:f
  727.     (-f0.0)mac (1) r6.5<1>:f     r3.5<0;1,0>:f          r17.0<0;1,0>:f
  728.  
  729.     mov (1)     acc0.5:f                    r5.5<0;1,0>:f
  730.     mac (1)     r5.5<1>:f            r4.5<0;1,0>:f          r8.5<0;1,0>:f
  731.  
  732. END_SRC_BLOCK_ORIG_COMP_L5:            
  733.     nop
  734.     shr (1) r17.0<1>:uw    r2.2<0;1,0>:uw    12:uw
  735.     and (1) r17.0<1>:uw    r17.0<0;1,0>:uw           3:uw
  736.     cmp.e.f0.1 (1) null<1>:w    r17.0<0;1,0>:uw    1:uw
  737.     (f0.1) jmpi (1) ROTATE_90_L6
  738.     cmp.e.f0.1 (1) null<1>:w    r17.0<0;1,0>:uw    2:uw
  739.     (f0.1) jmpi (1) ROTATE_180_L6
  740.     cmp.e.f0.1 (1) null<1>:w    r17.0<0;1,0>:uw    3:uw
  741.     (f0.1) jmpi (1) ROTATE_270_L6
  742.  
  743.   // rotate 0 degree
  744. ROTATE_0_L6:  
  745.     (-f0.0)mov  (1)     acc0.6:f                                           r6.6<0;1,0>:f
  746.     (-f0.0)mac  (1)     r6.6<1>:f    r3.6<0;1,0>:f              r8.5<0;1,0>:f
  747.  
  748.     mov (1)     acc0.6:f            r5.6<0;1,0>:f
  749.     mac (1)     r5.6<1>:f    r4.6<0;1,0>:f                  r8.6<0;1,0>:f
  750.     jmpi (1) END_SRC_BLOCK_ORIG_COMP_L6
  751.  
  752.   // rotate 90 degree
  753. ROTATE_90_L6:  
  754.     (-f0.0)mov  (1)     acc0.6:f            r6.6<0;1,0>:f
  755.     (-f0.0)mac  (1)     r6.6<1>:f    r3.6<0;1,0>:f              r8.6<0;1,0>:f
  756.  
  757.     mov (1) r16.0<1>:f    r2.0<0;1,0>:uw
  758.     add (1) r17.0<1>:f    -r8.5<0;1,0>:f               r16.0<0;1,0>:f
  759.     add (1) r17.0<1>:f    r17.0<0;1,0>:f        -16.0:f        
  760.  
  761.     mov (1)     acc0.6:f                                                        r5.6<0;1,0>:f
  762.     mac (1)     r5.6<1>:f     r4.6<0;1,0>:f             r17.0<0;1,0>:f
  763.     jmpi (1) END_SRC_BLOCK_ORIG_COMP_L6
  764.  
  765.   // rotate 180 degree
  766. ROTATE_180_L6:  
  767.     (-f0.0)mov (1) r16.0<1>:f    r2.0<0;1,0>:uw
  768.     (-f0.0)add (1) r17.0<1>:f    -r8.5<0;1,0>:f              r16.0<0;1,0>:f
  769.     (-f0.0)add (1) r17.0<1>:f    r17.0<0;1,0>:f       -16.0:f  
  770.     (-f0.0)mov (1) acc0.6:f             r6.6<0;1,0>:f
  771.     (-f0.0)mac (1) r6.6<1>:f     r3.6<0;1,0>:f          r17.0<0;1,0>:f
  772.  
  773.     mov (1) r16.0<1>:f    r2.1<0;1,0>:uw       
  774.     add (1) r17.0<1>:f    -r8.6<0;1,0>:f                     r16.0<0;1,0>:f
  775.     add (1) r17.0<1>:f    r17.0<0;1,0>:f              -16.0:f  
  776.     mov (1)     acc0.6:f             r5.6<0;1,0>:f
  777.     mac (1)     r5.6<1>:f     r4.6<0;1,0>:f                 r17.0<0;1,0>:f
  778.     jmpi (1) END_SRC_BLOCK_ORIG_COMP_L6  
  779.  
  780.   // rotate 270 degree
  781. ROTATE_270_L6:    
  782.     (-f0.0)mov (1) r16.0<1>:f    r2.1<0;1,0>:uw
  783.     (-f0.0)add (1) r17.0<1>:f    -r8.6<0;1,0>:f              r16.0<0;1,0>:f
  784.     (-f0.0)add (1) r17.0<1>:f    r17.0<0;1,0>:f       -16.0:f  
  785.     (-f0.0)mov (1) acc0.6:f             r6.6<0;1,0>:f
  786.     (-f0.0)mac (1) r6.6<1>:f     r3.6<0;1,0>:f          r17.0<0;1,0>:f
  787.  
  788.     mov (1)     acc0.6:f                    r5.6<0;1,0>:f
  789.     mac (1)     r5.6<1>:f            r4.6<0;1,0>:f          r8.5<0;1,0>:f
  790.  
  791. END_SRC_BLOCK_ORIG_COMP_L6:            
  792.     nop
  793.     shr (1) r17.0<1>:uw    r2.2<0;1,0>:uw    14:uw
  794.     and (1) r17.0<1>:uw    r17.0<0;1,0>:uw           3:uw
  795.     cmp.e.f0.1 (1) null<1>:w    r17.0<0;1,0>:uw    1:uw
  796.     (f0.1) jmpi (1) ROTATE_90_L7
  797.     cmp.e.f0.1 (1) null<1>:w    r17.0<0;1,0>:uw    2:uw
  798.     (f0.1) jmpi (1) ROTATE_180_L7
  799.     cmp.e.f0.1 (1) null<1>:w    r17.0<0;1,0>:uw    3:uw
  800.     (f0.1) jmpi (1) ROTATE_270_L7
  801.  
  802.   // rotate 0 degree
  803. ROTATE_0_L7:  
  804.     (-f0.0)mov  (1)     acc0.7:f                                           r6.7<0;1,0>:f
  805.     (-f0.0)mac  (1)     r6.7<1>:f    r3.7<0;1,0>:f              r8.5<0;1,0>:f
  806.  
  807.     mov (1)     acc0.7:f            r5.7<0;1,0>:f
  808.     mac (1)     r5.7<1>:f    r4.7<0;1,0>:f                  r8.6<0;1,0>:f
  809.     jmpi (1) END_SRC_BLOCK_ORIG_COMP_L7
  810.  
  811.   // rotate 90 degree
  812. ROTATE_90_L7:  
  813.     (-f0.0)mov  (1)     acc0.7:f            r6.7<0;1,0>:f
  814.     (-f0.0)mac  (1)     r6.7<1>:f    r3.7<0;1,0>:f              r8.6<0;1,0>:f
  815.  
  816.     mov (1) r16.0<1>:f    r2.0<0;1,0>:uw
  817.     add (1) r17.0<1>:f    -r8.5<0;1,0>:f               r16.0<0;1,0>:f
  818.     add (1) r17.0<1>:f    r17.0<0;1,0>:f        -16.0:f        
  819.  
  820.     mov (1)     acc0.7:f                                                        r5.7<0;1,0>:f
  821.     mac (1)     r5.7<1>:f     r4.7<0;1,0>:f             r17.0<0;1,0>:f
  822.     jmpi (1) END_SRC_BLOCK_ORIG_COMP_L7
  823.  
  824.   // rotate 180 degree
  825. ROTATE_180_L7:  
  826.     (-f0.0)mov (1) r16.0<1>:f    r2.0<0;1,0>:uw
  827.     (-f0.0)add (1) r17.0<1>:f    -r8.5<0;1,0>:f              r16.0<0;1,0>:f
  828.     (-f0.0)add (1) r17.0<1>:f    r17.0<0;1,0>:f       -16.0:f  
  829.     (-f0.0)mov (1) acc0.7:f             r6.7<0;1,0>:f
  830.     (-f0.0)mac (1) r6.7<1>:f     r3.7<0;1,0>:f          r17.0<0;1,0>:f
  831.  
  832.     mov (1) r16.0<1>:f    r2.1<0;1,0>:uw       
  833.     add (1) r17.0<1>:f    -r8.6<0;1,0>:f                     r16.0<0;1,0>:f
  834.     add (1) r17.0<1>:f    r17.0<0;1,0>:f              -16.0:f  
  835.     mov (1)     acc0.7:f             r5.7<0;1,0>:f
  836.     mac (1)     r5.7<1>:f     r4.7<0;1,0>:f                 r17.0<0;1,0>:f
  837.     jmpi (1) END_SRC_BLOCK_ORIG_COMP_L7  
  838.  
  839.   // rotate 270 degree
  840. ROTATE_270_L7:    
  841.     (-f0.0)mov (1) r16.0<1>:f    r2.1<0;1,0>:uw
  842.     (-f0.0)add (1) r17.0<1>:f    -r8.6<0;1,0>:f              r16.0<0;1,0>:f
  843.     (-f0.0)add (1) r17.0<1>:f    r17.0<0;1,0>:f       -16.0:f  
  844.     (-f0.0)mov (1) acc0.7:f             r6.7<0;1,0>:f
  845.     (-f0.0)mac (1) r6.7<1>:f     r3.7<0;1,0>:f          r17.0<0;1,0>:f
  846.  
  847.     mov (1)     acc0.7:f                    r5.7<0;1,0>:f
  848.     mac (1)     r5.7<1>:f            r4.7<0;1,0>:f          r8.5<0;1,0>:f
  849.  
  850. END_SRC_BLOCK_ORIG_COMP_L7:            
  851.     nop
  852.  
  853.  
  854.