103b705cfSriastradh/*
203b705cfSriastradh   GRF allocation:
303b705cfSriastradh   g1~g30: constant buffer
403b705cfSriastradh           g1~g2:intra IQ matrix
503b705cfSriastradh           g3~g4:non intra IQ matrix
603b705cfSriastradh           g5~g20:IDCT tab
703b705cfSriastradh   g31:    read and write message descriptor
803b705cfSriastradh   g32~g55:DCT data
903b705cfSriastradh   g58~g81:reference data
1003b705cfSriastradh   g82:    thread payload 
1103b705cfSriastradh   g83~g106:IDCT data 
1203b705cfSriastradh*/
1303b705cfSriastradhmov (8) g82.0<1>UD g31.0<8,8,1>UD {align1};
1403b705cfSriastradh
1503b705cfSriastradhmov.sat (16) g33.0<2>UB g33.0<16,16,1>W {align1};
1603b705cfSriastradhmov.sat (16) g34.0<2>UB g34.0<16,16,1>W {align1};
1703b705cfSriastradhmov.sat (16) g35.0<2>UB g35.0<16,16,1>W {align1};
1803b705cfSriastradhmov.sat (16) g36.0<2>UB g36.0<16,16,1>W {align1};
1903b705cfSriastradhmov.sat (16) g37.0<2>UB g37.0<16,16,1>W {align1};
2003b705cfSriastradhmov.sat (16) g38.0<2>UB g38.0<16,16,1>W {align1};
2103b705cfSriastradhmov.sat (16) g39.0<2>UB g39.0<16,16,1>W {align1};
2203b705cfSriastradhmov.sat (16) g40.0<2>UB g40.0<16,16,1>W {align1};
2303b705cfSriastradhmov.sat (16) g41.0<2>UB g41.0<16,16,1>W {align1};
2403b705cfSriastradhmov.sat (16) g42.0<2>UB g42.0<16,16,1>W {align1};
2503b705cfSriastradhmov.sat (16) g43.0<2>UB g43.0<16,16,1>W {align1};
2603b705cfSriastradhmov.sat (16) g44.0<2>UB g44.0<16,16,1>W {align1};
2703b705cfSriastradhmov.sat (16) g45.0<2>UB g45.0<16,16,1>W {align1};
2803b705cfSriastradhmov.sat (16) g46.0<2>UB g46.0<16,16,1>W {align1};
2903b705cfSriastradhmov.sat (16) g47.0<2>UB g47.0<16,16,1>W {align1};
3003b705cfSriastradhmov.sat (16) g48.0<2>UB g48.0<16,16,1>W {align1};
3103b705cfSriastradh
3203b705cfSriastradhmov.sat (16) g49.0<2>UB g49.0<16,16,1>W {align1};
3303b705cfSriastradhmov.sat (16) g50.0<2>UB g50.0<16,16,1>W {align1};
3403b705cfSriastradhmov.sat (16) g51.0<2>UB g51.0<16,16,1>W {align1};
3503b705cfSriastradhmov.sat (16) g52.0<2>UB g52.0<16,16,1>W {align1};
3603b705cfSriastradhmov.sat (16) g53.0<2>UB g53.0<16,16,1>W {align1};
3703b705cfSriastradhmov.sat (16) g54.0<2>UB g54.0<16,16,1>W {align1};
3803b705cfSriastradhmov.sat (16) g55.0<2>UB g55.0<16,16,1>W {align1};
3903b705cfSriastradhmov.sat (16) g56.0<2>UB g56.0<16,16,1>W {align1};
4003b705cfSriastradh
4103b705cfSriastradhmov (1) g31.8<1>UD 0x00F000FUD {align1};
4203b705cfSriastradh
4303b705cfSriastradhand.nz (1) null g82.30<1,1,1>UB 0x1UW{align1};
4403b705cfSriastradh(f0) jmpi field_dct_y;
4503b705cfSriastradh
4603b705cfSriastradhmov (16) m1.0<1>UB  g33.0<16,16,2>UB {align1};
4703b705cfSriastradhmov (16) m1.16<1>UB g34.0<16,16,2>UB {align1};
4803b705cfSriastradhmov (16) m2.0<1>UB  g35.0<16,16,2>UB {align1};
4903b705cfSriastradhmov (16) m2.16<1>UB g36.0<16,16,2>UB {align1};
5003b705cfSriastradhmov (16) m3.0<1>UB  g37.0<16,16,2>UB {align1};
5103b705cfSriastradhmov (16) m3.16<1>UB g38.0<16,16,2>UB {align1};
5203b705cfSriastradhmov (16) m4.0<1>UB  g39.0<16,16,2>UB {align1};
5303b705cfSriastradhmov (16) m4.16<1>UB g40.0<16,16,2>UB {align1};
5403b705cfSriastradhmov (16) m5.0<1>UB  g41.0<16,16,2>UB {align1};
5503b705cfSriastradhmov (16) m5.16<1>UB g42.0<16,16,2>UB {align1};
5603b705cfSriastradhmov (16) m6.0<1>UB  g43.0<16,16,2>UB {align1};
5703b705cfSriastradhmov (16) m6.16<1>UB g44.0<16,16,2>UB {align1};
5803b705cfSriastradhmov (16) m7.0<1>UB  g45.0<16,16,2>UB {align1};
5903b705cfSriastradhmov (16) m7.16<1>UB g46.0<16,16,2>UB {align1};
6003b705cfSriastradhmov (16) m8.0<1>UB  g47.0<16,16,2>UB {align1};
6103b705cfSriastradhmov (16) m8.16<1>UB g48.0<16,16,2>UB {align1};
6203b705cfSriastradhjmpi write_back_y;
6303b705cfSriastradh
6403b705cfSriastradhfield_dct_y:
6503b705cfSriastradhmov (16) m1.0<1>UB  g33.0<16,16,2>UB {align1};
6603b705cfSriastradhmov (16) m1.16<1>UB g41.0<16,16,2>UB {align1};
6703b705cfSriastradhmov (16) m2.0<1>UB  g34.0<16,16,2>UB {align1};
6803b705cfSriastradhmov (16) m2.16<1>UB g42.0<16,16,2>UB {align1};
6903b705cfSriastradhmov (16) m3.0<1>UB  g35.0<16,16,2>UB {align1};
7003b705cfSriastradhmov (16) m3.16<1>UB g43.0<16,16,2>UB {align1};
7103b705cfSriastradhmov (16) m4.0<1>UB  g36.0<16,16,2>UB {align1};
7203b705cfSriastradhmov (16) m4.16<1>UB g44.0<16,16,2>UB {align1};
7303b705cfSriastradhmov (16) m5.0<1>UB  g37.0<16,16,2>UB {align1};
7403b705cfSriastradhmov (16) m5.16<1>UB g45.0<16,16,2>UB {align1};
7503b705cfSriastradhmov (16) m6.0<1>UB  g38.0<16,16,2>UB {align1};
7603b705cfSriastradhmov (16) m6.16<1>UB g46.0<16,16,2>UB {align1};
7703b705cfSriastradhmov (16) m7.0<1>UB  g39.0<16,16,2>UB {align1};
7803b705cfSriastradhmov (16) m7.16<1>UB g47.0<16,16,2>UB {align1};
7903b705cfSriastradhmov (16) m8.0<1>UB  g40.0<16,16,2>UB {align1};
8003b705cfSriastradhmov (16) m8.16<1>UB g48.0<16,16,2>UB {align1};
8103b705cfSriastradh
8203b705cfSriastradhwrite_back_y:
8303b705cfSriastradhsend (16) 0 acc0<1>UW g31<8,8,1>UW write(0,0,2,0) mlen 9 rlen 0 {align1};
8403b705cfSriastradh
8503b705cfSriastradh//U
8603b705cfSriastradhmov (1) g31.8<1>UD 0x0070007UD  { align1 };
8703b705cfSriastradhshr (2) g31.0<1>UD g82.0<2,2,1>UD 1D {align1};
8803b705cfSriastradh
8903b705cfSriastradhmov (16) m1.0<1>UB  g49.0<16,16,2>UB {align1};
9003b705cfSriastradhmov (16) m1.16<1>UB g50.0<16,16,2>UB {align1};
9103b705cfSriastradhmov (16) m2.0<1>UB  g51.0<16,16,2>UB {align1};
9203b705cfSriastradhmov (16) m2.16<1>UB g52.0<16,16,2>UB {align1};
9303b705cfSriastradhsend (16) 0 acc0<1>UW g31<8,8,1>UW write(1, 0, 2, 0) mlen 3 rlen 0 { align1 };
9403b705cfSriastradh
9503b705cfSriastradh//V
9603b705cfSriastradhmov (16) m1.0<1>UB  g53.0<16,16,2>UB {align1};
9703b705cfSriastradhmov (16) m1.16<1>UB g54.0<16,16,2>UB {align1};
9803b705cfSriastradhmov (16) m2.0<1>UB  g55.0<16,16,2>UB {align1};
9903b705cfSriastradhmov (16) m2.16<1>UB g56.0<16,16,2>UB {align1};
10003b705cfSriastradhsend (16) 0 acc0<1>UW g31<8,8,1>UW write(2, 0, 2, 0) mlen 3 rlen 0 { align1 };
10103b705cfSriastradh
10203b705cfSriastradhOUT:
10303b705cfSriastradhsend (16) 0 acc0<1>UW g0<8,8,1>UW
10403b705cfSriastradh        thread_spawner(0, 0, 0) mlen 1 rlen 0 { align1 EOT};
10503b705cfSriastradh
106