iq_non_intra.g4i revision 428d7b3d
1b4b94579Smrg/* 2b4b94579Smrg * Copyright © 2009 Intel Corporation 3b4b94579Smrg * 481988197Sjmcneill * Permission is hereby granted, free of charge, to any person obtaining a 581988197Sjmcneill * copy of this software and associated documentation files (the "Software"), 681988197Sjmcneill * to deal in the Software without restriction, including without limitation 781988197Sjmcneill * the rights to use, copy, modify, merge, publish, distribute, sublicense, 82ee35494Smrg * and/or sell copies of the Software, and to permit persons to whom the 981988197Sjmcneill * Software is furnished to do so, subject to the following conditions: 1081988197Sjmcneill * 1181988197Sjmcneill * The above copyright notice and this permission notice (including the next 1281988197Sjmcneill * paragraph) shall be included in all copies or substantial portions of the 1381988197Sjmcneill * Software. 1481988197Sjmcneill * 1581988197Sjmcneill * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1681988197Sjmcneill * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1781988197Sjmcneill * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 18b4b94579Smrg * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19b4b94579Smrg * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20b4b94579Smrg * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21b4b94579Smrg * SOFTWARE. 22952204abSmrg * 23952204abSmrg * Author: 24952204abSmrg * Zou Nan hai <nanhai.zou@intel.com> 25b4b94579Smrg * Yan Li <li.l.yan@intel.com> 26b4b94579Smrg * Liu Xi bin<xibin.liu@intel.com> 27317c648bSmrg */ 28952204abSmrg/* GRF allocation: 29952204abSmrg g1~g30: constant buffer 3081988197Sjmcneill g1~g2:intra IQ matrix in UB format 317fb3d851Smrg g3~g4:non intra IQ matrix in UB format 32b4b94579Smrg g5~g20:IDCT table 33dc259aabSmrg g32~g55:DCT data before IQ 34b4b94579Smrg g56~g79:DCT data after IQ 35dc259aabSmrg g82: thread payload backup 36dc259aabSmrg g109: q_scale_code 37dc259aabSmrg g110: q_scale_code 38b4b94579Smrg g112~g115: non intra IQ matrix in UW format (in order to use instruction compress), copys from g3~g4 39b4b94579Smrg g125: ip before jump 40b4b94579Smrg*/ 41b4b94579Smrgand (1) g109.0<1>UW g82.8<1,1,1>UW 0x1fUW {align1}; //q_scale_code 42b4b94579Smrg 43b4b94579Smrgand.z (1) null g82.8<1,1,1>UW 0x20UW {align1}; //if(q_scale_type==0) q_scale=q_scale_code*2; 44b4b94579Smrg(f0) jmpi Q_SCALE_TYPE_0; 45b4b94579Smrg 46b4b94579Smrgcmp.l (1) null g109.0<1,1,1>UW 9UW {align1}; //if(q_scale_type!=0) calculate q_scale 47b4b94579Smrg(f0) jmpi DO_IQ; 48b4b94579Smrgcmp.l (1) null g109.0<1,1,1>UW 17UW {align1}; 4981988197Sjmcneill(f0) jmpi RANG_9_16; 5081988197Sjmcneillcmp.l (1) null g109.0<1,1,1>UW 25UW {align1}; 5181988197Sjmcneill(f0) jmpi RANG_17_24; 5281988197Sjmcneill 5381988197SjmcneillRANG_25_31: 5481988197Sjmcneilladd (1) g109.0<1>UW g109.0<1,1,1>UW -25W {align1}; 5581988197Sjmcneillshl (1) g109.0<1>UW g109.0<1,1,1>UW 3UW {align1}; 5681988197Sjmcneilladd (1) g109.0<1>UW g109.0<1,1,1>UW 64UW {align1}; 5781988197Sjmcneilljmpi DO_IQ; 5881988197Sjmcneill 59f83768c3SmrgRANG_9_16: 60d0321353Smrgadd (1) g109.0<1>UW g109.0<1,1,1>UW -9W {align1}; 61d0321353Smrgshl (1) g109.0<1>UW g109.0<1,1,1>UW 1UW {align1}; 62d0321353Smrgadd (1) g109.0<1>UW g109.0<1,1,1>UW 10UW {align1}; 63d0321353Smrgjmpi DO_IQ; 641b18d63aSmrg 65d0321353SmrgRANG_17_24: 66a450e446Smrgadd (1) g109.0<1>UW g109.0<1,1,1>UW -17W {align1}; 67a450e446Smrgshl (1) g109.0<1>UW g109.0<1,1,1>UW 2UW {align1}; 68a450e446Smrgadd (1) g109.0<1>UW g109.0<1,1,1>UW 28UW {align1}; 69a450e446Smrgjmpi DO_IQ; 7081988197Sjmcneill 7181988197SjmcneillQ_SCALE_TYPE_0: 7281988197Sjmcneillshl (1) g109.0<1>UW g109.0<1,1,1>UW 1UD {align1}; 73d0321353Smrg 74d0321353SmrgDO_IQ: 75d0321353Smrgmov (1) g110.0<1>UW g109.0<1,1,1>UW {align1}; 76d0321353Smrg 77d0321353Smrgmov (16) g112.0<1>UW g3.0<16,16,1>UB {align1}; 78d0321353Smrgmov (16) g113.0<1>UW g3.16<16,16,1>UB {align1}; 79b4b94579Smrgmov (16) g114.0<1>UW g4.0<16,16,1>UB {align1}; 80b4b94579Smrgmov (16) g115.0<1>UW g4.16<16,16,1>UB {align1}; 81b4b94579Smrg 82b4b94579Smrgmov (1) a0.0<1>UD 0x03F003E0UD {align1}; 83b4b94579Smrg 84b4b94579Smrg//Y0 85b4b94579Smrgiq_non_intra_y0: 86b4b94579Smrgand.z (1) null g82.8<1,1,1>UW 0x800UW {align1}; 87b4b94579Smrg(f0) jmpi iq_non_intra_y1; 88b4b94579Smrgmov (1) g125.0<1>UD ip {align1}; 89d0321353Smrgjmpi DO_IQ_NON_INTRA; 90317c648bSmrgmov (16) g56.0<1>W g116.0<16,8,2>W {align1}; 91b4b94579Smrgmov (16) g57.0<1>W g118.0<16,8,2>W {align1}; 92b4b94579Smrgmov (16) g58.0<1>W g120.0<16,8,2>W {align1}; 93d0321353Smrgmov (16) g59.0<1>W g122.0<16,8,2>W {align1}; 94d0321353Smrg 95d0321353Smrg//Y1 961b18d63aSmrgiq_non_intra_y1: 97d0321353Smrgand.z (1) null g82.8<1,1,1>UW 0x400UW {align1}; 98d0321353Smrg(f0) jmpi iq_non_intra_y2; 99dc259aabSmrgmov (1) g125.0<1>UD ip {align1}; 100d0321353Smrgjmpi DO_IQ_NON_INTRA; 101dc259aabSmrgmov (16) g60.0<1>W g116.0<16,8,2>W {align1}; 102dc259aabSmrgmov (16) g61.0<1>W g118.0<16,8,2>W {align1}; 103a450e446Smrgmov (16) g62.0<1>W g120.0<16,8,2>W {align1}; 104d0321353Smrgmov (16) g63.0<1>W g122.0<16,8,2>W {align1}; 105d0321353Smrg 106d0321353Smrg//Y2 107d0321353Smrgiq_non_intra_y2: 108d0321353Smrgand.z (1) null g82.8<1,1,1>UW 0x200UW {align1}; 109d0321353Smrg(f0) jmpi iq_non_intra_y3; 110d0321353Smrgmov (1) g125.0<1>UD ip {align1}; 111d0321353Smrgjmpi DO_IQ_NON_INTRA; 112d0321353Smrgmov (16) g64.0<1>W g116.0<16,8,2>W {align1}; 113d0321353Smrgmov (16) g65.0<1>W g118.0<16,8,2>W {align1}; 114dc259aabSmrgmov (16) g66.0<1>W g120.0<16,8,2>W {align1}; 115dc259aabSmrgmov (16) g67.0<1>W g122.0<16,8,2>W {align1}; 116d0321353Smrg 117952204abSmrg//Y3 118952204abSmrgiq_non_intra_y3: 119952204abSmrgand.z (1) null g82.8<1,1,1>UW 0x100UW {align1}; 120b4b94579Smrg(f0) jmpi iq_non_intra_u; 121b4b94579Smrgmov (1) g125.0<1>UD ip {align1}; 122b4b94579Smrgjmpi DO_IQ_NON_INTRA; 123b4b94579Smrgmov (16) g68.0<1>W g116.0<16,8,2>W {align1}; 1241b18d63aSmrgmov (16) g69.0<1>W g118.0<16,8,2>W {align1}; 125952204abSmrgmov (16) g70.0<1>W g120.0<16,8,2>W {align1}; 12681988197Sjmcneillmov (16) g71.0<1>W g122.0<16,8,2>W {align1}; 127952204abSmrg 12881988197Sjmcneill//U 129b4b94579Smrgiq_non_intra_u: 130b4b94579Smrgand.z (1) null g82.8<1,1,1>UW 0x80UW {align1}; 131b4b94579Smrg(f0) jmpi iq_non_intra_v; 132b4b94579Smrgmov (1) g125.0<1>UD ip {align1}; 1331b18d63aSmrgjmpi DO_IQ_NON_INTRA; 134d0321353Smrgmov (16) g72.0<1>W g116.0<16,8,2>W {align1}; 135d0321353Smrgmov (16) g73.0<1>W g118.0<16,8,2>W {align1}; 136b4b94579Smrgmov (16) g74.0<1>W g120.0<16,8,2>W {align1}; 137b4b94579Smrgmov (16) g75.0<1>W g122.0<16,8,2>W {align1}; 138b4b94579Smrg 139b4b94579Smrg//V 140d0321353Smrgiq_non_intra_v: 141d0321353Smrgand.z (1) null g82.8<1,1,1>UW 0x40UW {align1}; 142d0321353Smrg(f0) jmpi iq_non_intra_end; 143b4b94579Smrgmov (1) g125.0<1>UD ip {align1}; 144b4b94579Smrgjmpi DO_IQ_NON_INTRA; 145b4b94579Smrgmov (16) g76.0<1>W g116.0<16,8,2>W {align1}; 146b4b94579Smrgmov (16) g77.0<1>W g118.0<16,8,2>W {align1}; 147b4b94579Smrgmov (16) g78.0<1>W g120.0<16,8,2>W {align1}; 148b4b94579Smrgmov (16) g79.0<1>W g122.0<16,8,2>W {align1}; 149b4b94579Smrg 150b4b94579Smrgiq_non_intra_end: 151b4b94579Smrg