103b705cfSriastradh/* GRF allocation:
203b705cfSriastradh   g1~g30: constant buffer
303b705cfSriastradh           g1~g2:intra IQ matrix in UB format
403b705cfSriastradh           g3~g4:non intra IQ matrix in UB format
503b705cfSriastradh           g5~g20:IDCT table
603b705cfSriastradh   g32~g55:DCT data before IQ
703b705cfSriastradh   g56~g79:DCT data after IQ
803b705cfSriastradh   g84~g107: IDCT data after idct
903b705cfSriastradh   g82:    thread payload backup
1003b705cfSriastradh   g126.8:   ip before jump to the lib
1103b705cfSriastradh*/
1203b705cfSriastradhjmpi MOTION_FRAME_Y;
1303b705cfSriastradhjmpi MOTION_FRAME_UV;
1403b705cfSriastradhjmpi MOTION_FIELD_Y;
1503b705cfSriastradhjmpi MOTION_FIELD_UV;
1603b705cfSriastradhjmpi ADD_IDCT;
1703b705cfSriastradh
1803b705cfSriastradhmov (16) g84.0<1>W g33.0<16,16,1>W {align1};
1903b705cfSriastradhmov (16) g85.0<1>W g34.0<16,16,1>W {align1};
2003b705cfSriastradhmov (16) g86.0<1>W g35.0<16,16,1>W {align1};
2103b705cfSriastradhmov (16) g87.0<1>W g36.0<16,16,1>W {align1};
2203b705cfSriastradhmov (16) g88.0<1>W g37.0<16,16,1>W {align1};
2303b705cfSriastradhmov (16) g89.0<1>W g38.0<16,16,1>W {align1};
2403b705cfSriastradhmov (16) g90.0<1>W g39.0<16,16,1>W {align1};
2503b705cfSriastradhmov (16) g91.0<1>W g40.0<16,16,1>W {align1};
2603b705cfSriastradhmov (16) g92.0<1>W g41.0<16,16,1>W {align1};
2703b705cfSriastradhmov (16) g93.0<1>W g42.0<16,16,1>W {align1};
2803b705cfSriastradhmov (16) g94.0<1>W g43.0<16,16,1>W {align1};
2903b705cfSriastradhmov (16) g95.0<1>W g44.0<16,16,1>W {align1};
3003b705cfSriastradhmov (16) g96.0<1>W g45.0<16,16,1>W {align1};
3103b705cfSriastradhmov (16) g97.0<1>W g46.0<16,16,1>W {align1};
3203b705cfSriastradhmov (16) g98.0<1>W g47.0<16,16,1>W {align1};
3303b705cfSriastradhmov (16) g99.0<1>W g48.0<16,16,1>W {align1};
3403b705cfSriastradh
3503b705cfSriastradhmov (16) g100.0<1>W g49.0<16,16,1>W {align1};
3603b705cfSriastradhmov (16) g101.0<1>W g50.0<16,16,1>W {align1};
3703b705cfSriastradhmov (16) g102.0<1>W g51.0<16,16,1>W {align1};
3803b705cfSriastradhmov (16) g103.0<1>W g52.0<16,16,1>W {align1};
3903b705cfSriastradhmov (16) g104.0<1>W g53.0<16,16,1>W {align1};
4003b705cfSriastradhmov (16) g105.0<1>W g54.0<16,16,1>W {align1};
4103b705cfSriastradhmov (16) g106.0<1>W g55.0<16,16,1>W {align1};
4203b705cfSriastradhmov (16) g107.0<1>W g56.0<16,16,1>W {align1};
4303b705cfSriastradh
4403b705cfSriastradh//Y0
4503b705cfSriastradhand.nz (1) null g82.12<1,1,1>UW 0x20UW {align1};
4603b705cfSriastradh(f0) jmpi block_y1;
4703b705cfSriastradhmov (8) g84.0<1>W 0W {align1};
4803b705cfSriastradhmov (8) g85.0<1>W 0W {align1};
4903b705cfSriastradhmov (8) g86.0<1>W 0W {align1};
5003b705cfSriastradhmov (8) g87.0<1>W 0W {align1};
5103b705cfSriastradhmov (8) g88.0<1>W 0W {align1};
5203b705cfSriastradhmov (8) g89.0<1>W 0W {align1};
5303b705cfSriastradhmov (8) g90.0<1>W 0W {align1};
5403b705cfSriastradhmov (8) g91.0<1>W 0W {align1};
5503b705cfSriastradh
5603b705cfSriastradh//Y1
5703b705cfSriastradhblock_y1:
5803b705cfSriastradhand.nz (1) null g82.12<1,1,1>UW 0x10UW {align1};
5903b705cfSriastradh(f0) jmpi block_y2;
6003b705cfSriastradhmov (8) g84.16<1>W 0W {align1};
6103b705cfSriastradhmov (8) g85.16<1>W 0W {align1};
6203b705cfSriastradhmov (8) g86.16<1>W 0W {align1};
6303b705cfSriastradhmov (8) g87.16<1>W 0W {align1};
6403b705cfSriastradhmov (8) g88.16<1>W 0W {align1};
6503b705cfSriastradhmov (8) g89.16<1>W 0W {align1};
6603b705cfSriastradhmov (8) g90.16<1>W 0W {align1};
6703b705cfSriastradhmov (8) g91.16<1>W 0W {align1};
6803b705cfSriastradh
6903b705cfSriastradh//Y2
7003b705cfSriastradhblock_y2:
7103b705cfSriastradhand.nz (1) null g82.12<1,1,1>UW 0x08UW {align1};
7203b705cfSriastradh(f0) jmpi block_y3;
7303b705cfSriastradhmov (8) g92.0<1>W 0W {align1};
7403b705cfSriastradhmov (8) g93.0<1>W 0W {align1};
7503b705cfSriastradhmov (8) g94.0<1>W 0W {align1};
7603b705cfSriastradhmov (8) g95.0<1>W 0W {align1};
7703b705cfSriastradhmov (8) g96.0<1>W 0W {align1};
7803b705cfSriastradhmov (8) g97.0<1>W 0W {align1};
7903b705cfSriastradhmov (8) g98.0<1>W 0W {align1};
8003b705cfSriastradhmov (8) g99.0<1>W 0W {align1};
8103b705cfSriastradh
8203b705cfSriastradh//Y3
8303b705cfSriastradhblock_y3:
8403b705cfSriastradhand.nz (1) null g82.12<1,1,1>UW 0x04UW {align1};
8503b705cfSriastradh(f0) jmpi block_u;
8603b705cfSriastradhmov (8) g92.16<1>W 0W {align1};
8703b705cfSriastradhmov (8) g93.16<1>W 0W {align1};
8803b705cfSriastradhmov (8) g94.16<1>W 0W {align1};
8903b705cfSriastradhmov (8) g95.16<1>W 0W {align1};
9003b705cfSriastradhmov (8) g96.16<1>W 0W {align1};
9103b705cfSriastradhmov (8) g97.16<1>W 0W {align1};
9203b705cfSriastradhmov (8) g98.16<1>W 0W {align1};
9303b705cfSriastradhmov (8) g99.16<1>W 0W {align1};
9403b705cfSriastradh
9503b705cfSriastradh//U
9603b705cfSriastradhblock_u:
9703b705cfSriastradhand.nz (1) null g82.12<1,1,1>UW 0x02UW {align1};
9803b705cfSriastradh(f0) jmpi block_v;
9903b705cfSriastradhmov (16) g100.0<1>W 0W {align1};
10003b705cfSriastradhmov (16) g101.0<1>W 0W {align1};
10103b705cfSriastradhmov (16) g102.0<1>W 0W {align1};
10203b705cfSriastradhmov (16) g103.0<1>W 0W {align1};
10303b705cfSriastradh
10403b705cfSriastradh//V
10503b705cfSriastradhblock_v:
10603b705cfSriastradhand.nz (1) null g82.12<1,1,1>UW 0x01UW {align1};
10703b705cfSriastradh(f0) jmpi out;
10803b705cfSriastradhmov (16) g104.0<1>W 0W {align1};
10903b705cfSriastradhmov (16) g105.0<1>W 0W {align1};
11003b705cfSriastradhmov (16) g106.0<1>W 0W {align1};
11103b705cfSriastradhmov (16) g107.0<1>W 0W {align1};
11203b705cfSriastradh
11303b705cfSriastradhout:
11403b705cfSriastradhadd (1) ip g126.8<1,1,1>UD 0x20UD {align1};            //jump back
11503b705cfSriastradh
11603b705cfSriastradhMOTION_FRAME_Y:
11703b705cfSriastradhinclude(`motion_frame_y_igd.g4i')
11803b705cfSriastradhadd (1) ip g126.8<1,1,1>UD 0x20UD {align1};            //jump back
11903b705cfSriastradh
12003b705cfSriastradhMOTION_FRAME_UV:
12103b705cfSriastradhinclude(`motion_frame_uv_igd.g4i')
12203b705cfSriastradhadd (1) ip g126.8<1,1,1>UD 0x20UD {align1};            //jump back
12303b705cfSriastradh
12403b705cfSriastradhMOTION_FIELD_Y:
12503b705cfSriastradhinclude(`motion_field_y_igd.g4i')
12603b705cfSriastradhadd (1) ip g126.8<1,1,1>UD 0x20UD {align1};            //jump back
12703b705cfSriastradh
12803b705cfSriastradhMOTION_FIELD_UV:
12903b705cfSriastradhinclude(`motion_field_uv_igd.g4i')
13003b705cfSriastradhadd (1) ip g126.8<1,1,1>UD 0x20UD {align1};            //jump back
13103b705cfSriastradh
13203b705cfSriastradhADD_IDCT:
13303b705cfSriastradhinclude(`addidct_igd.g4i')
134