1428d7b3dSmrg/* GRF allocation:
2428d7b3dSmrg   g1~g30: constant buffer
3428d7b3dSmrg           g1~g2:intra IQ matrix in UB format
4428d7b3dSmrg           g3~g4:non intra IQ matrix in UB format
5428d7b3dSmrg           g5~g20:IDCT table
6428d7b3dSmrg   g32~g55:DCT data before IQ
7428d7b3dSmrg   g56~g79:DCT data after IQ
8428d7b3dSmrg   g84~g107: IDCT data after idct
9428d7b3dSmrg   g82:    thread payload backup
10428d7b3dSmrg   g126.8:   ip before jump to the lib
11428d7b3dSmrg*/
12428d7b3dSmrgjmpi MOTION_FRAME_Y;
13428d7b3dSmrgjmpi MOTION_FRAME_UV;
14428d7b3dSmrgjmpi MOTION_FIELD_Y;
15428d7b3dSmrgjmpi MOTION_FIELD_UV;
16428d7b3dSmrgjmpi ADD_IDCT;
17428d7b3dSmrg
18428d7b3dSmrgmov (16) g84.0<1>W g33.0<16,16,1>W {align1};
19428d7b3dSmrgmov (16) g85.0<1>W g34.0<16,16,1>W {align1};
20428d7b3dSmrgmov (16) g86.0<1>W g35.0<16,16,1>W {align1};
21428d7b3dSmrgmov (16) g87.0<1>W g36.0<16,16,1>W {align1};
22428d7b3dSmrgmov (16) g88.0<1>W g37.0<16,16,1>W {align1};
23428d7b3dSmrgmov (16) g89.0<1>W g38.0<16,16,1>W {align1};
24428d7b3dSmrgmov (16) g90.0<1>W g39.0<16,16,1>W {align1};
25428d7b3dSmrgmov (16) g91.0<1>W g40.0<16,16,1>W {align1};
26428d7b3dSmrgmov (16) g92.0<1>W g41.0<16,16,1>W {align1};
27428d7b3dSmrgmov (16) g93.0<1>W g42.0<16,16,1>W {align1};
28428d7b3dSmrgmov (16) g94.0<1>W g43.0<16,16,1>W {align1};
29428d7b3dSmrgmov (16) g95.0<1>W g44.0<16,16,1>W {align1};
30428d7b3dSmrgmov (16) g96.0<1>W g45.0<16,16,1>W {align1};
31428d7b3dSmrgmov (16) g97.0<1>W g46.0<16,16,1>W {align1};
32428d7b3dSmrgmov (16) g98.0<1>W g47.0<16,16,1>W {align1};
33428d7b3dSmrgmov (16) g99.0<1>W g48.0<16,16,1>W {align1};
34428d7b3dSmrg
35428d7b3dSmrgmov (16) g100.0<1>W g49.0<16,16,1>W {align1};
36428d7b3dSmrgmov (16) g101.0<1>W g50.0<16,16,1>W {align1};
37428d7b3dSmrgmov (16) g102.0<1>W g51.0<16,16,1>W {align1};
38428d7b3dSmrgmov (16) g103.0<1>W g52.0<16,16,1>W {align1};
39428d7b3dSmrgmov (16) g104.0<1>W g53.0<16,16,1>W {align1};
40428d7b3dSmrgmov (16) g105.0<1>W g54.0<16,16,1>W {align1};
41428d7b3dSmrgmov (16) g106.0<1>W g55.0<16,16,1>W {align1};
42428d7b3dSmrgmov (16) g107.0<1>W g56.0<16,16,1>W {align1};
43428d7b3dSmrg
44428d7b3dSmrg//Y0
45428d7b3dSmrgand.nz (1) null g82.12<1,1,1>UW 0x20UW {align1};
46428d7b3dSmrg(f0) jmpi block_y1;
47428d7b3dSmrgmov (8) g84.0<1>W 0W {align1};
48428d7b3dSmrgmov (8) g85.0<1>W 0W {align1};
49428d7b3dSmrgmov (8) g86.0<1>W 0W {align1};
50428d7b3dSmrgmov (8) g87.0<1>W 0W {align1};
51428d7b3dSmrgmov (8) g88.0<1>W 0W {align1};
52428d7b3dSmrgmov (8) g89.0<1>W 0W {align1};
53428d7b3dSmrgmov (8) g90.0<1>W 0W {align1};
54428d7b3dSmrgmov (8) g91.0<1>W 0W {align1};
55428d7b3dSmrg
56428d7b3dSmrg//Y1
57428d7b3dSmrgblock_y1:
58428d7b3dSmrgand.nz (1) null g82.12<1,1,1>UW 0x10UW {align1};
59428d7b3dSmrg(f0) jmpi block_y2;
60428d7b3dSmrgmov (8) g84.16<1>W 0W {align1};
61428d7b3dSmrgmov (8) g85.16<1>W 0W {align1};
62428d7b3dSmrgmov (8) g86.16<1>W 0W {align1};
63428d7b3dSmrgmov (8) g87.16<1>W 0W {align1};
64428d7b3dSmrgmov (8) g88.16<1>W 0W {align1};
65428d7b3dSmrgmov (8) g89.16<1>W 0W {align1};
66428d7b3dSmrgmov (8) g90.16<1>W 0W {align1};
67428d7b3dSmrgmov (8) g91.16<1>W 0W {align1};
68428d7b3dSmrg
69428d7b3dSmrg//Y2
70428d7b3dSmrgblock_y2:
71428d7b3dSmrgand.nz (1) null g82.12<1,1,1>UW 0x08UW {align1};
72428d7b3dSmrg(f0) jmpi block_y3;
73428d7b3dSmrgmov (8) g92.0<1>W 0W {align1};
74428d7b3dSmrgmov (8) g93.0<1>W 0W {align1};
75428d7b3dSmrgmov (8) g94.0<1>W 0W {align1};
76428d7b3dSmrgmov (8) g95.0<1>W 0W {align1};
77428d7b3dSmrgmov (8) g96.0<1>W 0W {align1};
78428d7b3dSmrgmov (8) g97.0<1>W 0W {align1};
79428d7b3dSmrgmov (8) g98.0<1>W 0W {align1};
80428d7b3dSmrgmov (8) g99.0<1>W 0W {align1};
81428d7b3dSmrg
82428d7b3dSmrg//Y3
83428d7b3dSmrgblock_y3:
84428d7b3dSmrgand.nz (1) null g82.12<1,1,1>UW 0x04UW {align1};
85428d7b3dSmrg(f0) jmpi block_u;
86428d7b3dSmrgmov (8) g92.16<1>W 0W {align1};
87428d7b3dSmrgmov (8) g93.16<1>W 0W {align1};
88428d7b3dSmrgmov (8) g94.16<1>W 0W {align1};
89428d7b3dSmrgmov (8) g95.16<1>W 0W {align1};
90428d7b3dSmrgmov (8) g96.16<1>W 0W {align1};
91428d7b3dSmrgmov (8) g97.16<1>W 0W {align1};
92428d7b3dSmrgmov (8) g98.16<1>W 0W {align1};
93428d7b3dSmrgmov (8) g99.16<1>W 0W {align1};
94428d7b3dSmrg
95428d7b3dSmrg//U
96428d7b3dSmrgblock_u:
97428d7b3dSmrgand.nz (1) null g82.12<1,1,1>UW 0x02UW {align1};
98428d7b3dSmrg(f0) jmpi block_v;
99428d7b3dSmrgmov (16) g100.0<1>W 0W {align1};
100428d7b3dSmrgmov (16) g101.0<1>W 0W {align1};
101428d7b3dSmrgmov (16) g102.0<1>W 0W {align1};
102428d7b3dSmrgmov (16) g103.0<1>W 0W {align1};
103428d7b3dSmrg
104428d7b3dSmrg//V
105428d7b3dSmrgblock_v:
106428d7b3dSmrgand.nz (1) null g82.12<1,1,1>UW 0x01UW {align1};
107428d7b3dSmrg(f0) jmpi out;
108428d7b3dSmrgmov (16) g104.0<1>W 0W {align1};
109428d7b3dSmrgmov (16) g105.0<1>W 0W {align1};
110428d7b3dSmrgmov (16) g106.0<1>W 0W {align1};
111428d7b3dSmrgmov (16) g107.0<1>W 0W {align1};
112428d7b3dSmrg
113428d7b3dSmrgout:
114428d7b3dSmrgadd (1) ip g126.8<1,1,1>UD 0x20UD {align1};            //jump back
115428d7b3dSmrg
116428d7b3dSmrgMOTION_FRAME_Y:
117428d7b3dSmrginclude(`motion_frame_y_igd.g4i')
118428d7b3dSmrgadd (1) ip g126.8<1,1,1>UD 0x20UD {align1};            //jump back
119428d7b3dSmrg
120428d7b3dSmrgMOTION_FRAME_UV:
121428d7b3dSmrginclude(`motion_frame_uv_igd.g4i')
122428d7b3dSmrgadd (1) ip g126.8<1,1,1>UD 0x20UD {align1};            //jump back
123428d7b3dSmrg
124428d7b3dSmrgMOTION_FIELD_Y:
125428d7b3dSmrginclude(`motion_field_y_igd.g4i')
126428d7b3dSmrgadd (1) ip g126.8<1,1,1>UD 0x20UD {align1};            //jump back
127428d7b3dSmrg
128428d7b3dSmrgMOTION_FIELD_UV:
129428d7b3dSmrginclude(`motion_field_uv_igd.g4i')
130428d7b3dSmrgadd (1) ip g126.8<1,1,1>UD 0x20UD {align1};            //jump back
131428d7b3dSmrg
132428d7b3dSmrgADD_IDCT:
133428d7b3dSmrginclude(`addidct_igd.g4i')
134