1bf215546Sopenharmony_ci/** 2bf215546Sopenharmony_ci * Copyright (C) 2010 Jorge Jimenez (jorge@iryoku.com) 3bf215546Sopenharmony_ci * Copyright (C) 2010 Belen Masia (bmasia@unizar.es) 4bf215546Sopenharmony_ci * Copyright (C) 2010 Jose I. Echevarria (joseignacioechevarria@gmail.com) 5bf215546Sopenharmony_ci * Copyright (C) 2010 Fernando Navarro (fernandn@microsoft.com) 6bf215546Sopenharmony_ci * Copyright (C) 2010 Diego Gutierrez (diegog@unizar.es) 7bf215546Sopenharmony_ci * Copyright (C) 2011 Lauri Kasanen (cand@gmx.com) 8bf215546Sopenharmony_ci * All rights reserved. 9bf215546Sopenharmony_ci * 10bf215546Sopenharmony_ci * Redistribution and use in source and binary forms, with or without 11bf215546Sopenharmony_ci * modification, are permitted provided that the following conditions are met: 12bf215546Sopenharmony_ci * 13bf215546Sopenharmony_ci * 1. Redistributions of source code must retain the above copyright notice, 14bf215546Sopenharmony_ci * this list of conditions and the following disclaimer. 15bf215546Sopenharmony_ci * 16bf215546Sopenharmony_ci * 2. Redistributions in binary form must reproduce the following statement: 17bf215546Sopenharmony_ci * 18bf215546Sopenharmony_ci * "Uses Jimenez's MLAA. Copyright (C) 2010 by Jorge Jimenez, Belen Masia, 19bf215546Sopenharmony_ci * Jose I. Echevarria, Fernando Navarro and Diego Gutierrez." 20bf215546Sopenharmony_ci * 21bf215546Sopenharmony_ci * Only for use in the Mesa project, this point 2 is filled by naming the 22bf215546Sopenharmony_ci * technique Jimenez's MLAA in the Mesa config options. 23bf215546Sopenharmony_ci * 24bf215546Sopenharmony_ci * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS 25bf215546Sopenharmony_ci * IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 26bf215546Sopenharmony_ci * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 27bf215546Sopenharmony_ci * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS OR CONTRIBUTORS 28bf215546Sopenharmony_ci * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 29bf215546Sopenharmony_ci * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 30bf215546Sopenharmony_ci * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 31bf215546Sopenharmony_ci * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 32bf215546Sopenharmony_ci * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 33bf215546Sopenharmony_ci * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 34bf215546Sopenharmony_ci * POSSIBILITY OF SUCH DAMAGE. 35bf215546Sopenharmony_ci * 36bf215546Sopenharmony_ci * The views and conclusions contained in the software and documentation are 37bf215546Sopenharmony_ci * those of the authors and should not be interpreted as representing official 38bf215546Sopenharmony_ci * policies, either expressed or implied, of the copyright holders. 39bf215546Sopenharmony_ci */ 40bf215546Sopenharmony_ci 41bf215546Sopenharmony_ci#ifndef PP_MLAA_H 42bf215546Sopenharmony_ci#define PP_MLAA_H 43bf215546Sopenharmony_ci 44bf215546Sopenharmony_ci#include "postprocess/pp_mlaa_areamap.h" 45bf215546Sopenharmony_ci 46bf215546Sopenharmony_cistatic const char depth1fs[] = "FRAG\n" 47bf215546Sopenharmony_ci "PROPERTY FS_COLOR0_WRITES_ALL_CBUFS 1\n" 48bf215546Sopenharmony_ci "DCL IN[0], GENERIC[0], PERSPECTIVE\n" 49bf215546Sopenharmony_ci "DCL IN[1], GENERIC[10], PERSPECTIVE\n" 50bf215546Sopenharmony_ci "DCL IN[2], GENERIC[11], PERSPECTIVE\n" 51bf215546Sopenharmony_ci "DCL OUT[0], COLOR\n" 52bf215546Sopenharmony_ci "DCL SAMP[0]\n" 53bf215546Sopenharmony_ci "DCL SVIEW[0], 2D, FLOAT\n" 54bf215546Sopenharmony_ci "DCL TEMP[0..2]\n" 55bf215546Sopenharmony_ci "IMM FLT32 { 0.0030, 0.0000, 1.0000, 0.0000}\n" 56bf215546Sopenharmony_ci " 0: TEX TEMP[0].x, IN[1].xyyy, SAMP[0], 2D\n" 57bf215546Sopenharmony_ci " 1: MOV TEMP[1].x, TEMP[0].xxxx\n" 58bf215546Sopenharmony_ci " 2: TEX TEMP[0].x, IN[1].zwww, SAMP[0], 2D\n" 59bf215546Sopenharmony_ci " 3: MOV TEMP[1].y, TEMP[0].xxxx\n" 60bf215546Sopenharmony_ci " 4: TEX TEMP[0].x, IN[2].xyyy, SAMP[0], 2D\n" 61bf215546Sopenharmony_ci " 5: MOV TEMP[1].z, TEMP[0].xxxx\n" 62bf215546Sopenharmony_ci " 6: TEX TEMP[0].x, IN[2].zwww, SAMP[0], 2D\n" 63bf215546Sopenharmony_ci " 7: MOV TEMP[1].w, TEMP[0].xxxx\n" 64bf215546Sopenharmony_ci " 8: TEX TEMP[0].x, IN[0].xyyy, SAMP[0], 2D\n" 65bf215546Sopenharmony_ci " 9: ADD TEMP[2], TEMP[0].xxxx, -TEMP[1]\n" 66bf215546Sopenharmony_ci " 10: MOV TEMP[0], |TEMP[2]|\n" 67bf215546Sopenharmony_ci " 11: SGE TEMP[2], TEMP[0], IMM[0].xxxx\n" 68bf215546Sopenharmony_ci " 12: DP4 TEMP[0].x, TEMP[2], IMM[0].zzzz\n" 69bf215546Sopenharmony_ci " 13: SEQ TEMP[1].x, TEMP[0].xxxx, IMM[0].yyyy\n" 70bf215546Sopenharmony_ci " 14: IF TEMP[1].xxxx :16\n" 71bf215546Sopenharmony_ci " 15: KILL\n" 72bf215546Sopenharmony_ci " 16: ENDIF\n" 73bf215546Sopenharmony_ci " 17: MOV OUT[0], TEMP[2]\n" 74bf215546Sopenharmony_ci " 18: END\n"; 75bf215546Sopenharmony_ci 76bf215546Sopenharmony_ci 77bf215546Sopenharmony_cistatic const char color1fs[] = "FRAG\n" 78bf215546Sopenharmony_ci "PROPERTY FS_COLOR0_WRITES_ALL_CBUFS 1\n" 79bf215546Sopenharmony_ci "DCL IN[0], GENERIC[0], PERSPECTIVE\n" 80bf215546Sopenharmony_ci "DCL IN[1], GENERIC[10], PERSPECTIVE\n" 81bf215546Sopenharmony_ci "DCL IN[2], GENERIC[11], PERSPECTIVE\n" 82bf215546Sopenharmony_ci "DCL OUT[0], COLOR\n" 83bf215546Sopenharmony_ci "DCL SAMP[0]\n" 84bf215546Sopenharmony_ci "DCL SVIEW[0], 2D, FLOAT\n" 85bf215546Sopenharmony_ci "DCL TEMP[0..2]\n" 86bf215546Sopenharmony_ci "IMM FLT32 { 0.2126, 0.7152, 0.0722, 0.1000}\n" 87bf215546Sopenharmony_ci "IMM FLT32 { 1.0000, 0.0000, 0.0000, 0.0000}\n" 88bf215546Sopenharmony_ci " 0: TEX TEMP[1].xyz, IN[1].xyyy, SAMP[0], 2D\n" 89bf215546Sopenharmony_ci " 1: DP3 TEMP[0].x, TEMP[1].xyzz, IMM[0]\n" 90bf215546Sopenharmony_ci " 2: TEX TEMP[1].xyz, IN[1].zwww, SAMP[0], 2D\n" 91bf215546Sopenharmony_ci " 3: DP3 TEMP[0].y, TEMP[1].xyzz, IMM[0].xyzz\n" 92bf215546Sopenharmony_ci " 4: TEX TEMP[1].xyz, IN[2].xyyy, SAMP[0], 2D\n" 93bf215546Sopenharmony_ci " 5: DP3 TEMP[0].z, TEMP[1].xyzz, IMM[0].xyzz\n" 94bf215546Sopenharmony_ci " 6: TEX TEMP[1].xyz, IN[2].zwww, SAMP[0], 2D\n" 95bf215546Sopenharmony_ci " 7: DP3 TEMP[0].w, TEMP[1].xyzz, IMM[0].xyzz\n" 96bf215546Sopenharmony_ci " 8: TEX TEMP[1].xyz, IN[0].xyyy, SAMP[0], 2D\n" 97bf215546Sopenharmony_ci " 9: DP3 TEMP[2].x, TEMP[1].xyzz, IMM[0].xyzz\n" 98bf215546Sopenharmony_ci " 10: ADD TEMP[1], TEMP[2].xxxx, -TEMP[0]\n" 99bf215546Sopenharmony_ci " 11: MOV TEMP[0], |TEMP[1]|\n" 100bf215546Sopenharmony_ci " 12: SGE TEMP[2], TEMP[0], IMM[0].wwww\n" 101bf215546Sopenharmony_ci " 13: DP4 TEMP[0].x, TEMP[2], IMM[1].xxxx\n" 102bf215546Sopenharmony_ci " 14: SEQ TEMP[1].x, TEMP[0].xxxx, IMM[1].yyyy\n" 103bf215546Sopenharmony_ci " 15: IF TEMP[1].xxxx :17\n" 104bf215546Sopenharmony_ci " 16: KILL\n" 105bf215546Sopenharmony_ci " 17: ENDIF\n" 106bf215546Sopenharmony_ci " 18: MOV OUT[0], TEMP[2]\n" 107bf215546Sopenharmony_ci " 19: END\n"; 108bf215546Sopenharmony_ci 109bf215546Sopenharmony_ci 110bf215546Sopenharmony_cistatic const char neigh3fs[] = "FRAG\n" 111bf215546Sopenharmony_ci "PROPERTY FS_COLOR0_WRITES_ALL_CBUFS 1\n" 112bf215546Sopenharmony_ci "DCL IN[0], GENERIC[0], PERSPECTIVE\n" 113bf215546Sopenharmony_ci "DCL IN[1], GENERIC[10], PERSPECTIVE\n" 114bf215546Sopenharmony_ci "DCL IN[2], GENERIC[11], PERSPECTIVE\n" 115bf215546Sopenharmony_ci "DCL OUT[0], COLOR\n" 116bf215546Sopenharmony_ci "DCL SAMP[0]\n" 117bf215546Sopenharmony_ci "DCL SVIEW[0], 2D, FLOAT\n" 118bf215546Sopenharmony_ci "DCL SAMP[1]\n" 119bf215546Sopenharmony_ci "DCL TEMP[0..8]\n" 120bf215546Sopenharmony_ci "IMM FLT32 { 1.0000, 0.00001, 0.0000, 0.0000}\n" 121bf215546Sopenharmony_ci " 0: TEX TEMP[0], IN[0].xyyy, SAMP[1], 2D\n" 122bf215546Sopenharmony_ci " 1: MOV TEMP[1].x, TEMP[0].xxxx\n" 123bf215546Sopenharmony_ci " 2: TEX TEMP[2].y, IN[2].zwww, SAMP[1], 2D\n" 124bf215546Sopenharmony_ci " 3: MOV TEMP[1].y, TEMP[2].yyyy\n" 125bf215546Sopenharmony_ci " 4: MOV TEMP[1].z, TEMP[0].zzzz\n" 126bf215546Sopenharmony_ci " 5: TEX TEMP[1].w, IN[2].xyyy, SAMP[1], 2D\n" 127bf215546Sopenharmony_ci " 6: MUL TEMP[4], TEMP[1], TEMP[1]\n" 128bf215546Sopenharmony_ci " 7: MUL TEMP[5], TEMP[4], TEMP[1]\n" 129bf215546Sopenharmony_ci " 8: DP4 TEMP[1].x, TEMP[5], IMM[0].xxxx\n" 130bf215546Sopenharmony_ci " 9: SLT TEMP[4].x, TEMP[1].xxxx, IMM[0].yyyy\n" 131bf215546Sopenharmony_ci " 10: IF TEMP[4].xxxx :12\n" 132bf215546Sopenharmony_ci " 11: KILL\n" 133bf215546Sopenharmony_ci " 12: ENDIF\n" 134bf215546Sopenharmony_ci " 13: TEX TEMP[4], IN[0].xyyy, SAMP[0], 2D\n" 135bf215546Sopenharmony_ci " 14: TEX TEMP[6], IN[1].zwww, SAMP[0], 2D\n" 136bf215546Sopenharmony_ci " 15: ADD TEMP[7].x, IMM[0].xxxx, -TEMP[0].xxxx\n" 137bf215546Sopenharmony_ci " 16: MUL TEMP[8], TEMP[4], TEMP[7].xxxx\n" 138bf215546Sopenharmony_ci " 17: MAD TEMP[7], TEMP[6], TEMP[0].xxxx, TEMP[8]\n" 139bf215546Sopenharmony_ci " 18: MUL TEMP[6], TEMP[7], TEMP[5].xxxx\n" 140bf215546Sopenharmony_ci " 19: TEX TEMP[7], IN[2].zwww, SAMP[0], 2D\n" 141bf215546Sopenharmony_ci " 20: ADD TEMP[8].x, IMM[0].xxxx, -TEMP[2].yyyy\n" 142bf215546Sopenharmony_ci " 21: MUL TEMP[3], TEMP[4], TEMP[8].xxxx\n" 143bf215546Sopenharmony_ci " 22: MAD TEMP[8], TEMP[7], TEMP[2].yyyy, TEMP[3]\n" 144bf215546Sopenharmony_ci " 23: MAD TEMP[2], TEMP[8], TEMP[5].yyyy, TEMP[6]\n" 145bf215546Sopenharmony_ci " 24: TEX TEMP[6], IN[1].xyyy, SAMP[0], 2D\n" 146bf215546Sopenharmony_ci " 25: ADD TEMP[7].x, IMM[0].xxxx, -TEMP[0].zzzz\n" 147bf215546Sopenharmony_ci " 26: MUL TEMP[8], TEMP[4], TEMP[7].xxxx\n" 148bf215546Sopenharmony_ci " 27: MAD TEMP[7], TEMP[6], TEMP[0].zzzz, TEMP[8]\n" 149bf215546Sopenharmony_ci " 28: MAD TEMP[0], TEMP[7], TEMP[5].zzzz, TEMP[2]\n" 150bf215546Sopenharmony_ci " 29: TEX TEMP[2], IN[2].xyyy, SAMP[0], 2D\n" 151bf215546Sopenharmony_ci " 30: ADD TEMP[6].x, IMM[0].xxxx, -TEMP[1].wwww\n" 152bf215546Sopenharmony_ci " 31: MUL TEMP[7], TEMP[4], TEMP[6].xxxx\n" 153bf215546Sopenharmony_ci " 32: MAD TEMP[4], TEMP[2], TEMP[1].wwww, TEMP[7]\n" 154bf215546Sopenharmony_ci " 33: MAD TEMP[2], TEMP[4], TEMP[5].wwww, TEMP[0]\n" 155bf215546Sopenharmony_ci " 34: RCP TEMP[0].x, TEMP[1].xxxx\n" 156bf215546Sopenharmony_ci " 35: MUL OUT[0], TEMP[2], TEMP[0].xxxx\n" 157bf215546Sopenharmony_ci " 36: END\n"; 158bf215546Sopenharmony_ci 159bf215546Sopenharmony_ci 160bf215546Sopenharmony_cistatic const char offsetvs[] = "VERT\n" 161bf215546Sopenharmony_ci "DCL IN[0]\n" 162bf215546Sopenharmony_ci "DCL IN[1]\n" 163bf215546Sopenharmony_ci "DCL OUT[0], POSITION\n" 164bf215546Sopenharmony_ci "DCL OUT[1], GENERIC[0]\n" 165bf215546Sopenharmony_ci "DCL OUT[2], GENERIC[10]\n" 166bf215546Sopenharmony_ci "DCL OUT[3], GENERIC[11]\n" 167bf215546Sopenharmony_ci "DCL CONST[0][0]\n" 168bf215546Sopenharmony_ci "IMM FLT32 { 1.0000, 0.0000, -1.0000, 0.0000}\n" 169bf215546Sopenharmony_ci " 0: MOV OUT[0], IN[0]\n" 170bf215546Sopenharmony_ci " 1: MOV OUT[1], IN[1]\n" 171bf215546Sopenharmony_ci " 2: MAD OUT[2], CONST[0][0].xyxy, IMM[0].zyyz, IN[1].xyxy\n" 172bf215546Sopenharmony_ci " 3: MAD OUT[3], CONST[0][0].xyxy, IMM[0].xyyx, IN[1].xyxy\n" 173bf215546Sopenharmony_ci " 4: END\n"; 174bf215546Sopenharmony_ci 175bf215546Sopenharmony_ci 176bf215546Sopenharmony_cistatic const char blend2fs_1[] = "FRAG\n" 177bf215546Sopenharmony_ci "PROPERTY FS_COLOR0_WRITES_ALL_CBUFS 1\n" 178bf215546Sopenharmony_ci "DCL IN[0], GENERIC[0], PERSPECTIVE\n" 179bf215546Sopenharmony_ci "DCL OUT[0], COLOR\n" 180bf215546Sopenharmony_ci "DCL SAMP[0]\n" 181bf215546Sopenharmony_ci "DCL SVIEW[0], 2D, FLOAT\n" 182bf215546Sopenharmony_ci "DCL SAMP[1]\n" 183bf215546Sopenharmony_ci "DCL SVIEW[1], 2D, FLOAT\n" 184bf215546Sopenharmony_ci "DCL SAMP[2]\n" 185bf215546Sopenharmony_ci "DCL SVIEW[2], 2D, FLOAT\n" 186bf215546Sopenharmony_ci "DCL CONST[0][0]\n" 187bf215546Sopenharmony_ci "DCL TEMP[0..6]\n" 188bf215546Sopenharmony_ci "IMM FLT32 { 0.0000, -0.2500, 0.00609756, 0.5000}\n" 189bf215546Sopenharmony_ci "IMM FLT32 { -1.5000, -2.0000, 0.9000, 1.5000}\n" 190bf215546Sopenharmony_ci "IMM FLT32 { 2.0000, 1.0000, 4.0000, 33.0000}\n"; 191bf215546Sopenharmony_ci 192bf215546Sopenharmony_cistatic const char blend2fs_2[] = 193bf215546Sopenharmony_ci " 0: MOV TEMP[0], IMM[0].xxxx\n" 194bf215546Sopenharmony_ci " 1: TEX TEMP[1], IN[0].xyyy, SAMP[1], 2D\n" 195bf215546Sopenharmony_ci " 2: MOV TEMP[2].x, TEMP[1]\n" 196bf215546Sopenharmony_ci " 3: SNE TEMP[3].x, TEMP[1].yyyy, IMM[0].xxxx\n" 197bf215546Sopenharmony_ci " 4: IF TEMP[3].xxxx :76\n" 198bf215546Sopenharmony_ci " 5: MOV TEMP[1].xy, IN[0].xyxx\n" 199bf215546Sopenharmony_ci " 6: MOV TEMP[4].x, IMM[1].xxxx\n" 200bf215546Sopenharmony_ci " 7: BGNLOOP :24\n" 201bf215546Sopenharmony_ci " 8: MUL TEMP[5].x, IMM[1].yyyy, IMM[3].xxxx\n" 202bf215546Sopenharmony_ci " 9: SLE TEMP[6].x, TEMP[4].xxxx, TEMP[5].xxxx\n" 203bf215546Sopenharmony_ci " 10: IF TEMP[6].xxxx :12\n" 204bf215546Sopenharmony_ci " 11: BRK\n" 205bf215546Sopenharmony_ci " 12: ENDIF\n" 206bf215546Sopenharmony_ci " 13: MOV TEMP[4].y, IMM[0].xxxx\n" 207bf215546Sopenharmony_ci " 14: MAD TEMP[3].xyz, CONST[0][0].xyyy, TEMP[4].xyyy, TEMP[1].xyyy\n" 208bf215546Sopenharmony_ci " 15: MOV TEMP[3].w, IMM[0].xxxx\n" 209bf215546Sopenharmony_ci " 16: TXL TEMP[5], TEMP[3], SAMP[2], 2D\n" 210bf215546Sopenharmony_ci " 17: MOV TEMP[3].x, TEMP[5].yyyy\n" 211bf215546Sopenharmony_ci " 18: SLT TEMP[6].x, TEMP[5].yyyy, IMM[1].zzzz\n" 212bf215546Sopenharmony_ci " 19: IF TEMP[6].xxxx :21\n" 213bf215546Sopenharmony_ci " 20: BRK\n" 214bf215546Sopenharmony_ci " 21: ENDIF\n" 215bf215546Sopenharmony_ci " 22: ADD TEMP[6].x, TEMP[4].xxxx, IMM[1].yyyy\n" 216bf215546Sopenharmony_ci " 23: MOV TEMP[4].x, TEMP[6].xxxx\n" 217bf215546Sopenharmony_ci " 24: ENDLOOP :7\n" 218bf215546Sopenharmony_ci " 25: ADD TEMP[1].x, TEMP[4].xxxx, IMM[1].wwww\n" 219bf215546Sopenharmony_ci " 26: MAD TEMP[6].x, -IMM[2].xxxx, TEMP[3].xxxx, TEMP[1].xxxx\n" 220bf215546Sopenharmony_ci " 27: MUL TEMP[1].x, IMM[1].yyyy, IMM[3].xxxx\n" 221bf215546Sopenharmony_ci " 28: MAX TEMP[4].x, TEMP[6].xxxx, TEMP[1].xxxx\n" 222bf215546Sopenharmony_ci " 29: MOV TEMP[1].x, TEMP[4].xxxx\n" 223bf215546Sopenharmony_ci " 30: MOV TEMP[3].xy, IN[0].xyxx\n" 224bf215546Sopenharmony_ci " 31: MOV TEMP[5].x, IMM[1].wwww\n" 225bf215546Sopenharmony_ci " 32: BGNLOOP :49\n" 226bf215546Sopenharmony_ci " 33: MUL TEMP[6].x, IMM[2].xxxx, IMM[3].xxxx\n" 227bf215546Sopenharmony_ci " 34: SGE TEMP[4].x, TEMP[5].xxxx, TEMP[6].xxxx\n" 228bf215546Sopenharmony_ci " 35: IF TEMP[4].xxxx :37\n" 229bf215546Sopenharmony_ci " 36: BRK\n" 230bf215546Sopenharmony_ci " 37: ENDIF\n" 231bf215546Sopenharmony_ci " 38: MOV TEMP[5].y, IMM[0].xxxx\n" 232bf215546Sopenharmony_ci " 39: MAD TEMP[4].xyz, CONST[0][0].xyyy, TEMP[5].xyyy, TEMP[3].xyyy\n" 233bf215546Sopenharmony_ci " 40: MOV TEMP[4].w, IMM[0].xxxx\n" 234bf215546Sopenharmony_ci " 41: TXL TEMP[6].xy, TEMP[4], SAMP[2], 2D\n" 235bf215546Sopenharmony_ci " 42: MOV TEMP[4].x, TEMP[6].yyyy\n" 236bf215546Sopenharmony_ci " 43: SLT TEMP[0].x, TEMP[6].yyyy, IMM[1].zzzz\n" 237bf215546Sopenharmony_ci " 44: IF TEMP[0].xxxx :46\n" 238bf215546Sopenharmony_ci " 45: BRK\n" 239bf215546Sopenharmony_ci " 46: ENDIF\n" 240bf215546Sopenharmony_ci " 47: ADD TEMP[6].x, TEMP[5].xxxx, IMM[2].xxxx\n" 241bf215546Sopenharmony_ci " 48: MOV TEMP[5].x, TEMP[6].xxxx\n" 242bf215546Sopenharmony_ci " 49: ENDLOOP :32\n" 243bf215546Sopenharmony_ci " 50: ADD TEMP[3].x, TEMP[5].xxxx, IMM[1].xxxx\n" 244bf215546Sopenharmony_ci " 51: MAD TEMP[5].x, IMM[2].xxxx, TEMP[4].xxxx, TEMP[3].xxxx\n" 245bf215546Sopenharmony_ci " 52: MUL TEMP[3].x, IMM[2].xxxx, IMM[3].xxxx\n" 246bf215546Sopenharmony_ci " 53: MIN TEMP[4].x, TEMP[5].xxxx, TEMP[3].xxxx\n" 247bf215546Sopenharmony_ci " 54: MOV TEMP[3].x, TEMP[1].xxxx\n" 248bf215546Sopenharmony_ci " 55: MOV TEMP[3].y, TEMP[4].xxxx\n" 249bf215546Sopenharmony_ci " 56: MOV TEMP[5].yw, IMM[0].yyyy\n" 250bf215546Sopenharmony_ci " 57: MOV TEMP[5].x, TEMP[1].xxxx\n" 251bf215546Sopenharmony_ci " 58: ADD TEMP[1].x, TEMP[4].xxxx, IMM[2].yyyy\n" 252bf215546Sopenharmony_ci " 59: MOV TEMP[5].z, TEMP[1].xxxx\n" 253bf215546Sopenharmony_ci " 60: MAD TEMP[1], TEMP[5], CONST[0][0].xyxy, IN[0].xyxy\n" 254bf215546Sopenharmony_ci " 61: MOV TEMP[4], TEMP[1].xyyy\n" 255bf215546Sopenharmony_ci " 62: MOV TEMP[4].w, IMM[0].xxxx\n" 256bf215546Sopenharmony_ci " 63: TXL TEMP[5].x, TEMP[4], SAMP[2], 2D\n" 257bf215546Sopenharmony_ci " 64: MOV TEMP[4].x, TEMP[5].xxxx\n" 258bf215546Sopenharmony_ci " 65: MOV TEMP[5], TEMP[1].zwww\n" 259bf215546Sopenharmony_ci " 66: MOV TEMP[5].w, IMM[0].xxxx\n" 260bf215546Sopenharmony_ci " 67: TXL TEMP[1].x, TEMP[5], SAMP[2], 2D\n" 261bf215546Sopenharmony_ci " 68: MOV TEMP[4].y, TEMP[1].xxxx\n" 262bf215546Sopenharmony_ci " 69: MUL TEMP[5].xy, IMM[2].zzzz, TEMP[4].xyyy\n" 263bf215546Sopenharmony_ci " 70: ROUND TEMP[1].xy, TEMP[5].xyyy\n" 264bf215546Sopenharmony_ci " 71: MOV TEMP[4].xy, |TEMP[3].xyyy|\n" 265bf215546Sopenharmony_ci " 72: MAD TEMP[3].xy, IMM[2].wwww, TEMP[1].xyyy, TEMP[4].xyyy\n" 266bf215546Sopenharmony_ci " 73: MUL TEMP[5].xyz, TEMP[3].xyyy, IMM[0].zzzz\n" 267bf215546Sopenharmony_ci " 74: MOV TEMP[5].w, IMM[0].xxxx\n" 268bf215546Sopenharmony_ci " 75: TXL TEMP[0].xy, TEMP[5], SAMP[0], 2D\n" 269bf215546Sopenharmony_ci " 76: ENDIF\n" 270bf215546Sopenharmony_ci " 77: SNE TEMP[1].x, TEMP[2].xxxx, IMM[0].xxxx\n" 271bf215546Sopenharmony_ci " 78: IF TEMP[1].xxxx :151\n" 272bf215546Sopenharmony_ci " 79: MOV TEMP[1].xy, IN[0].xyxx\n" 273bf215546Sopenharmony_ci " 80: MOV TEMP[3].x, IMM[1].xxxx\n" 274bf215546Sopenharmony_ci " 81: BGNLOOP :98\n" 275bf215546Sopenharmony_ci " 82: MUL TEMP[4].x, IMM[1].yyyy, IMM[3].xxxx\n" 276bf215546Sopenharmony_ci " 83: SLE TEMP[5].x, TEMP[3].xxxx, TEMP[4].xxxx\n" 277bf215546Sopenharmony_ci " 84: IF TEMP[5].xxxx :86\n" 278bf215546Sopenharmony_ci " 85: BRK\n" 279bf215546Sopenharmony_ci " 86: ENDIF\n" 280bf215546Sopenharmony_ci " 87: MOV TEMP[3].y, IMM[0].xxxx\n" 281bf215546Sopenharmony_ci " 88: MAD TEMP[5].xyz, CONST[0][0].xyyy, TEMP[3].yxxx, TEMP[1].xyyy\n" 282bf215546Sopenharmony_ci " 89: MOV TEMP[5].w, IMM[0].xxxx\n" 283bf215546Sopenharmony_ci " 90: TXL TEMP[4], TEMP[5], SAMP[2], 2D\n" 284bf215546Sopenharmony_ci " 91: MOV TEMP[2].x, TEMP[4].xxxx\n" 285bf215546Sopenharmony_ci " 92: SLT TEMP[5].x, TEMP[4].xxxx, IMM[1].zzzz\n" 286bf215546Sopenharmony_ci " 93: IF TEMP[5].xxxx :95\n" 287bf215546Sopenharmony_ci " 94: BRK\n" 288bf215546Sopenharmony_ci " 95: ENDIF\n" 289bf215546Sopenharmony_ci " 96: ADD TEMP[4].x, TEMP[3].xxxx, IMM[1].yyyy\n" 290bf215546Sopenharmony_ci " 97: MOV TEMP[3].x, TEMP[4].xxxx\n" 291bf215546Sopenharmony_ci " 98: ENDLOOP :81\n" 292bf215546Sopenharmony_ci " 99: ADD TEMP[1].x, TEMP[3].xxxx, IMM[1].wwww\n" 293bf215546Sopenharmony_ci "100: MAD TEMP[6].x, -IMM[2].xxxx, TEMP[2].xxxx, TEMP[1].xxxx\n" 294bf215546Sopenharmony_ci "101: MUL TEMP[1].x, IMM[1].yyyy, IMM[3].xxxx\n" 295bf215546Sopenharmony_ci "102: MAX TEMP[3].x, TEMP[6].xxxx, TEMP[1].xxxx\n" 296bf215546Sopenharmony_ci "103: MOV TEMP[1].x, TEMP[3].xxxx\n" 297bf215546Sopenharmony_ci "104: MOV TEMP[2].xy, IN[0].xyxx\n" 298bf215546Sopenharmony_ci "105: MOV TEMP[4].x, IMM[1].wwww\n" 299bf215546Sopenharmony_ci "106: BGNLOOP :123\n" 300bf215546Sopenharmony_ci "107: MUL TEMP[5].x, IMM[2].xxxx, IMM[3].xxxx\n" 301bf215546Sopenharmony_ci "108: SGE TEMP[6].x, TEMP[4].xxxx, TEMP[5].xxxx\n" 302bf215546Sopenharmony_ci "109: IF TEMP[6].xxxx :111\n" 303bf215546Sopenharmony_ci "110: BRK\n" 304bf215546Sopenharmony_ci "111: ENDIF\n" 305bf215546Sopenharmony_ci "112: MOV TEMP[4].y, IMM[0].xxxx\n" 306bf215546Sopenharmony_ci "113: MAD TEMP[5].xyz, CONST[0][0].xyyy, TEMP[4].yxxx, TEMP[2].xyyy\n" 307bf215546Sopenharmony_ci "114: MOV TEMP[5].w, IMM[0].xxxx\n" 308bf215546Sopenharmony_ci "115: TXL TEMP[6], TEMP[5], SAMP[2], 2D\n" 309bf215546Sopenharmony_ci "116: MOV TEMP[3].x, TEMP[6].xxxx\n" 310bf215546Sopenharmony_ci "117: SLT TEMP[5].x, TEMP[6].xxxx, IMM[1].zzzz\n" 311bf215546Sopenharmony_ci "118: IF TEMP[5].xxxx :120\n" 312bf215546Sopenharmony_ci "119: BRK\n" 313bf215546Sopenharmony_ci "120: ENDIF\n" 314bf215546Sopenharmony_ci "121: ADD TEMP[6].x, TEMP[4].xxxx, IMM[2].xxxx\n" 315bf215546Sopenharmony_ci "122: MOV TEMP[4].x, TEMP[6].xxxx\n" 316bf215546Sopenharmony_ci "123: ENDLOOP :106\n" 317bf215546Sopenharmony_ci "124: ADD TEMP[2].x, TEMP[4].xxxx, IMM[1].xxxx\n" 318bf215546Sopenharmony_ci "125: MAD TEMP[4].x, IMM[2].xxxx, TEMP[3].xxxx, TEMP[2].xxxx\n" 319bf215546Sopenharmony_ci "126: MUL TEMP[2].x, IMM[2].xxxx, IMM[3].xxxx\n" 320bf215546Sopenharmony_ci "127: MIN TEMP[3].x, TEMP[4].xxxx, TEMP[2].xxxx\n" 321bf215546Sopenharmony_ci "128: MOV TEMP[2].x, TEMP[1].xxxx\n" 322bf215546Sopenharmony_ci "129: MOV TEMP[2].y, TEMP[3].xxxx\n" 323bf215546Sopenharmony_ci "130: MOV TEMP[4].xz, IMM[0].yyyy\n" 324bf215546Sopenharmony_ci "131: MOV TEMP[4].y, TEMP[1].xxxx\n" 325bf215546Sopenharmony_ci "132: ADD TEMP[1].x, TEMP[3].xxxx, IMM[2].yyyy\n" 326bf215546Sopenharmony_ci "133: MOV TEMP[4].w, TEMP[1].xxxx\n" 327bf215546Sopenharmony_ci "134: MAD TEMP[1], TEMP[4], CONST[0][0].xyxy, IN[0].xyxy\n" 328bf215546Sopenharmony_ci "135: MOV TEMP[3], TEMP[1].xyyy\n" 329bf215546Sopenharmony_ci "136: MOV TEMP[3].w, IMM[0].xxxx\n" 330bf215546Sopenharmony_ci "137: TXL TEMP[4].y, TEMP[3], SAMP[2], 2D\n" 331bf215546Sopenharmony_ci "138: MOV TEMP[3].x, TEMP[4].yyyy\n" 332bf215546Sopenharmony_ci "139: MOV TEMP[4], TEMP[1].zwww\n" 333bf215546Sopenharmony_ci "140: MOV TEMP[4].w, IMM[0].xxxx\n" 334bf215546Sopenharmony_ci "141: TXL TEMP[1].y, TEMP[4], SAMP[2], 2D\n" 335bf215546Sopenharmony_ci "142: MOV TEMP[3].y, TEMP[1].yyyy\n" 336bf215546Sopenharmony_ci "143: MUL TEMP[4].xy, IMM[2].zzzz, TEMP[3].xyyy\n" 337bf215546Sopenharmony_ci "144: ROUND TEMP[1].xy, TEMP[4].xyyy\n" 338bf215546Sopenharmony_ci "145: MOV TEMP[3].xy, |TEMP[2].xyyy|\n" 339bf215546Sopenharmony_ci "146: MAD TEMP[2].xy, IMM[2].wwww, TEMP[1].xyyy, TEMP[3].xyyy\n" 340bf215546Sopenharmony_ci "147: MUL TEMP[3].xyz, TEMP[2].xyyy, IMM[0].zzzz\n" 341bf215546Sopenharmony_ci "148: MOV TEMP[3].w, IMM[0].xxxx\n" 342bf215546Sopenharmony_ci "149: TXL TEMP[1].xy, TEMP[3], SAMP[0], 2D\n" 343bf215546Sopenharmony_ci "150: MOV TEMP[0].zw, TEMP[1].yyxy\n" 344bf215546Sopenharmony_ci "151: ENDIF\n" 345bf215546Sopenharmony_ci "152: MOV OUT[0], TEMP[0]\n" 346bf215546Sopenharmony_ci "153: END\n"; 347bf215546Sopenharmony_ci 348bf215546Sopenharmony_ci#endif 349