Install Path: /opt/AfterShot3(64-bit) LD_PATH: /opt/AfterShot3(64-bit)/lib:/usr/local/lib:/usr/local/lib XLIB_SKIP_ARGB_VISUALS: I have SSE2 Loading plugins Loading camera modules from "/opt/AfterShot3(64-bit)/supportfiles/cameras" Loading camera modules from "/home/manfred/.AfterShotPro3/Cameras (64-bit)" Bibble program arguments ("./AfterShot") AfterShot2 Pro New key used. 20 AfterShot2 Pro New key used. 20 AfterShot2 Pro New key used. 20 AfterShot vers.: 3.3.0.234 Built on: "Tue Apr 11 2017" Language: en App Path: /opt/AfterShot3(64-bit)/bin/AfterShot System Home: /opt/AfterShot3(64-bit)/supportfiles User Home: /home/manfred/.AfterShotPro3 Prefs Home: /home/manfred/.config/Corel/AfterShot Pro v3.conf Platform: Linux Issue: "\S" Kernel: "Linux version 4.11.3-202.fc25.x86_64 (mockbuild@bkernel01.phx2.fedoraproject.org) (gcc version 6.3.1 20161221 (Red Hat 6.3.1-1) (GCC) ) #1 SMP Mon Jun 5 16:38:21 UTC 2017" Build Mode: Release Product Name: "AfterShot Pro 3" AfterShot2 Pro New key used. 20 Registered Version AfterShot2 Pro New key used. 20 Initializing Cpu Manager init: 8 **** Making CLManager Got 1 platforms OpenCL is enabled in low mem mode platform 0x7fd359fac720 "Intel" OpenCL Version: "OpenCL 2.0 beignet 1.3" Build options: CL kernel source: __kernel void self_test(__global int *buf) { __local int tmp[3]; tmp[get_local_id(0)] = buf[get_local_id(0)]; barrier(CLK_LOCAL_MEM_FENCE); buf[get_global_id(0)] = tmp[2 - get_local_id(0)] + buf[get_global_id(0)];} .decl_function self_test ## 71 registers ## .decl.dword %0 local_id_0 .decl.dword %1 local_id_1 .decl.dword %2 local_id_2 .decl.dword %3 group_id_0 .decl.dword %4 group_id_1 .decl.dword %5 group_id_2 .decl.dword %6 num_groups_0 .decl.dword %7 num_groups_1 .decl.dword %8 num_groups_2 .decl.dword %9 local_size_0 .decl.dword %10 local_size_1 .decl.dword %11 local_size_2 .decl.dword %12 enqueued_local_size_0 .decl.dword %13 enqueued_local_size_1 .decl.dword %14 enqueued_local_size_2 .decl.dword %15 global_size_0 .decl.dword %16 global_size_1 .decl.dword %17 global_size_2 .decl.dword %18 global_offset_0 .decl.dword %19 global_offset_1 .decl.dword %20 global_offset_2 .decl.dword %21 stack_pointer .decl.qword %22 stack_buffer .decl.word %23 block_ip .decl.dword %24 barrier_id .decl.dword %25 thread_number .decl.dword %26 work_dimension .decl.dword %27 zero .decl.dword %28 one .decl.word %29 retVal .decl.dword %30 dwblockip .decl.qword %31 profiling_buffer_pointer .decl.dword %32 profiling_timestamps0 .decl.dword %33 profiling_timestamps1 .decl.dword %34 profiling_timestamps2 .decl.dword %35 profiling_timestamps3 .decl.dword %36 profiling_timestamps4 .decl.dword %37 threadid .decl.qword %38 constant_addrspace_start .decl.qword %39 stack_size .decl.qword %40 enqueue_buffer_pointer .decl.dword %41 .decl.dword %42 .decl.dword %43 .decl.dword %44 .decl.dword %45 .decl.dword %46 .decl.dword %47 .decl.dword %48 .decl.dword %49 .decl.dword %50 .decl.dword %51 .decl.dword %52 .decl.dword %53 .decl.dword %54 .decl.dword %55 .decl.dword %56 .decl.dword %57 .decl.dword %58 .decl.dword %59 .decl.dword %60 .decl.dword %61 .decl.dword %62 .decl.dword %63 .decl.dword %64 .decl.dword %65 .decl.dword %66 .decl.dword %67 .decl.dword %68 .decl.dword %69 .decl.dword %70 ## 1 input registers ## decl_input.global %41 buf ## 0 output register ## ## 0 pushed register ## 3 blocks ## LABEL $0 LOADI.uint32 %42 4 LABEL $1 LOADI.uint32 %59 4 MUL.int32 %43 %59 %0 ADD.int32 %44 %41 %43 SUB.uint32 %60 %44 %41 LOAD.int32.global.aligned {%45} %60 bti:2 MUL.int32 %46 %59 %0 ADD.int32 %47 %42 %46 LOADI.uint32 %62 0 STORE.int32.local.aligned %47 {%45} bti:254 SYNC.workgroup.local_read.local_write LOADI.uint32 %64 2 SUB.int32 %48 %64 %0 MUL.int32 %49 %59 %48 ADD.int32 %50 %42 %49 LOAD.int32.local.aligned {%51} %50 bti:254 MUL.int32 %52 %3 %12 ADD.int32 %53 %52 %0 ADD.int32 %54 %53 %18 MUL.int32 %55 %59 %54 ADD.int32 %56 %41 %55 SUB.uint32 %69 %56 %41 LOAD.int32.global.aligned {%57} %69 bti:2 ADD.int32 %58 %57 %51 SUB.uint32 %70 %56 %41 STORE.int32.global.aligned %70 {%58} bti:2 LABEL $2 RET .end_function self_test's SELECTION IR begin: WARNING: not completed yet, welcome for the FIX! [0] L0: [2] CMP.le(16) arf : %23<8,8,1>:UW 0x0:UW [4](f0.1) IF(16) : 0:D [6] MOV(1) %42<0>:UD : 0x4:UD [8] L4: [10] ENDIF(16) : 0:D [12] L1: [14] CMP.le(16) arf : %23<8,8,1>:UW 0x1:UW [16](f0.1) MOV(16) %23<1>:UW : 0xffff:UW [18] CMP.eq(16) arf : %23<8,8,1>:UW 0xffff:UW [20](f0.1) JMPI(1) : 0:D [22](f0.1) MOV(16) %23<1>:UW : 0x1:UW [24] MOV(1) %59<0>:UD : 0x4:UD [26] MUL(16) %43<1>:D : %59<0,1,0>:D %0<8,8,1>:UD [28] ADD(16) %44<1>:D : %41<0,1,0>:D %43<8,8,1>:D [30] ADD(16) %60<1>:UD : %44<8,8,1>:UD -%41<0,1,0>:UD [32] UNTYPED_READ(16) %45<1>:UD : %60<8,8,1>:UD 0x2:UD [34] MUL(16) %46<1>:D : %59<0,1,0>:D %0<8,8,1>:UD [36] ADD(16) %47<1>:D : %42<0,1,0>:D %46<8,8,1>:D [38] UNTYPED_WRITE(16) : %47<8,8,1>:UD %45<8,8,1>:UD 0xfe:UD [40] BARRIER(16) %72<1>:F : %71<8,8,1>:UD [42] ADD(16) %48<1>:D : -%0<8,8,1>:D 2:D [44] MUL(16) %49<1>:UD : %48<8,8,1>:UD 0x4:UW [46] ADD(16) %50<1>:D : %42<0,1,0>:D %49<8,8,1>:D [48] UNTYPED_READ(16) %51<1>:UD : %50<8,8,1>:UD 0xfe:UD [50] MUL(1) %52<0>:D : %3<0,1,0>:D %12<0,1,0>:UD [52] ADD(16) %53<1>:D : %52<0,1,0>:D %0<8,8,1>:D [54] ADD(16) %54<1>:D : %53<8,8,1>:D %18<0,1,0>:D [56] MUL(16) %55<1>:UD : %54<8,8,1>:UD 0x4:UW [58] ADD(16) %56<1>:D : %41<0,1,0>:D %55<8,8,1>:D [60] ADD(16) %69<1>:UD : %56<8,8,1>:UD -%41<0,1,0>:UD [62] UNTYPED_READ(16) %57<1>:UD : %69<8,8,1>:UD 0x2:UD [64] ADD(16) %58<1>:D : %57<8,8,1>:D %51<8,8,1>:D [66] ADD(16) %70<1>:UD : %56<8,8,1>:UD -%41<0,1,0>:UD [68] UNTYPED_WRITE(16) : %70<8,8,1>:UD %58<8,8,1>:UD 0x2:UD [70](f0.1) L2: [72](f0.1) EOT(16) : self_test's SELECTION IR end. drm_intel_gem_bo_context_exec() failed: No space left on device Beignet: "Exec event 0x3daf830 error, type is 4592, error staus is -5" device: 0x7fd359fb3c60 "Intel(R) HD Graphics IvyBridge M GT2" ****** Device "Intel(R) HD Graphics IvyBridge M GT2" enabled LDS size 65536 Compute units: 16 Freqency: 1000 Max work items: 512 Max work item sizes: 512 512 512 Device OpenCL Version: OpenCL 1.2 beignet 1.3 Device OpenCL C Version: OpenCL C 1.2 beignet 1.3 Device OpenCL Extensions: cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_byte_addressable_store cl_khr_3d_image_writes cl_khr_image2d_from_buffer cl_khr_depth_images cl_khr_spir cl_khr_icd cl_intel_accelerator cl_intel_subgroups cl_intel_subgroups_short cl_khr_gl_sharing cl_intel_motion_estimation Device Memory: true Zero Copy: false SVM: false ************** ****** Device "Intel(R) HD Graphics IvyBridge M GT2" enabled LDS size 65536 Compute units: 16 Freqency: 1000 Max work items: 512 Max work item sizes: 512 512 512 Device OpenCL Version: OpenCL 1.2 beignet 1.3 Device OpenCL C Version: OpenCL C 1.2 beignet 1.3 Device OpenCL Extensions: cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_byte_addressable_store cl_khr_3d_image_writes cl_khr_image2d_from_buffer cl_khr_depth_images cl_khr_spir cl_khr_icd cl_intel_accelerator cl_intel_subgroups cl_intel_subgroups_short cl_khr_gl_sharing cl_intel_motion_estimation Device Memory: true Zero Copy: false SVM: false ************** tileSize: 512 "MemTotal: 16320464 kB" Memory: 3 ==================================================== Asset: 2147483647 purge ==================================================== Heavy Asset: 2147483647 purge ==================================================== NoiseEngine: 150 purge NoiseEngine: 75 cache (50 min) ==================================================== Histogram: 24 purge Histogram: 12 cache (12 min) ==================================================== PluginData: 9 purge PluginData: 9 cache (8 min) ==================================================== ImageMaster: 600 purge ImageMaster: 300 cache (50 min) ==================================================== NContainer: 2147483647 purge ==================================================== Path: 2147483647 purge Path: 2147483647 cache (2147483647 min) ==================================================== RawData: 25165821 purge ==================================================== UncompressedRawData: 9 purge UncompressedRawData: 9 cache (8 min) ==================================================== Version: 600 purge Version: 300 cache (50 min) ==================================================== PerfectlyClear: 6 purge PerfectlyClear: 4 cache (4 min) ==================================================== TileStack: 24 purge TileStack: 12 cache (12 min) ==================================================== StackTile: 3000 purge Created 163 buffers of 3286400 FALLBACK to 326 tiles ==================================================== BImageTile: 1800 purge ==================================================== BTiledImage: 2147483647 purge ==================================================== RegionImageTile: 3000 purge ==================================================== Allocate Asset manager Option group - "" - already contains an option with name - "TIFFTAG_AFMODE" Option was not registered. Option group - "" - already contains an option with name - "TIFFTAG_FLASHMODE" Option was not registered. Globals: systemhome /opt/AfterShot3(64-bit)/supportfiles Globals: userhome /home/manfred/.AfterShotPro3 ==================== Plugins ===================== Name: Identifier: Version: 1.0.0 Path: Name: Black and White Identifier: com.corel.BlackAndWhite Version: 1.0.0 Path: /plugins/Black and White.afplugin Name: Equalizer Identifier: com.corel.equalizer Version: 1.0.5 Path: /plugins/Equalizer.afplugin ==================================================== load lens IDs from table file: /opt/AfterShot3(64-bit)/supportfiles/Profiles/LensProfiles/profile_canonlenstable.txt load lens IDs from table file: /opt/AfterShot3(64-bit)/supportfiles/Profiles/LensProfiles/profile_nikonlenstable.txt load lens IDs from table file: /opt/AfterShot3(64-bit)/supportfiles/Profiles/LensProfiles/profile_pentaxlenstable.txt load lens IDs from table file: /opt/AfterShot3(64-bit)/supportfiles/Profiles/LensProfiles/profile_minoltalenstable.txt load lens IDs from table file: /opt/AfterShot3(64-bit)/supportfiles/Profiles/LensProfiles/profile_olympuslenstable.txt load lens IDs from table file: /opt/AfterShot3(64-bit)/supportfiles/Profiles/LensProfiles/profile_panasoniclenstable.txt load lens IDs from table file: /opt/AfterShot3(64-bit)/supportfiles/Profiles/LensProfiles/profile_sonylenstable.txt load lens IDs from table file: /opt/AfterShot3(64-bit)/supportfiles/Profiles/LensProfiles/profile_samsunglenstable.txt Couldn't open lens table file: /opt/AfterShot3(64-bit)/supportfiles/Profiles/LensProfiles/profile_fujifilmlenstable.txt LensDB - Loading lens entries from "/opt/AfterShot3(64-bit)/supportfiles/Profiles/LensProfiles/lens-cameras-db.xml" | Cameras found: 546 and updated: 546 | Lens found: 0 and updated: 0 New lens exif id/value info: "18 18 2 2" | "Fujinon XF 18mm f/2 R" added into lookup table: "Fujifilm" New lens exif id/value info: "18 55 2.8 4" | "Fujinon XF 18-55mm f/2.8-4 R LM OIS" added into lookup table: "Fujifilm" New lens exif id/value info: "23 23 1.4 1.4" | "Fujinon XF 23mm f/1.4 R" added into lookup table: "Fujifilm" New lens exif id/value info: "23 23 2 2" | "Fujinon XF 23mm f/2 R WR" added into lookup table: "Fujifilm" New lens exif id/value info: "4 231" | "Tamron 16-300mm f/3.5-6.3 Di II VC PZD B016 Macro" added into lookup table: "Pentax" New lens exif id/value info: "0 18 16" | "Zuiko Digital 60mm f/2.8 Macro" added into lookup table: "Olympus" New lens exif id/value info: "60 60 2.8 2.8" | "Zuiko Digital 60mm f/2.8 Macro" added into lookup table: "Olympus" New lens exif id/value info: "0 34 16" | "Zuiko Digital 25mm f/1.8" added into lookup table: "Olympus" New lens exif id/value info: "25 25 1.8 1.8" | "Zuiko Digital 25mm f/1.8" added into lookup table: "Olympus" New lens exif id/value info: "0 33 16" | "Zuiko Digital ED 14-42mm f/3.5-5.6 EZ" added into lookup table: "Olympus" New lens exif id/value info: "0 7 16" | "M.Zuiko Digital ED 12mm f/2.0" added into lookup table: "Olympus" New lens exif id/value info: "12 12 2 2" | "M.Zuiko Digital ED 12mm f/2.0" added into lookup table: "Olympus" New lens exif id/value info: "0 24 16" | "M.Zuiko Digital ED 75-300mm f/4.8-6.7 II" added into lookup table: "Olympus" New lens exif id/value info: "75 300 4.8 6.7" | "M.Zuiko Digital ED 75-300mm f/4.8-6.7 II" added into lookup table: "Olympus" New lens exif id/value info: "00 54 44 44 0C 0C 00 00" | "Nikkor 35mm f/1.8G" added into lookup table: "Nikon" New lens exif id/value info: "00 54 44 44 0C 0C 00 00" | "Nikkor 35mm f/1.4 AiS" added into lookup table: "Nikon" New lens exif id/value info: "66 40 2D 44 2C 34 6C 02" | "Nikkor 18-300mm f/3.5-6.3G DX ED VR" added into lookup table: "Nikon" New lens exif id/value info: "66 40 2D 44 2C 34 6C 02" | "Nikkor 18-35mm f/3.5-4.5D IF-ED AF Zoom" added into lookup table: "Nikon" New lens exif id/value info: "2 18 16" | "Leica DG Summilux 25mm f/1.4 Asph." added into lookup table: "Olympus" New lens exif id/value info: "25 25 1.4 1.4" | "Leica DG Summilux 25mm f/1.4 Asph." added into lookup table: "Olympus" New lens exif id/value info: "LUMIX G VARIO 12-35/F2.8" | "Lumix G Vario 12-35/f2.8" added into lookup table: "Panasonic" New lens exif id/value info: "4 231" | "smc PENTAX-DA 18-250mm f/3.5-6.3 ED AL [IF]" added into lookup table: "Pentax" LensDB - Loading lens entries from "/opt/AfterShot3(64-bit)/supportfiles/Profiles/LensProfiles/lens-db.xml" | Cameras found: 0 and updated: 0 | Lens found: 1220 and updated: 1220 /home/manfred/.AfterShotPro3/bibbledebug AfterShot2 Pro New key used. 20 Creating main window AfterShot2 Pro New key used. 20 Starting Catalog Manager New Io Asset Mananager DB 0 at version 20 Locking catalog: "/home/manfred/.AfterShotPro3/cache" Locking for station: "{a3f32593-7d07-4492-ba97-a9fa1ee7c341}" "/home/manfred/.AfterShotPro3/cache/aftershot.lock" Previous lock: "{a3f32593-7d07-4492-ba97-a9fa1ee7c341}" Opening DB "/home/manfred/.AfterShotPro3/cache" DB 1 is already up to date AfterShot2 Pro New key used. 20 Scheduled Cache Cleaning CacheReducer removed 0 versions due to age older than QDateTime("2017-05-31 04:43:43.164 CEST Qt::LocalTime") Starting cache cleanup Finished cache cleanup AfterShot2 Pro New key used. 20 Starting Asset Manager AfterShot2 Pro New key used. 20 Starting Memory Manager AfterShot2 Pro New key used. 20 AfterShot2 Pro New key used. 20 AfterShot2 Pro New key used. 20 AfterShot2 Pro New key used. 20 AfterShot2 Pro New key used. 20 AfterShot2 Pro New key used. 20 AfterShot2 Pro New key used. 20 AfterShot2 Pro New key used. 20 AfterShot2 Pro New key used. 20 AfterShot2 Pro New key used. 20 Trying to set copyset shortcut "Ctrl+8" for "Color Correction" Trying to set copyset shortcut "Ctrl+9" for "Exposure" Trying to set copyset shortcut "Ctrl+3" for "GPS Settings" Trying to set copyset shortcut "Ctrl+4" for "IPTC Photographer's Details" Trying to set copyset shortcut "Ctrl+1" for "Metadata and IPTC" Trying to set copyset shortcut "Ctrl+2" for "Metadata, IPTC, and GPS" CL kernel source: #define Kernel16 //#pragma OPENCL EXTENSION cl_amd_printf : enable void pixsort(float *a, float *b) { if (*a > *b) { float tmp = *a; *a = *b; *b = tmp; } } void pixsort2(float2 *a, float2 *b) { float2 t1 = *a; float2 t2 = *b; *a = min(t1, t2); *b = max(t1, t2); } #ifdef Kernel __kernel void rawNoiseKernel(__global float * dst, __global float * src, const unsigned short grx, const unsigned short gry, const float thresh, const float limit, const unsigned int rowWords, const unsigned int doMedian) { int x = get_global_id(0); int y = get_global_id(1); const unsigned int offset = x + y * rowWords; bool isRedBlue = ((y + (grx ^ gry) + x) & 1) != 0; float minv; float maxv; if (isRedBlue) { // is red/blue pixel minv = maxv = src[offset - (2 * rowWords)]; maxv = max(maxv, src[offset - (2 * rowWords) - 2]); minv = min(minv, src[offset - (2 * rowWords) - 2]); maxv = max(maxv, src[offset - (2 * rowWords) + 2]); minv = min(minv, src[offset - (2 * rowWords) + 2]); maxv = max(maxv, src[offset - 2]); minv = min(minv, src[offset - 2]); maxv = max(maxv, src[offset + 2]); minv = min(minv, src[offset + 2]); maxv = max(maxv, src[offset + (2 * rowWords) - 2]); minv = min(minv, src[offset + (2 * rowWords) - 2]); maxv = max(maxv, src[offset + (2 * rowWords)]); minv = min(minv, src[offset + (2 * rowWords)]); maxv = max(maxv, src[offset + (2 * rowWords) + 2]); minv = min(minv, src[offset + (2 * rowWords) + 2]); } else { // is green pixel minv = maxv = src[offset - (2 * rowWords)]; maxv = max(maxv, src[offset - (rowWords) - 1]); minv = min(minv, src[offset - (rowWords) - 1]); maxv = max(maxv, src[offset - (rowWords) + 1]); minv = min(minv, src[offset - (rowWords) + 1]); maxv = max(maxv, src[offset - 2]); minv = min(minv, src[offset - 2]); maxv = max(maxv, src[offset + 2]); minv = min(minv, src[offset + 2]); maxv = max(maxv, src[offset + (rowWords) - 1]); minv = min(minv, src[offset + (rowWords) - 1]); maxv = max(maxv, src[offset + (rowWords) + 1]); minv = min(minv, src[offset + (rowWords) + 1]); maxv = max(maxv, src[offset + (rowWords) + 2]); minv = min(minv, src[offset + (rowWords) + 2]); } dst[offset] = (src[offset] > maxv) ? maxv : src[offset]; dst[offset] = (src[offset] < minv) ? minv : src[offset]; if (doMedian == 0) { dst[offset] = (src[offset] > maxv) ? maxv : src[offset]; dst[offset] = (dst[offset] < minv) ? minv : dst[offset]; return; } else { src[offset] = (src[offset] > maxv) ? maxv : src[offset]; src[offset] = (src[offset] < minv) ? minv : src[offset]; } // median if (isRedBlue) // dont do red/blue, the green pixel will handle them return; float pixels[9]; pixels[0] = src[offset - 2 * rowWords]; pixels[1] = src[offset - rowWords - 1]; pixels[2] = src[offset - rowWords + 1]; pixels[3] = src[offset - 2]; pixels[4] = src[offset]; pixels[5] = src[offset + 2]; pixels[6] = src[offset + rowWords - 1]; pixels[7] = src[offset + rowWords + 1]; pixels[8] = src[offset + 2 * rowWords]; pixsort(&pixels[1], &pixels[2]); pixsort(&pixels[4], &pixels[5]); pixsort(&pixels[7], &pixels[8]); pixsort(&pixels[0], &pixels[1]); pixsort(&pixels[3], &pixels[4]); pixsort(&pixels[6], &pixels[7]); pixsort(&pixels[1], &pixels[2]); pixsort(&pixels[4], &pixels[5]); pixsort(&pixels[7], &pixels[8]); pixsort(&pixels[0], &pixels[3]); pixsort(&pixels[5], &pixels[8]); pixsort(&pixels[4], &pixels[7]); pixsort(&pixels[3], &pixels[6]); pixsort(&pixels[1], &pixels[4]); pixsort(&pixels[2], &pixels[5]); pixsort(&pixels[4], &pixels[7]); pixsort(&pixels[4], &pixels[2]); pixsort(&pixels[6], &pixels[4]); pixsort(&pixels[4], &pixels[2]); // median in 4 pixsort(&pixels[0], &pixels[3]); // min to 0 pixsort(&pixels[5], &pixels[8]); // max to 8 float delta = (pixels[8] - pixels[0]); if (delta < thresh) { if (delta < limit) delta = limit; float blend = delta / thresh; dst[offset] = ((1.0f - blend) * pixels[4]) + (blend * src[offset]); // red/blue pixels[0] = src[offset - 2 * rowWords - 1]; pixels[1] = src[offset - 2 * rowWords + 1]; pixels[2] = src[offset - 2 * rowWords + 3]; pixels[3] = src[offset - 1]; pixels[4] = src[offset + 1]; pixels[5] = src[offset + 3]; pixels[6] = src[offset + 2 * rowWords - 1]; pixels[7] = src[offset + 2 * rowWords + 1]; pixels[8] = src[offset + 2 * rowWords + 3]; pixsort(&pixels[1], &pixels[2]); pixsort(&pixels[4], &pixels[5]); pixsort(&pixels[7], &pixels[8]); pixsort(&pixels[0], &pixels[1]); pixsort(&pixels[3], &pixels[4]); pixsort(&pixels[6], &pixels[7]); pixsort(&pixels[1], &pixels[2]); pixsort(&pixels[4], &pixels[5]); pixsort(&pixels[7], &pixels[8]); pixsort(&pixels[0], &pixels[3]); pixsort(&pixels[5], &pixels[8]); pixsort(&pixels[4], &pixels[7]); pixsort(&pixels[3], &pixels[6]); pixsort(&pixels[1], &pixels[4]); pixsort(&pixels[2], &pixels[5]); pixsort(&pixels[4], &pixels[7]); pixsort(&pixels[4], &pixels[2]); pixsort(&pixels[6], &pixels[4]); pixsort(&pixels[4], &pixels[2]); // median in 4 pixsort(&pixels[0], &pixels[3]); // min to 0 pixsort(&pixels[5], &pixels[8]); // max to 8 delta = (pixels[7] - pixels[0]); if (delta < thresh) { if (delta < limit) delta = limit; float blend = delta / thresh; dst[offset + 1] = ((1.0f - blend) * pixels[4]) + (blend * src[offset + 1]); } } else { dst[offset] = src[offset]; dst[offset + 1] = src[offset + 1]; } } #endif void loadLDS(__local float *pixels, __global float const *src, const int lrp, const int rowPixels, const int size, const int pad, const int globalWidth, const int globalHeight, const int groupId, const int workGroupSize) { const int lsize = lrp * lrp; int srcx = get_group_id(0) * size - pad; int srcy = get_group_id(1) * size - pad; int loadOffset = groupId; while (loadOffset < lsize) { int x = srcx + (loadOffset % lrp); int y = srcy + (loadOffset / lrp); x = (x < 0) ? -x : x; x = (x >= globalWidth) ? (2 * (globalWidth - 1) - x) : x; y = (y < 0) ? -y : y; y = (y >= globalHeight) ? (2 * (globalHeight - 1) - y) : y; //pixels[loadOffset] = (float)(src[x + y * rowPixels]) * 1.0f / 16383.0f; pixels[loadOffset] = src[x + y * rowPixels]; loadOffset += workGroupSize; } } void loadLDSShort(__local float *pixels, __global unsigned short const *src, const int lrp, const int rowPixels, const int size, const int pad, const int globalWidth, const int globalHeight, const int groupId, const int workGroupSize) { const int lsize = lrp * lrp; int srcx = get_group_id(0) * size - pad; int srcy = get_group_id(1) * size - pad; int loadOffset = groupId; while (loadOffset < lsize) { int x = srcx + (loadOffset % lrp); int y = srcy + (loadOffset / lrp); x = (x < 0) ? -x : x; x = (x >= globalWidth) ? (2 * (globalWidth - 1) - x) : x; y = (y < 0) ? -y : y; y = (y >= globalHeight) ? (2 * (globalHeight - 1) - y) : y; pixels[loadOffset] = (float)(src[x + y * rowPixels]) * 1.0f / 16383.0f; //pixels[loadOffset] = src[x + y * rowPixels]; loadOffset += workGroupSize; } } #ifdef Kernel16 __kernel __attribute__((reqd_work_group_size(16, 16, 1))) void rawNoiseKernel(__global float *dst, __global float const *src, const unsigned short grx, const unsigned short gry, const float thresh, const float limit, const unsigned int rowPixels, const unsigned int doMedian, const unsigned int sourceFormat) { const int size = 32; const int pad = 2; const int lrp = 36; // local row pixels __local float pixels[36 * 36]; const int localx = get_local_id(0); const int localy = get_local_id(1); const int x = get_global_id(0); const int y = get_global_id(1); const int groupId = localx + localy * size / 2; const int localOffset = (localx * 2 + pad) + (localy * 2 + pad) * lrp; int globalWidth = get_global_size(0) * 2; // FIXME: this should be src row pixels int globalHeight = get_global_size(1) * 2; if (sourceFormat == 0) loadLDS(pixels, src, lrp, rowPixels, size, pad, globalWidth, globalHeight, groupId, 256); else loadLDSShort(pixels, (__global unsigned short *)(src), lrp, rowPixels, size, pad, globalWidth, globalHeight, groupId, 256); barrier(CLK_LOCAL_MEM_FENCE); bool isRedBlue = ((y + (grx ^ gry) + x) & 1) != 0; float2 minv, maxv; // // Do the 2 color pixels // int p1 = isRedBlue ? localOffset : localOffset + 1; int p2 = p1 + lrp + (isRedBlue ? 1 : -1); minv = maxv = (float2)(pixels[p1 - 2 * lrp - 2], pixels[p2 - 2 * lrp - 2]); maxv = max(maxv, (float2)(pixels[p1 - 2 * lrp], pixels[p2 - 2 * lrp])); minv = min(minv, (float2)(pixels[p1 - 2 * lrp], pixels[p2 - 2 * lrp])); maxv = max(maxv, (float2)(pixels[p1 - 2 * lrp + 2], pixels[p2 - 2 * lrp + 2])); minv = min(minv, (float2)(pixels[p1 - 2 * lrp + 2], pixels[p2 - 2 * lrp + 2])); maxv = max(maxv, (float2)(pixels[p1 - 2], pixels[p2 - 2])); minv = min(minv, (float2)(pixels[p1 - 2], pixels[p2 - 2])); //maxv = max(maxv, (float2)(pixels[p1], pixels[p2])); // original value //minv = min(minv, (float2)(pixels[p1], pixels[p2])); // original value maxv = max(maxv, (float2)(pixels[p1 + 2], pixels[p2 + 2])); minv = min(minv, (float2)(pixels[p1 + 2], pixels[p2 + 2])); maxv = max(maxv, (float2)(pixels[p1 + 2 * lrp - 2], pixels[p2 + 2 * lrp - 2])); minv = min(minv, (float2)(pixels[p1 + 2 * lrp - 2], pixels[p2 + 2 * lrp - 2])); maxv = max(maxv, (float2)(pixels[p1 + 2 * lrp], pixels[p2 + 2 * lrp])); minv = min(minv, (float2)(pixels[p1 + 2 * lrp], pixels[p2 + 2 * lrp])); maxv = max(maxv, (float2)(pixels[p1 + 2 * lrp + 2], pixels[p2 + 2 * lrp + 2])); minv = min(minv, (float2)(pixels[p1 + 2 * lrp + 2], pixels[p2 + 2 * lrp + 2])); pixels[p1] = (pixels[p1] > maxv.x) ? maxv.x : pixels[p1]; pixels[p1] = (pixels[p1] < minv.x) ? minv.x : pixels[p1]; pixels[p2] = (pixels[p2] > maxv.y) ? maxv.y : pixels[p2]; pixels[p2] = (pixels[p2] < minv.y) ? minv.y : pixels[p2]; // // Do the 2 green pixels // p1 = isRedBlue ? localOffset + 1 : localOffset; p2 = p1 + lrp + (isRedBlue ? -1 : 1); minv = maxv = (float2)(pixels[p1 - 2 * lrp], pixels[p2 - 2 * lrp]); maxv = max(maxv, (float2)(pixels[p1 - lrp - 1], pixels[p2 - lrp - 1])); minv = min(minv, (float2)(pixels[p1 - lrp - 1], pixels[p2 - lrp - 1])); maxv = max(maxv, (float2)(pixels[p1 - lrp + 1], pixels[p2 - lrp + 1])); minv = min(minv, (float2)(pixels[p1 - lrp + 1], pixels[p2 - lrp + 1])); maxv = max(maxv, (float2)(pixels[p1 - 2], pixels[p2 - 2])); minv = min(minv, (float2)(pixels[p1 - 2], pixels[p2 - 2])); //maxv = max(maxv, (float2)(pixels[p1], pixels[p2])); // original value //minv = min(minv, (float2)(pixels[p1], pixels[p2])); // original value maxv = max(maxv, (float2)(pixels[p1 + 2], pixels[p2 + 2])); minv = min(minv, (float2)(pixels[p1 + 2], pixels[p2 + 2])); maxv = max(maxv, (float2)(pixels[p1 + lrp - 1], pixels[p2 + lrp - 1])); minv = min(minv, (float2)(pixels[p1 + lrp - 1], pixels[p2 + lrp - 1])); maxv = max(maxv, (float2)(pixels[p1 + lrp + 1], pixels[p2 + lrp + 1])); minv = min(minv, (float2)(pixels[p1 + lrp + 1], pixels[p2 + lrp + 1])); maxv = max(maxv, (float2)(pixels[p1 + 2 * lrp], pixels[p2 + 2 * lrp])); minv = min(minv, (float2)(pixels[p1 + 2 * lrp], pixels[p2 + 2 * lrp])); pixels[p1] = (pixels[p1] > maxv.x) ? maxv.x : pixels[p1]; pixels[p1] = (pixels[p1] < minv.x) ? minv.x : pixels[p1]; pixels[p2] = (pixels[p2] > maxv.y) ? maxv.y : pixels[p2]; pixels[p2] = (pixels[p2] < minv.y) ? minv.y : pixels[p2]; barrier(CLK_LOCAL_MEM_FENCE); if (doMedian == 1) { // Median the green channels float2 pix[9]; p1 = isRedBlue ? localOffset + 1 : localOffset; p2 = p1 + lrp + (isRedBlue ? -1 : 1); pix[0] = (float2)(pixels[p1 - 2 * lrp], pixels[p2 - 2 * lrp]); pix[1] = (float2)(pixels[p1 - lrp - 1], pixels[p2 - lrp - 1]); pix[2] = (float2)(pixels[p1 - lrp + 1], pixels[p2 - lrp + 1]); pix[3] = (float2)(pixels[p1 - 2], pixels[p2 - 2]); pix[4] = (float2)(pixels[p1], pixels[p2]); pix[5] = (float2)(pixels[p1 + 2], pixels[p2 + 2]); pix[6] = (float2)(pixels[p1 + lrp - 1], pixels[p2 + lrp - 1]); pix[7] = (float2)(pixels[p1 + lrp + 1], pixels[p2 + lrp + 1]); pix[8] = (float2)(pixels[p1 + 2 * lrp], pixels[p2 + 2 * lrp]); pixsort2(&pix[1], &pix[2]); pixsort2(&pix[4], &pix[5]); pixsort2(&pix[7], &pix[8]); pixsort2(&pix[0], &pix[1]); pixsort2(&pix[3], &pix[4]); pixsort2(&pix[6], &pix[7]); pixsort2(&pix[1], &pix[2]); pixsort2(&pix[4], &pix[5]); pixsort2(&pix[7], &pix[8]); pixsort2(&pix[0], &pix[3]); pixsort2(&pix[5], &pix[8]); pixsort2(&pix[4], &pix[7]); pixsort2(&pix[3], &pix[6]); pixsort2(&pix[1], &pix[4]); pixsort2(&pix[2], &pix[5]); pixsort2(&pix[4], &pix[7]); pixsort2(&pix[4], &pix[2]); pixsort2(&pix[6], &pix[4]); pixsort2(&pix[4], &pix[2]); // median in 4 pixsort2(&pix[0], &pix[3]); // min to 0 pixsort2(&pix[5], &pix[8]); // max to 8 float2 delta = pix[8] - pix[0]; delta = max(delta, limit); delta = delta / thresh; // delta is now "blend" delta = min(delta, 1.0f); pixels[p1] = (1.0f - delta.x) * pix[4].x + delta.x * pixels[p1]; pixels[p2] = (1.0f - delta.y) * pix[4].y + delta.y * pixels[p2]; delta = pix[8] - pix[0]; if (delta.x + delta.y < 2.0f * thresh) { // Only do color if green was altered p1 = isRedBlue ? localOffset : localOffset + 1; p2 = p1 + lrp + (isRedBlue ? 1 : -1); pix[0] = (float2)(pixels[p1 - 2 * lrp - 2], pixels[p2 - 2 * lrp - 2]); pix[1] = (float2)(pixels[p1 - 2 * lrp], pixels[p2 - 2 * lrp]); pix[2] = (float2)(pixels[p1 - 2 * lrp + 2], pixels[p2 - 2 * lrp + 2]); pix[3] = (float2)(pixels[p1 - 2], pixels[p2 - 2]); pix[4] = (float2)(pixels[p1], pixels[p2]); pix[5] = (float2)(pixels[p1 + 2], pixels[p2 + 2]); pix[6] = (float2)(pixels[p1 + 2 * lrp - 2], pixels[p2 + 2 * lrp - 2]); pix[7] = (float2)(pixels[p1 + 2 * lrp], pixels[p2 + 2 * lrp]); pix[8] = (float2)(pixels[p1 + 2 * lrp + 2], pixels[p2 + 2 * lrp + 2]); pixsort2(&pix[1], &pix[2]); pixsort2(&pix[4], &pix[5]); pixsort2(&pix[7], &pix[8]); pixsort2(&pix[0], &pix[1]); pixsort2(&pix[3], &pix[4]); pixsort2(&pix[6], &pix[7]); pixsort2(&pix[1], &pix[2]); pixsort2(&pix[4], &pix[5]); pixsort2(&pix[7], &pix[8]); pixsort2(&pix[0], &pix[3]); pixsort2(&pix[5], &pix[8]); pixsort2(&pix[4], &pix[7]); pixsort2(&pix[3], &pix[6]); pixsort2(&pix[1], &pix[4]); pixsort2(&pix[2], &pix[5]); pixsort2(&pix[4], &pix[7]); pixsort2(&pix[4], &pix[2]); pixsort2(&pix[6], &pix[4]); pixsort2(&pix[4], &pix[2]); // median in 4 pixsort2(&pix[0], &pix[3]); // min to 0 pixsort2(&pix[5], &pix[8]); // max to 8 float2 delta = pix[8] - pix[0]; delta = max(delta, limit); delta = delta / thresh; // delta is now "blend" delta = min(delta, 1.0f); pixels[p1] = (1.0f - delta.x) * pix[4].x + delta.x * pixels[p1]; pixels[p2] = (1.0f - delta.y) * pix[4].y + delta.y * pixels[p2]; } } barrier(CLK_LOCAL_MEM_FENCE); if ((x + 1 < globalWidth) && (y + 1 < globalHeight)) { int offset = get_global_id(0) * 2 + get_global_id(1) * 2 * rowPixels; dst[offset] = pixels[localOffset]; dst[offset + 1] = pixels[localOffset + 1]; dst[offset + rowPixels] = pixels[localOffset + lrp]; dst[offset + rowPixels + 1] = pixels[localOffset + lrp + 1]; } } #endif #ifdef Kernel8 __kernel __attribute__((reqd_work_group_size(8, 8, 1))) void rawNoiseKernel(__global float *dst, __global float const *src, const unsigned short grx, const unsigned short gry, const float thresh, const float limit, const unsigned int rowPixels, const unsigned int doMedian, const unsigned int sourceFormat) { const int size = 16; const int pad = 2; const int lrp = 20; // local row pixels __local float pixels[20 * 20]; const int localx = get_local_id(0); const int localy = get_local_id(1); const int x = get_global_id(0); const int y = get_global_id(1); const int groupId = localx + localy * size / 2; const int localOffset = (localx * 2 + pad) + (localy * 2 + pad) * lrp; int globalWidth = get_global_size(0) * 2; // FIXME: this should be src row pixels int globalHeight = get_global_size(1) * 2; if (sourceFormat == 0) loadLDS(pixels, src, lrp, rowPixels, size, pad, globalWidth, globalHeight, groupId, 64); else loadLDSShort(pixels, (__global unsigned short *)(src), lrp, rowPixels, size, pad, globalWidth, globalHeight, groupId, 64); barrier(CLK_LOCAL_MEM_FENCE); bool isRedBlue = ((y + (grx ^ gry) + x) & 1) != 0; float2 minv, maxv; // // Do the 2 color pixels // int p1 = isRedBlue ? localOffset : localOffset + 1; int p2 = p1 + lrp + (isRedBlue ? 1 : -1); minv = maxv = (float2)(pixels[p1 - 2 * lrp - 2], pixels[p2 - 2 * lrp - 2]); maxv = max(maxv, (float2)(pixels[p1 - 2 * lrp], pixels[p2 - 2 * lrp])); minv = min(minv, (float2)(pixels[p1 - 2 * lrp], pixels[p2 - 2 * lrp])); maxv = max(maxv, (float2)(pixels[p1 - 2 * lrp + 2], pixels[p2 - 2 * lrp + 2])); minv = min(minv, (float2)(pixels[p1 - 2 * lrp + 2], pixels[p2 - 2 * lrp + 2])); maxv = max(maxv, (float2)(pixels[p1 - 2], pixels[p2 - 2])); minv = min(minv, (float2)(pixels[p1 - 2], pixels[p2 - 2])); //maxv = max(maxv, (float2)(pixels[p1], pixels[p2])); // original value //minv = min(minv, (float2)(pixels[p1], pixels[p2])); // original value maxv = max(maxv, (float2)(pixels[p1 + 2], pixels[p2 + 2])); minv = min(minv, (float2)(pixels[p1 + 2], pixels[p2 + 2])); maxv = max(maxv, (float2)(pixels[p1 + 2 * lrp - 2], pixels[p2 + 2 * lrp - 2])); minv = min(minv, (float2)(pixels[p1 + 2 * lrp - 2], pixels[p2 + 2 * lrp - 2])); maxv = max(maxv, (float2)(pixels[p1 + 2 * lrp], pixels[p2 + 2 * lrp])); minv = min(minv, (float2)(pixels[p1 + 2 * lrp], pixels[p2 + 2 * lrp])); maxv = max(maxv, (float2)(pixels[p1 + 2 * lrp + 2], pixels[p2 + 2 * lrp + 2])); minv = min(minv, (float2)(pixels[p1 + 2 * lrp + 2], pixels[p2 + 2 * lrp + 2])); pixels[p1] = (pixels[p1] > maxv.x) ? maxv.x : pixels[p1]; pixels[p1] = (pixels[p1] < minv.x) ? minv.x : pixels[p1]; pixels[p2] = (pixels[p2] > maxv.y) ? maxv.y : pixels[p2]; pixels[p2] = (pixels[p2] < minv.y) ? minv.y : pixels[p2]; // // Do the 2 green pixels // p1 = isRedBlue ? localOffset + 1 : localOffset; p2 = p1 + lrp + (isRedBlue ? -1 : 1); minv = maxv = (float2)(pixels[p1 - 2 * lrp], pixels[p2 - 2 * lrp]); maxv = max(maxv, (float2)(pixels[p1 - lrp - 1], pixels[p2 - lrp - 1])); minv = min(minv, (float2)(pixels[p1 - lrp - 1], pixels[p2 - lrp - 1])); maxv = max(maxv, (float2)(pixels[p1 - lrp + 1], pixels[p2 - lrp + 1])); minv = min(minv, (float2)(pixels[p1 - lrp + 1], pixels[p2 - lrp + 1])); maxv = max(maxv, (float2)(pixels[p1 - 2], pixels[p2 - 2])); minv = min(minv, (float2)(pixels[p1 - 2], pixels[p2 - 2])); //maxv = max(maxv, (float2)(pixels[p1], pixels[p2])); // original value //minv = min(minv, (float2)(pixels[p1], pixels[p2])); // original value maxv = max(maxv, (float2)(pixels[p1 + 2], pixels[p2 + 2])); minv = min(minv, (float2)(pixels[p1 + 2], pixels[p2 + 2])); maxv = max(maxv, (float2)(pixels[p1 + lrp - 1], pixels[p2 + lrp - 1])); minv = min(minv, (float2)(pixels[p1 + lrp - 1], pixels[p2 + lrp - 1])); maxv = max(maxv, (float2)(pixels[p1 + lrp + 1], pixels[p2 + lrp + 1])); minv = min(minv, (float2)(pixels[p1 + lrp + 1], pixels[p2 + lrp + 1])); maxv = max(maxv, (float2)(pixels[p1 + 2 * lrp], pixels[p2 + 2 * lrp])); minv = min(minv, (float2)(pixels[p1 + 2 * lrp], pixels[p2 + 2 * lrp])); pixels[p1] = (pixels[p1] > maxv.x) ? maxv.x : pixels[p1]; pixels[p1] = (pixels[p1] < minv.x) ? minv.x : pixels[p1]; pixels[p2] = (pixels[p2] > maxv.y) ? maxv.y : pixels[p2]; pixels[p2] = (pixels[p2] < minv.y) ? minv.y : pixels[p2]; barrier(CLK_LOCAL_MEM_FENCE); if (doMedian == 1) { // Median the green channels float2 pix[9]; p1 = isRedBlue ? localOffset + 1 : localOffset; p2 = p1 + lrp + (isRedBlue ? -1 : 1); pix[0] = (float2)(pixels[p1 - 2 * lrp], pixels[p2 - 2 * lrp]); pix[1] = (float2)(pixels[p1 - lrp - 1], pixels[p2 - lrp - 1]); pix[2] = (float2)(pixels[p1 - lrp + 1], pixels[p2 - lrp + 1]); pix[3] = (float2)(pixels[p1 - 2], pixels[p2 - 2]); pix[4] = (float2)(pixels[p1], pixels[p2]); pix[5] = (float2)(pixels[p1 + 2], pixels[p2 + 2]); pix[6] = (float2)(pixels[p1 + lrp - 1], pixels[p2 + lrp - 1]); pix[7] = (float2)(pixels[p1 + lrp + 1], pixels[p2 + lrp + 1]); pix[8] = (float2)(pixels[p1 + 2 * lrp], pixels[p2 + 2 * lrp]); pixsort2(&pix[1], &pix[2]); pixsort2(&pix[4], &pix[5]); pixsort2(&pix[7], &pix[8]); pixsort2(&pix[0], &pix[1]); pixsort2(&pix[3], &pix[4]); pixsort2(&pix[6], &pix[7]); pixsort2(&pix[1], &pix[2]); pixsort2(&pix[4], &pix[5]); pixsort2(&pix[7], &pix[8]); pixsort2(&pix[0], &pix[3]); pixsort2(&pix[5], &pix[8]); pixsort2(&pix[4], &pix[7]); pixsort2(&pix[3], &pix[6]); pixsort2(&pix[1], &pix[4]); pixsort2(&pix[2], &pix[5]); pixsort2(&pix[4], &pix[7]); pixsort2(&pix[4], &pix[2]); pixsort2(&pix[6], &pix[4]); pixsort2(&pix[4], &pix[2]); // median in 4 pixsort2(&pix[0], &pix[3]); // min to 0 pixsort2(&pix[5], &pix[8]); // max to 8 float2 delta = pix[8] - pix[0]; delta = max(delta, limit); delta = delta / thresh; // delta is now "blend" delta = min(delta, 1.0f); pixels[p1] = (1.0f - delta.x) * pix[4].x + delta.x * pixels[p1]; pixels[p2] = (1.0f - delta.y) * pix[4].y + delta.y * pixels[p2]; delta = pix[8] - pix[0]; if (delta.x + delta.y < 2.0f * thresh) { // Only do color if green was altered p1 = isRedBlue ? localOffset : localOffset + 1; p2 = p1 + lrp + (isRedBlue ? 1 : -1); pix[0] = (float2)(pixels[p1 - 2 * lrp - 2], pixels[p2 - 2 * lrp - 2]); pix[1] = (float2)(pixels[p1 - 2 * lrp], pixels[p2 - 2 * lrp]); pix[2] = (float2)(pixels[p1 - 2 * lrp + 2], pixels[p2 - 2 * lrp + 2]); pix[3] = (float2)(pixels[p1 - 2], pixels[p2 - 2]); pix[4] = (float2)(pixels[p1], pixels[p2]); pix[5] = (float2)(pixels[p1 + 2], pixels[p2 + 2]); pix[6] = (float2)(pixels[p1 + 2 * lrp - 2], pixels[p2 + 2 * lrp - 2]); pix[7] = (float2)(pixels[p1 + 2 * lrp], pixels[p2 + 2 * lrp]); pix[8] = (float2)(pixels[p1 + 2 * lrp + 2], pixels[p2 + 2 * lrp + 2]); pixsort2(&pix[1], &pix[2]); pixsort2(&pix[4], &pix[5]); pixsort2(&pix[7], &pix[8]); pixsort2(&pix[0], &pix[1]); pixsort2(&pix[3], &pix[4]); pixsort2(&pix[6], &pix[7]); pixsort2(&pix[1], &pix[2]); pixsort2(&pix[4], &pix[5]); pixsort2(&pix[7], &pix[8]); pixsort2(&pix[0], &pix[3]); pixsort2(&pix[5], &pix[8]); pixsort2(&pix[4], &pix[7]); pixsort2(&pix[3], &pix[6]); pixsort2(&pix[1], &pix[4]); pixsort2(&pix[2], &pix[5]); pixsort2(&pix[4], &pix[7]); pixsort2(&pix[4], &pix[2]); pixsort2(&pix[6], &pix[4]); pixsort2(&pix[4], &pix[2]); // median in 4 pixsort2(&pix[0], &pix[3]); // min to 0 pixsort2(&pix[5], &pix[8]); // max to 8 float2 delta = pix[8] - pix[0]; delta = max(delta, limit); delta = delta / thresh; // delta is now "blend" delta = min(delta, 1.0f); pixels[p1] = (1.0f - delta.x) * pix[4].x + delta.x * pixels[p1]; pixels[p2] = (1.0f - delta.y) * pix[4].y + delta.y * pixels[p2]; } } barrier(CLK_LOCAL_MEM_FENCE); if ((x + 1 < globalWidth) && (y + 1 < globalHeight)) { int offset = get_global_id(0) * 2 + get_global_id(1) * 2 * rowPixels; dst[offset] = pixels[localOffset]; dst[offset + 1] = pixels[localOffset + 1]; dst[offset + rowPixels] = pixels[localOffset + lrp]; dst[offset + rowPixels + 1] = pixels[localOffset + lrp + 1]; } } #endif .decl_function rawNoiseKernel ## 1139 registers ## .decl.dword %0 local_id_0 .decl.dword %1 local_id_1 .decl.dword %2 local_id_2 .decl.dword %3 group_id_0 .decl.dword %4 group_id_1 .decl.dword %5 group_id_2 .decl.dword %6 num_groups_0 .decl.dword %7 num_groups_1 .decl.dword %8 num_groups_2 .decl.dword %9 local_size_0 .decl.dword %10 local_size_1 .decl.dword %11 local_size_2 .decl.dword %12 enqueued_local_size_0 .decl.dword %13 enqueued_local_size_1 .decl.dword %14 enqueued_local_size_2 .decl.dword %15 global_size_0 .decl.dword %16 global_size_1 .decl.dword %17 global_size_2 .decl.dword %18 global_offset_0 .decl.dword %19 global_offset_1 .decl.dword %20 global_offset_2 .decl.dword %21 stack_pointer .decl.qword %22 stack_buffer .decl.word %23 block_ip .decl.dword %24 barrier_id .decl.dword %25 thread_number .decl.dword %26 work_dimension .decl.dword %27 zero .decl.dword %28 one .decl.word %29 retVal .decl.dword %30 dwblockip .decl.qword %31 profiling_buffer_pointer .decl.dword %32 profiling_timestamps0 .decl.dword %33 profiling_timestamps1 .decl.dword %34 profiling_timestamps2 .decl.dword %35 profiling_timestamps3 .decl.dword %36 profiling_timestamps4 .decl.dword %37 threadid .decl.qword %38 constant_addrspace_start .decl.qword %39 stack_size .decl.qword %40 enqueue_buffer_pointer .decl.dword %41 .decl.dword %42 .decl.word %43 .decl.word %44 .decl.dword %45 .decl.dword %46 .decl.dword %47 .decl.dword %48 .decl.dword %49 .decl.dword %50 .decl.dword %51 .decl.dword %52 .decl.dword %53 .decl.dword %54 .decl.dword %55 .decl.dword %56 .decl.dword %57 .decl.dword %58 .decl.dword %59 .decl.dword %60 .decl.dword %61 .decl.dword %62 .decl.dword %63 .decl.dword %64 .decl.bool %65 .decl.dword %66 .decl.dword %67 .decl.dword %68 .decl.dword %69 .decl.bool %70 .decl.dword %71 .decl.dword %72 .decl.dword %73 .decl.dword %74 .decl.dword %75 .decl.dword %76 .decl.dword %77 .decl.dword %78 .decl.dword %79 .decl.dword %80 .decl.bool %81 .decl.dword %82 .decl.dword %83 .decl.bool %84 .decl.dword %85 .decl.dword %86 .decl.bool %87 .decl.dword %88 .decl.dword %89 .decl.bool %90 .decl.dword %91 .decl.dword %92 .decl.dword %93 .decl.dword %94 .decl.dword %95 .decl.dword %96 .decl.word %97 .decl.dword %98 .decl.dword %99 .decl.dword %100 .decl.dword %101 .decl.dword %102 .decl.bool %103 .decl.dword %104 .decl.dword %105 .decl.dword %106 .decl.dword %107 .decl.bool %108 .decl.dword %109 .decl.dword %110 .decl.dword %111 .decl.dword %112 .decl.dword %113 .decl.dword %114 .decl.dword %115 .decl.dword %116 .decl.dword %117 .decl.dword %118 .decl.bool %119 .decl.dword %120 .decl.dword %121 .decl.bool %122 .decl.dword %123 .decl.dword %124 .decl.bool %125 .decl.dword %126 .decl.dword %127 .decl.bool %128 .decl.dword %129 .decl.dword %130 .decl.dword %131 .decl.dword %132 .decl.dword %133 .decl.dword %134 .decl.dword %135 .decl.dword %136 .decl.dword %137 .decl.dword %138 .decl.bool %139 .decl.word %140 .decl.dword %141 .decl.dword %142 .decl.dword %143 .decl.dword %144 .decl.bool %145 .decl.dword %146 .decl.dword %147 .decl.dword %148 .decl.dword %149 .decl.dword %150 .decl.dword %151 .decl.dword %152 .decl.dword %153 .decl.dword %154 .decl.dword %155 .decl.dword %156 .decl.dword %157 .decl.dword %158 .decl.dword %159 .decl.dword %160 .decl.dword %161 .decl.dword %162 .decl.dword %163 .decl.dword %164 .decl.dword %165 .decl.dword %166 .decl.dword %167 .decl.dword %168 .decl.dword %169 .decl.dword %170 .decl.dword %171 .decl.dword %172 .decl.dword %173 .decl.dword %174 .decl.dword %175 .decl.dword %176 .decl.dword %177 .decl.dword %178 .decl.dword %179 .decl.dword %180 .decl.dword %181 .decl.dword %182 .decl.dword %183 .decl.dword %184 .decl.dword %185 .decl.dword %186 .decl.dword %187 .decl.dword %188 .decl.dword %189 .decl.dword %190 .decl.dword %191 .decl.dword %192 .decl.dword %193 .decl.dword %194 .decl.dword %195 .decl.dword %196 .decl.dword %197 .decl.dword %198 .decl.dword %199 .decl.dword %200 .decl.dword %201 .decl.dword %202 .decl.dword %203 .decl.dword %204 .decl.dword %205 .decl.dword %206 .decl.dword %207 .decl.dword %208 .decl.dword %209 .decl.dword %210 .decl.dword %211 .decl.dword %212 .decl.dword %213 .decl.dword %214 .decl.dword %215 .decl.dword %216 .decl.dword %217 .decl.dword %218 .decl.dword %219 .decl.dword %220 .decl.dword %221 .decl.dword %222 .decl.dword %223 .decl.dword %224 .decl.dword %225 .decl.dword %226 .decl.dword %227 .decl.dword %228 .decl.dword %229 .decl.dword %230 .decl.dword %231 .decl.dword %232 .decl.dword %233 .decl.dword %234 .decl.dword %235 .decl.dword %236 .decl.dword %237 .decl.dword %238 .decl.dword %239 .decl.dword %240 .decl.dword %241 .decl.dword %242 .decl.dword %243 .decl.dword %244 .decl.dword %245 .decl.bool %246 .decl.dword %247 .decl.bool %248 .decl.dword %249 .decl.dword %250 .decl.dword %251 .decl.dword %252 .decl.bool %253 .decl.dword %254 .decl.bool %255 .decl.dword %256 .decl.dword %257 .decl.dword %258 .decl.dword %259 .decl.dword %260 .decl.dword %261 .decl.dword %262 .decl.dword %263 .decl.dword %264 .decl.dword %265 .decl.dword %266 .decl.dword %267 .decl.dword %268 .decl.dword %269 .decl.dword %270 .decl.dword %271 .decl.dword %272 .decl.dword %273 .decl.dword %274 .decl.dword %275 .decl.dword %276 .decl.dword %277 .decl.dword %278 .decl.dword %279 .decl.dword %280 .decl.dword %281 .decl.dword %282 .decl.dword %283 .decl.dword %284 .decl.dword %285 .decl.dword %286 .decl.dword %287 .decl.dword %288 .decl.dword %289 .decl.dword %290 .decl.dword %291 .decl.dword %292 .decl.dword %293 .decl.dword %294 .decl.dword %295 .decl.dword %296 .decl.dword %297 .decl.dword %298 .decl.dword %299 .decl.dword %300 .decl.dword %301 .decl.dword %302 .decl.dword %303 .decl.dword %304 .decl.dword %305 .decl.dword %306 .decl.dword %307 .decl.dword %308 .decl.dword %309 .decl.dword %310 .decl.dword %311 .decl.dword %312 .decl.dword %313 .decl.dword %314 .decl.dword %315 .decl.dword %316 .decl.dword %317 .decl.dword %318 .decl.dword %319 .decl.dword %320 .decl.dword %321 .decl.dword %322 .decl.dword %323 .decl.dword %324 .decl.dword %325 .decl.dword %326 .decl.dword %327 .decl.dword %328 .decl.dword %329 .decl.dword %330 .decl.dword %331 .decl.dword %332 .decl.dword %333 .decl.dword %334 .decl.dword %335 .decl.dword %336 .decl.dword %337 .decl.dword %338 .decl.dword %339 .decl.dword %340 .decl.dword %341 .decl.dword %342 .decl.dword %343 .decl.dword %344 .decl.dword %345 .decl.dword %346 .decl.dword %347 .decl.dword %348 .decl.dword %349 .decl.dword %350 .decl.dword %351 .decl.dword %352 .decl.dword %353 .decl.dword %354 .decl.dword %355 .decl.dword %356 .decl.dword %357 .decl.bool %358 .decl.dword %359 .decl.bool %360 .decl.dword %361 .decl.dword %362 .decl.dword %363 .decl.dword %364 .decl.bool %365 .decl.dword %366 .decl.bool %367 .decl.dword %368 .decl.bool %369 .decl.dword %370 .decl.dword %371 .decl.dword %372 .decl.dword %373 .decl.dword %374 .decl.dword %375 .decl.dword %376 .decl.dword %377 .decl.dword %378 .decl.dword %379 .decl.dword %380 .decl.dword %381 .decl.dword %382 .decl.dword %383 .decl.dword %384 .decl.dword %385 .decl.dword %386 .decl.dword %387 .decl.dword %388 .decl.dword %389 .decl.dword %390 .decl.dword %391 .decl.dword %392 .decl.dword %393 .decl.dword %394 .decl.dword %395 .decl.dword %396 .decl.dword %397 .decl.dword %398 .decl.dword %399 .decl.dword %400 .decl.dword %401 .decl.dword %402 .decl.dword %403 .decl.dword %404 .decl.dword %405 .decl.dword %406 .decl.dword %407 .decl.dword %408 .decl.dword %409 .decl.dword %410 .decl.dword %411 .decl.dword %412 .decl.dword %413 .decl.dword %414 .decl.dword %415 .decl.dword %416 .decl.dword %417 .decl.dword %418 .decl.dword %419 .decl.dword %420 .decl.dword %421 .decl.dword %422 .decl.dword %423 .decl.dword %424 .decl.dword %425 .decl.dword %426 .decl.dword %427 .decl.dword %428 .decl.dword %429 .decl.dword %430 .decl.dword %431 .decl.dword %432 .decl.dword %433 .decl.dword %434 .decl.dword %435 .decl.dword %436 .decl.dword %437 .decl.dword %438 .decl.dword %439 .decl.dword %440 .decl.dword %441 .decl.dword %442 .decl.dword %443 .decl.dword %444 .decl.dword %445 .decl.dword %446 .decl.dword %447 .decl.dword %448 .decl.dword %449 .decl.dword %450 .decl.dword %451 .decl.dword %452 .decl.dword %453 .decl.dword %454 .decl.dword %455 .decl.dword %456 .decl.dword %457 .decl.dword %458 .decl.dword %459 .decl.dword %460 .decl.dword %461 .decl.dword %462 .decl.dword %463 .decl.dword %464 .decl.dword %465 .decl.dword %466 .decl.dword %467 .decl.dword %468 .decl.dword %469 .decl.dword %470 .decl.dword %471 .decl.dword %472 .decl.dword %473 .decl.dword %474 .decl.dword %475 .decl.dword %476 .decl.bool %477 .decl.dword %478 .decl.dword %479 .decl.dword %480 .decl.dword %481 .decl.dword %482 .decl.dword %483 .decl.dword %484 .decl.dword %485 .decl.dword %486 .decl.dword %487 .decl.dword %488 .decl.dword %489 .decl.dword %490 .decl.dword %491 .decl.dword %492 .decl.dword %493 .decl.dword %494 .decl.dword %495 .decl.dword %496 .decl.dword %497 .decl.dword %498 .decl.dword %499 .decl.dword %500 .decl.dword %501 .decl.dword %502 .decl.dword %503 .decl.dword %504 .decl.dword %505 .decl.dword %506 .decl.dword %507 .decl.dword %508 .decl.dword %509 .decl.dword %510 .decl.dword %511 .decl.dword %512 .decl.dword %513 .decl.dword %514 .decl.dword %515 .decl.dword %516 .decl.dword %517 .decl.dword %518 .decl.dword %519 .decl.dword %520 .decl.dword %521 .decl.dword %522 .decl.dword %523 .decl.dword %524 .decl.dword %525 .decl.dword %526 .decl.dword %527 .decl.dword %528 .decl.dword %529 .decl.dword %530 .decl.dword %531 .decl.dword %532 .decl.dword %533 .decl.dword %534 .decl.dword %535 .decl.dword %536 .decl.dword %537 .decl.dword %538 .decl.dword %539 .decl.dword %540 .decl.dword %541 .decl.dword %542 .decl.dword %543 .decl.dword %544 .decl.dword %545 .decl.dword %546 .decl.dword %547 .decl.dword %548 .decl.dword %549 .decl.dword %550 .decl.dword %551 .decl.dword %552 .decl.dword %553 .decl.dword %554 .decl.dword %555 .decl.dword %556 .decl.dword %557 .decl.dword %558 .decl.dword %559 .decl.dword %560 .decl.dword %561 .decl.dword %562 .decl.dword %563 .decl.dword %564 .decl.dword %565 .decl.dword %566 .decl.dword %567 .decl.dword %568 .decl.dword %569 .decl.dword %570 .decl.dword %571 .decl.dword %572 .decl.dword %573 .decl.dword %574 .decl.dword %575 .decl.dword %576 .decl.dword %577 .decl.dword %578 .decl.dword %579 .decl.dword %580 .decl.dword %581 .decl.dword %582 .decl.dword %583 .decl.bool %584 .decl.dword %585 .decl.bool %586 .decl.bool %587 .decl.dword %588 .decl.dword %589 .decl.dword %590 .decl.dword %591 .decl.dword %592 .decl.dword %593 .decl.dword %594 .decl.dword %595 .decl.dword %596 .decl.dword %597 .decl.dword %598 .decl.dword %599 .decl.dword %600 .decl.dword %601 .decl.dword %602 .decl.dword %603 .decl.dword %604 .decl.dword %605 .decl.dword %606 .decl.dword %607 .decl.dword %608 .decl.dword %609 .decl.dword %610 .decl.dword %611 .decl.dword %612 .decl.dword %613 .decl.dword %614 .decl.dword %615 .decl.dword %616 .decl.dword %617 .decl.dword %618 .decl.dword %619 .decl.dword %620 .decl.dword %621 .decl.dword %622 .decl.dword %623 .decl.dword %624 .decl.dword %625 .decl.dword %626 .decl.dword %627 .decl.dword %628 .decl.dword %629 .decl.dword %630 .decl.dword %631 .decl.dword %632 .decl.dword %633 .decl.dword %634 .decl.dword %635 .decl.dword %636 .decl.dword %637 .decl.dword %638 .decl.dword %639 .decl.dword %640 .decl.dword %641 .decl.dword %642 .decl.dword %643 .decl.dword %644 .decl.dword %645 .decl.dword %646 .decl.dword %647 .decl.dword %648 .decl.dword %649 .decl.dword %650 .decl.dword %651 .decl.dword %652 .decl.dword %653 .decl.dword %654 .decl.dword %655 .decl.dword %656 .decl.dword %657 .decl.dword %658 .decl.dword %659 .decl.dword %660 .decl.dword %661 .decl.dword %662 .decl.dword %663 .decl.dword %664 .decl.dword %665 .decl.dword %666 .decl.dword %667 .decl.dword %668 .decl.dword %669 .decl.dword %670 .decl.dword %671 .decl.dword %672 .decl.dword %673 .decl.dword %674 .decl.dword %675 .decl.dword %676 .decl.dword %677 .decl.dword %678 .decl.bool %679 .decl.bool %680 .decl.bool %681 .decl.bool %682 .decl.dword %683 .decl.dword %684 .decl.dword %685 .decl.dword %686 .decl.dword %687 .decl.dword %688 .decl.dword %689 .decl.dword %690 .decl.bool %691 .decl.bool %692 .decl.bool %693 .decl.bool %694 .decl.dword %695 .decl.dword %696 .decl.dword %697 .decl.dword %698 .decl.dword %699 .decl.dword %700 .decl.dword %701 .decl.dword %702 .decl.bool %703 .decl.bool %704 .decl.bool %705 .decl.bool %706 .decl.dword %707 .decl.dword %708 .decl.dword %709 .decl.dword %710 .decl.dword %711 .decl.dword %712 .decl.dword %713 .decl.dword %714 .decl.bool %715 .decl.bool %716 .decl.bool %717 .decl.bool %718 .decl.dword %719 .decl.dword %720 .decl.dword %721 .decl.dword %722 .decl.dword %723 .decl.dword %724 .decl.dword %725 .decl.dword %726 .decl.dword %727 .decl.dword %728 .decl.bool %729 .decl.bool %730 .decl.bool %731 .decl.bool %732 .decl.dword %733 .decl.dword %734 .decl.dword %735 .decl.dword %736 .decl.dword %737 .decl.dword %738 .decl.bool %739 .decl.bool %740 .decl.bool %741 .decl.bool %742 .decl.dword %743 .decl.dword %744 .decl.dword %745 .decl.dword %746 .decl.dword %747 .decl.dword %748 .decl.dword %749 .decl.dword %750 .decl.bool %751 .decl.bool %752 .decl.bool %753 .decl.bool %754 .decl.dword %755 .decl.dword %756 .decl.dword %757 .decl.bool %758 .decl.bool %759 .decl.dword %760 .decl.dword %761 .decl.dword %762 .decl.dword %763 .decl.dword %764 .decl.bool %765 .decl.bool %766 .decl.dword %767 .decl.dword %768 .decl.dword %769 .decl.dword %770 .decl.dword %771 .decl.dword %772 .decl.dword %773 .decl.dword %774 .decl.dword %775 .decl.dword %776 .decl.dword %777 .decl.dword %778 .decl.dword %779 .decl.dword %780 .decl.dword %781 .decl.dword %782 .decl.dword %783 .decl.dword %784 .decl.dword %785 .decl.dword %786 .decl.dword %787 .decl.bool %788 .decl.bool %789 .decl.bool %790 .decl.bool %791 .decl.dword %792 .decl.dword %793 .decl.dword %794 .decl.dword %795 .decl.dword %796 .decl.dword %797 .decl.dword %798 .decl.bool %799 .decl.bool %800 .decl.bool %801 .decl.bool %802 .decl.dword %803 .decl.dword %804 .decl.dword %805 .decl.dword %806 .decl.dword %807 .decl.dword %808 .decl.dword %809 .decl.dword %810 .decl.bool %811 .decl.bool %812 .decl.bool %813 .decl.bool %814 .decl.dword %815 .decl.dword %816 .decl.dword %817 .decl.dword %818 .decl.dword %819 .decl.dword %820 .decl.dword %821 .decl.dword %822 .decl.bool %823 .decl.bool %824 .decl.bool %825 .decl.bool %826 .decl.dword %827 .decl.dword %828 .decl.dword %829 .decl.dword %830 .decl.dword %831 .decl.dword %832 .decl.dword %833 .decl.dword %834 .decl.bool %835 .decl.bool %836 .decl.bool %837 .decl.bool %838 .decl.dword %839 .decl.dword %840 .decl.dword %841 .decl.dword %842 .decl.dword %843 .decl.dword %844 .decl.dword %845 .decl.dword %846 .decl.bool %847 .decl.bool %848 .decl.bool %849 .decl.bool %850 .decl.dword %851 .decl.dword %852 .decl.dword %853 .decl.dword %854 .decl.dword %855 .decl.dword %856 .decl.dword %857 .decl.dword %858 .decl.bool %859 .decl.bool %860 .decl.bool %861 .decl.bool %862 .decl.dword %863 .decl.dword %864 .decl.dword %865 .decl.bool %866 .decl.bool %867 .decl.dword %868 .decl.dword %869 .decl.dword %870 .decl.dword %871 .decl.dword %872 .decl.bool %873 .decl.bool %874 .decl.dword %875 .decl.dword %876 .decl.dword %877 .decl.dword %878 .decl.dword %879 .decl.dword %880 .decl.dword %881 .decl.dword %882 .decl.dword %883 .decl.dword %884 .decl.dword %885 .decl.dword %886 .decl.dword %887 .decl.dword %888 .decl.dword %889 .decl.dword %890 .decl.dword %891 .decl.dword %892 .decl.dword %893 .decl.dword %894 .decl.dword %895 .decl.dword %896 .decl.dword %897 .decl.dword %898 .decl.dword %899 .decl.dword %900 .decl.dword %901 .decl.dword %902 .decl.dword %903 .decl.dword %904 .decl.dword %905 .decl.dword %906 .decl.dword %907 .decl.dword %908 .decl.dword %909 .decl.dword %910 .decl.dword %911 .decl.dword %912 .decl.dword %913 .decl.bool %914 .decl.bool %915 .decl.bool %916 .decl.bool %917 .decl.bool %918 .decl.bool %919 .decl.bool %920 .decl.bool %921 .decl.bool %922 .decl.bool %923 .decl.bool %924 .decl.bool %925 .decl.bool %926 .decl.bool %927 .decl.bool %928 .decl.bool %929 .decl.bool %930 .decl.bool %931 .decl.bool %932 .decl.bool %933 .decl.bool %934 .decl.bool %935 .decl.bool %936 .decl.bool %937 .decl.bool %938 .decl.bool %939 .decl.bool %940 .decl.bool %941 .decl.bool %942 .decl.bool %943 .decl.bool %944 .decl.bool %945 .decl.bool %946 .decl.bool %947 .decl.bool %948 .decl.bool %949 .decl.bool %950 .decl.bool %951 .decl.bool %952 .decl.bool %953 .decl.bool %954 .decl.bool %955 .decl.bool %956 .decl.bool %957 .decl.bool %958 .decl.bool %959 .decl.bool %960 .decl.bool %961 .decl.bool %962 .decl.bool %963 .decl.bool %964 .decl.bool %965 .decl.bool %966 .decl.bool %967 .decl.bool %968 .decl.bool %969 .decl.bool %970 .decl.bool %971 .decl.bool %972 .decl.bool %973 .decl.bool %974 .decl.bool %975 .decl.bool %976 .decl.bool %977 .decl.bool %978 .decl.bool %979 .decl.bool %980 .decl.bool %981 .decl.bool %982 .decl.bool %983 .decl.bool %984 .decl.bool %985 .decl.bool %986 .decl.bool %987 .decl.dword %988 .decl.bool %989 .decl.dword %990 .decl.bool %991 .decl.dword %992 .decl.dword %993 .decl.dword %994 .decl.dword %995 .decl.dword %996 .decl.dword %997 .decl.dword %998 .decl.dword %999 .decl.dword %1000 .decl.bool %1001 .decl.dword %1002 .decl.dword %1003 .decl.dword %1004 .decl.dword %1005 .decl.dword %1006 .decl.dword %1007 .decl.dword %1008 .decl.dword %1009 .decl.dword %1010 .decl.dword %1011 .decl.dword %1012 .decl.dword %1013 .decl.dword %1014 .decl.dword %1015 .decl.dword %1016 .decl.dword %1017 .decl.dword %1018 .decl.dword %1019 .decl.dword %1020 .decl.dword %1021 .decl.dword %1022 .decl.dword %1023 .decl.dword %1024 .decl.dword %1025 .decl.dword %1026 .decl.dword %1027 .decl.dword %1028 .decl.dword %1029 .decl.dword %1030 .decl.dword %1031 .decl.dword %1032 .decl.dword %1033 .decl.dword %1034 .decl.dword %1035 .decl.dword %1036 .decl.dword %1037 .decl.bool %1038 .decl.bool %1039 .decl.bool %1040 .decl.bool %1041 .decl.bool %1042 .decl.bool %1043 .decl.bool %1044 .decl.bool %1045 .decl.bool %1046 .decl.bool %1047 .decl.bool %1048 .decl.bool %1049 .decl.bool %1050 .decl.bool %1051 .decl.bool %1052 .decl.bool %1053 .decl.bool %1054 .decl.bool %1055 .decl.bool %1056 .decl.bool %1057 .decl.bool %1058 .decl.bool %1059 .decl.bool %1060 .decl.bool %1061 .decl.bool %1062 .decl.bool %1063 .decl.bool %1064 .decl.bool %1065 .decl.bool %1066 .decl.bool %1067 .decl.bool %1068 .decl.bool %1069 .decl.bool %1070 .decl.bool %1071 .decl.bool %1072 .decl.bool %1073 .decl.bool %1074 .decl.bool %1075 .decl.bool %1076 .decl.bool %1077 .decl.bool %1078 .decl.bool %1079 .decl.bool %1080 .decl.bool %1081 .decl.bool %1082 .decl.bool %1083 .decl.bool %1084 .decl.bool %1085 .decl.bool %1086 .decl.bool %1087 .decl.bool %1088 .decl.bool %1089 .decl.bool %1090 .decl.bool %1091 .decl.bool %1092 .decl.bool %1093 .decl.bool %1094 .decl.bool %1095 .decl.bool %1096 .decl.bool %1097 .decl.bool %1098 .decl.bool %1099 .decl.bool %1100 .decl.bool %1101 .decl.bool %1102 .decl.bool %1103 .decl.bool %1104 .decl.bool %1105 .decl.bool %1106 .decl.bool %1107 .decl.bool %1108 .decl.bool %1109 .decl.bool %1110 .decl.bool %1111 .decl.dword %1112 .decl.bool %1113 .decl.dword %1114 .decl.bool %1115 .decl.dword %1116 .decl.dword %1117 .decl.dword %1118 .decl.dword %1119 .decl.dword %1120 .decl.dword %1121 .decl.dword %1122 .decl.dword %1123 .decl.dword %1124 .decl.dword %1125 .decl.dword %1126 .decl.dword %1127 .decl.dword %1128 .decl.dword %1129 .decl.dword %1130 .decl.dword %1131 .decl.dword %1132 .decl.dword %1133 .decl.dword %1134 .decl.dword %1135 .decl.dword %1136 .decl.dword %1137 .decl.dword %1138 ## 9 input registers ## decl_input.global %41 dst decl_input.global %42 src decl_input.value %43 grx decl_input.value %44 gry decl_input.value %45 thresh decl_input.value %46 limit decl_input.value %47 rowPixels decl_input.value %48 doMedian decl_input.value %49 sourceFormat ## 0 output register ## ## 0 pushed register ## 18 blocks ## LABEL $0 LOADI.uint32 %50 4 LABEL $1 MUL.int32 %51 %3 %12 ADD.int32 %52 %51 %0 ADD.int32 %53 %52 %18 MUL.int32 %54 %4 %13 ADD.int32 %55 %54 %1 ADD.int32 %56 %55 %19 LOADI.uint32 %606 4 SHL.int32 %57 %1 %606 ADD.int32 %58 %57 %0 LOADI.uint32 %607 1 SHL.int32 %59 %0 %607 LOADI.uint32 %608 72 MUL.int32 %60 %1 %608 ADD.int32 %61 %60 %59 LOADI.uint32 %609 74 ADD.int32 %62 %61 %609 SHL.int32 %63 %15 %607 SHL.int32 %64 %16 %607 LOADI.uint32 %612 0 EQ.int32 %65 %49 %612 IF !<%65> -> label$25 LABEL $2 LOADI.uint32 %613 5 SHL.int32 %66 %3 %613 LOADI.uint32 %614 4294967294 ADD.int32 %67 %66 %614 SHL.int32 %68 %4 %613 ADD.int32 %69 %68 %614 LOADI.uint32 %617 1296 GE.int32 %70 %58 %617 IF !<%70> -> label$23 LABEL $3 LOADI.uint32 %618 2 SHL.int32 %71 %16 %618 LOADI.uint32 %619 4294967294 ADD.int32 %72 %71 %619 SHL.int32 %73 %15 %618 ADD.int32 %74 %73 %619 MOV.int32 %76 %58 LABEL $4 LOADI.uint32 %622 36 REM.int32 %77 %76 %622 ADD.int32 %78 %67 %77 DIV.int32 %79 %76 %622 ADD.int32 %80 %69 %79 LOADI.uint32 %624 0 LT.int32 %81 %78 %624 SUB.int32 %82 %624 %78 SEL.int32 %83 %81 %82 %78 LT.int32 %84 %83 %63 SUB.int32 %85 %74 %83 SEL.int32 %86 %84 %83 %85 LT.int32 %87 %80 %624 SUB.int32 %88 %624 %80 SEL.int32 %89 %87 %88 %80 LT.int32 %90 %89 %64 SUB.int32 %91 %72 %89 SEL.int32 %92 %90 %89 %91 MUL.int32 %93 %92 %47 ADD.int32 %94 %93 %86 LOADI.uint32 %628 2 MUL.int32 %95 %628 %94 ADD.int32 %96 %42 %95 SUB.uint32 %629 %96 %42 LOAD.int16.global.unaligned {%97} %629 bti:3 CVT.float.uint16 %98 %97 LOADI.float %630 16383 DIV.float %99 %98 %630 LOADI.uint32 %631 4 MUL.int32 %100 %631 %76 ADD.int32 %101 %50 %100 STORE.float.local.aligned %101 {%99} bti:254 LOADI.uint32 %634 256 ADD.int32 %76 %76 %634 LOADI.uint32 %635 1296 LT.int32 %103 %76 %635 WHILE<%103> -> label$4 LABEL $5 ENDIF -> label$23 LABEL $6 ELSE -> label$24 <**>label: 25 LOADI.uint32 %636 5 SHL.int32 %104 %3 %636 LOADI.uint32 %637 4294967294 ADD.int32 %105 %104 %637 SHL.int32 %106 %4 %636 ADD.int32 %107 %106 %637 LOADI.uint32 %640 1296 GE.int32 %108 %58 %640 IF !<%108> -> label$22 LABEL $7 LOADI.uint32 %641 2 SHL.int32 %109 %16 %641 LOADI.uint32 %642 4294967294 ADD.int32 %110 %109 %642 SHL.int32 %111 %15 %641 ADD.int32 %112 %111 %642 MOV.int32 %114 %58 LABEL $8 LOADI.uint32 %645 36 REM.int32 %115 %114 %645 ADD.int32 %116 %105 %115 DIV.int32 %117 %114 %645 ADD.int32 %118 %107 %117 LOADI.uint32 %647 0 LT.int32 %119 %116 %647 SUB.int32 %120 %647 %116 SEL.int32 %121 %119 %120 %116 LT.int32 %122 %121 %63 SUB.int32 %123 %112 %121 SEL.int32 %124 %122 %121 %123 LT.int32 %125 %118 %647 SUB.int32 %126 %647 %118 SEL.int32 %127 %125 %126 %118 LT.int32 %128 %127 %64 SUB.int32 %129 %110 %127 SEL.int32 %130 %128 %127 %129 MUL.int32 %131 %130 %47 ADD.int32 %132 %131 %124 LOADI.uint32 %651 4 MUL.int32 %133 %651 %132 ADD.int32 %134 %42 %133 SUB.uint32 %652 %134 %42 LOAD.float.global.aligned {%135} %652 bti:3 MUL.int32 %136 %651 %114 ADD.int32 %137 %50 %136 STORE.float.local.aligned %137 {%135} bti:254 LOADI.uint32 %656 256 ADD.int32 %114 %114 %656 LOADI.uint32 %657 1296 LT.int32 %139 %114 %657 WHILE<%139> -> label$8 ENDIF -> label$22 ENDIF -> label$24 LABEL $9 SYNC.workgroup.local_read.local_write XOR.int16 %140 %44 %43 CVT.int32.uint16 %141 %140 ADD.int32 %142 %53 %141 ADD.int32 %143 %142 %56 LOADI.uint32 %658 1 AND.int32 %144 %143 %658 LOADI.uint32 %659 0 NE.int32 %145 %144 %659 LOADI.uint32 %660 75 ADD.int32 %146 %61 %660 SEL.int32 %147 %145 %62 %146 SHL.int32 %148 %144 %658 ADD.int32 %149 %147 %148 LOADI.uint32 %662 35 ADD.int32 %150 %149 %662 LOADI.uint32 %663 4294967224 ADD.int32 %151 %147 %663 LOADI.uint32 %664 4294967222 ADD.int32 %152 %147 %664 LOADI.uint32 %665 4 MUL.int32 %153 %665 %152 ADD.int32 %154 %50 %153 LOAD.float.local.aligned {%155} %154 bti:254 LOADI.uint32 %668 4294967259 ADD.int32 %156 %149 %668 LOADI.uint32 %669 4294967257 ADD.int32 %157 %149 %669 MUL.int32 %158 %665 %157 ADD.int32 %159 %50 %158 LOAD.float.local.aligned {%160} %159 bti:254 MUL.int32 %161 %665 %151 ADD.int32 %162 %50 %161 LOAD.float.local.aligned {%163} %162 bti:254 MUL.int32 %164 %665 %156 ADD.int32 %165 %50 %164 LOAD.float.local.aligned {%166} %165 bti:254 GE.float %679 %155 %163 SEL.float %167 %679 %155 %163 GE.float %680 %160 %166 SEL.float %168 %680 %160 %166 LT.float %681 %155 %163 SEL.float %169 %681 %155 %163 LT.float %682 %160 %166 SEL.float %170 %682 %160 %166 LOADI.uint32 %683 4294967226 ADD.int32 %171 %147 %683 MUL.int32 %172 %665 %171 ADD.int32 %173 %50 %172 LOAD.float.local.aligned {%174} %173 bti:254 LOADI.uint32 %687 4294967261 ADD.int32 %175 %149 %687 MUL.int32 %176 %665 %175 ADD.int32 %177 %50 %176 LOAD.float.local.aligned {%178} %177 bti:254 GE.float %691 %167 %174 SEL.float %179 %691 %167 %174 GE.float %692 %168 %178 SEL.float %180 %692 %168 %178 LT.float %693 %169 %174 SEL.float %181 %693 %169 %174 LT.float %694 %170 %178 SEL.float %182 %694 %170 %178 LOADI.uint32 %695 4294967294 ADD.int32 %183 %147 %695 MUL.int32 %184 %665 %183 ADD.int32 %185 %50 %184 LOAD.float.local.aligned {%186} %185 bti:254 LOADI.uint32 %699 33 ADD.int32 %187 %149 %699 MUL.int32 %188 %665 %187 ADD.int32 %189 %50 %188 LOAD.float.local.aligned {%190} %189 bti:254 GE.float %703 %179 %186 SEL.float %191 %703 %179 %186 GE.float %704 %180 %190 SEL.float %192 %704 %180 %190 LT.float %705 %181 %186 SEL.float %193 %705 %181 %186 LT.float %706 %182 %190 SEL.float %194 %706 %182 %190 LOADI.uint32 %707 2 ADD.int32 %195 %147 %707 MUL.int32 %196 %665 %195 ADD.int32 %197 %50 %196 LOAD.float.local.aligned {%198} %197 bti:254 LOADI.uint32 %711 37 ADD.int32 %199 %149 %711 MUL.int32 %200 %665 %199 ADD.int32 %201 %50 %200 LOAD.float.local.aligned {%202} %201 bti:254 GE.float %715 %191 %198 SEL.float %203 %715 %191 %198 GE.float %716 %192 %202 SEL.float %204 %716 %192 %202 LT.float %717 %193 %198 SEL.float %205 %717 %193 %198 LT.float %718 %194 %202 SEL.float %206 %718 %194 %202 LOADI.uint32 %719 72 ADD.int32 %207 %147 %719 LOADI.uint32 %720 70 ADD.int32 %208 %147 %720 MUL.int32 %209 %665 %208 ADD.int32 %210 %50 %209 LOAD.float.local.aligned {%211} %210 bti:254 LOADI.uint32 %724 107 ADD.int32 %212 %149 %724 LOADI.uint32 %725 105 ADD.int32 %213 %149 %725 MUL.int32 %214 %665 %213 ADD.int32 %215 %50 %214 LOAD.float.local.aligned {%216} %215 bti:254 GE.float %729 %203 %211 SEL.float %217 %729 %203 %211 GE.float %730 %204 %216 SEL.float %218 %730 %204 %216 LT.float %731 %205 %211 SEL.float %219 %731 %205 %211 LT.float %732 %206 %216 SEL.float %220 %732 %206 %216 MUL.int32 %221 %665 %207 ADD.int32 %222 %50 %221 LOAD.float.local.aligned {%223} %222 bti:254 MUL.int32 %224 %665 %212 ADD.int32 %225 %50 %224 LOAD.float.local.aligned {%226} %225 bti:254 GE.float %739 %217 %223 SEL.float %227 %739 %217 %223 GE.float %740 %218 %226 SEL.float %228 %740 %218 %226 LT.float %741 %219 %223 SEL.float %229 %741 %219 %223 LT.float %742 %220 %226 SEL.float %230 %742 %220 %226 LOADI.uint32 %743 74 ADD.int32 %231 %147 %743 MUL.int32 %232 %665 %231 ADD.int32 %233 %50 %232 LOAD.float.local.aligned {%234} %233 bti:254 LOADI.uint32 %747 109 ADD.int32 %235 %149 %747 MUL.int32 %236 %665 %235 ADD.int32 %237 %50 %236 LOAD.float.local.aligned {%238} %237 bti:254 GE.float %751 %227 %234 SEL.float %239 %751 %227 %234 GE.float %752 %228 %238 SEL.float %240 %752 %228 %238 LT.float %753 %229 %234 SEL.float %241 %753 %229 %234 LT.float %754 %230 %238 SEL.float %242 %754 %230 %238 MUL.int32 %243 %665 %147 ADD.int32 %244 %50 %243 LOAD.float.local.aligned {%245} %244 bti:254 GT.float %246 %245 %239 SEL.float %247 %246 %239 %245 LT.float %248 %247 %241 SEL.float %249 %248 %241 %247 STORE.float.local.aligned %244 {%249} bti:254 MUL.int32 %250 %665 %150 ADD.int32 %251 %50 %250 LOAD.float.local.aligned {%252} %251 bti:254 GT.float %253 %252 %240 SEL.float %254 %253 %240 %252 LT.float %255 %254 %242 SEL.float %256 %255 %242 %254 STORE.float.local.aligned %251 {%256} bti:254 SEL.int32 %257 %145 %146 %62 LOADI.uint32 %769 36 ADD.int32 %258 %257 %769 XOR.int32 %259 %148 %707 LOADI.uint32 %771 4294967295 ADD.int32 %260 %259 %771 ADD.int32 %261 %258 %260 ADD.int32 %262 %257 %663 MUL.int32 %263 %665 %262 ADD.int32 %264 %50 %263 LOAD.float.local.aligned {%265} %264 bti:254 ADD.int32 %266 %261 %663 MUL.int32 %267 %665 %266 ADD.int32 %268 %50 %267 LOAD.float.local.aligned {%269} %268 bti:254 ADD.int32 %270 %257 %668 MUL.int32 %271 %665 %270 ADD.int32 %272 %50 %271 LOAD.float.local.aligned {%273} %272 bti:254 ADD.int32 %274 %257 %771 ADD.int32 %275 %274 %260 MUL.int32 %276 %665 %275 ADD.int32 %277 %50 %276 LOAD.float.local.aligned {%278} %277 bti:254 GE.float %788 %265 %273 SEL.float %279 %788 %265 %273 GE.float %789 %269 %278 SEL.float %280 %789 %269 %278 LT.float %790 %265 %273 SEL.float %281 %790 %265 %273 LT.float %791 %269 %278 SEL.float %282 %791 %269 %278 ADD.int32 %283 %257 %687 MUL.int32 %284 %665 %283 ADD.int32 %285 %50 %284 LOAD.float.local.aligned {%286} %285 bti:254 ADD.int32 %287 %257 %259 MUL.int32 %288 %665 %287 ADD.int32 %289 %50 %288 LOAD.float.local.aligned {%290} %289 bti:254 GE.float %799 %279 %286 SEL.float %291 %799 %279 %286 GE.float %800 %280 %290 SEL.float %292 %800 %280 %290 LT.float %801 %281 %286 SEL.float %293 %801 %281 %286 LT.float %802 %282 %290 SEL.float %294 %802 %282 %290 ADD.int32 %295 %257 %695 MUL.int32 %296 %665 %295 ADD.int32 %297 %50 %296 LOAD.float.local.aligned {%298} %297 bti:254 ADD.int32 %299 %261 %695 MUL.int32 %300 %665 %299 ADD.int32 %301 %50 %300 LOAD.float.local.aligned {%302} %301 bti:254 GE.float %811 %291 %298 SEL.float %303 %811 %291 %298 GE.float %812 %292 %302 SEL.float %304 %812 %292 %302 LT.float %813 %293 %298 SEL.float %305 %813 %293 %298 LT.float %814 %294 %302 SEL.float %306 %814 %294 %302 ADD.int32 %307 %257 %707 MUL.int32 %308 %665 %307 ADD.int32 %309 %50 %308 LOAD.float.local.aligned {%310} %309 bti:254 ADD.int32 %311 %261 %707 MUL.int32 %312 %665 %311 ADD.int32 %313 %50 %312 LOAD.float.local.aligned {%314} %313 bti:254 GE.float %823 %303 %310 SEL.float %315 %823 %303 %310 GE.float %824 %304 %314 SEL.float %316 %824 %304 %314 LT.float %825 %305 %310 SEL.float %317 %825 %305 %310 LT.float %826 %306 %314 SEL.float %318 %826 %306 %314 ADD.int32 %319 %257 %662 MUL.int32 %320 %665 %319 ADD.int32 %321 %50 %320 LOAD.float.local.aligned {%322} %321 bti:254 ADD.int32 %323 %261 %662 MUL.int32 %324 %665 %323 ADD.int32 %325 %50 %324 LOAD.float.local.aligned {%326} %325 bti:254 GE.float %835 %315 %322 SEL.float %327 %835 %315 %322 GE.float %836 %316 %326 SEL.float %328 %836 %316 %326 LT.float %837 %317 %322 SEL.float %329 %837 %317 %322 LT.float %838 %318 %326 SEL.float %330 %838 %318 %326 ADD.int32 %331 %257 %711 MUL.int32 %332 %665 %331 ADD.int32 %333 %50 %332 LOAD.float.local.aligned {%334} %333 bti:254 ADD.int32 %335 %261 %711 MUL.int32 %336 %665 %335 ADD.int32 %337 %50 %336 LOAD.float.local.aligned {%338} %337 bti:254 GE.float %847 %327 %334 SEL.float %339 %847 %327 %334 GE.float %848 %328 %338 SEL.float %340 %848 %328 %338 LT.float %849 %329 %334 SEL.float %341 %849 %329 %334 LT.float %850 %330 %338 SEL.float %342 %850 %330 %338 ADD.int32 %343 %257 %719 MUL.int32 %344 %665 %343 ADD.int32 %345 %50 %344 LOAD.float.local.aligned {%346} %345 bti:254 ADD.int32 %347 %261 %719 MUL.int32 %348 %665 %347 ADD.int32 %349 %50 %348 LOAD.float.local.aligned {%350} %349 bti:254 GE.float %859 %339 %346 SEL.float %351 %859 %339 %346 GE.float %860 %340 %350 SEL.float %352 %860 %340 %350 LT.float %861 %341 %346 SEL.float %353 %861 %341 %346 LT.float %862 %342 %350 SEL.float %354 %862 %342 %350 MUL.int32 %355 %665 %257 ADD.int32 %356 %50 %355 LOAD.float.local.aligned {%357} %356 bti:254 GT.float %358 %357 %351 SEL.float %359 %358 %351 %357 LT.float %360 %359 %353 SEL.float %361 %360 %353 %359 STORE.float.local.aligned %356 {%361} bti:254 MUL.int32 %362 %665 %261 ADD.int32 %363 %50 %362 LOAD.float.local.aligned {%364} %363 bti:254 GT.float %365 %364 %352 SEL.float %366 %365 %352 %364 LT.float %367 %366 %354 SEL.float %368 %367 %354 %366 STORE.float.local.aligned %363 {%368} bti:254 SYNC.workgroup.local_read.local_write NE.int32 %369 %48 %658 BRA<%369> -> label$13 LABEL $10 LOADI.uint32 %878 0 LOAD.float.local.aligned {%370} %264 bti:254 LOAD.float.local.aligned {%371} %268 bti:254 LOAD.float.local.aligned {%372} %272 bti:254 LOAD.float.local.aligned {%373} %277 bti:254 LOAD.float.local.aligned {%374} %285 bti:254 LOAD.float.local.aligned {%375} %289 bti:254 LOAD.float.local.aligned {%376} %297 bti:254 LOAD.float.local.aligned {%377} %301 bti:254 LOAD.float.local.aligned {%378} %356 bti:254 LOAD.float.local.aligned {%379} %363 bti:254 LOAD.float.local.aligned {%380} %309 bti:254 LOAD.float.local.aligned {%381} %313 bti:254 LOAD.float.local.aligned {%382} %321 bti:254 LOAD.float.local.aligned {%383} %325 bti:254 LOAD.float.local.aligned {%384} %333 bti:254 LOAD.float.local.aligned {%385} %337 bti:254 LOAD.float.local.aligned {%386} %345 bti:254 LOAD.float.local.aligned {%387} %349 bti:254 LT.float %914 %372 %374 SEL.float %388 %914 %372 %374 LT.float %915 %373 %375 SEL.float %389 %915 %373 %375 GE.float %916 %372 %374 SEL.float %390 %916 %372 %374 GE.float %917 %373 %375 SEL.float %391 %917 %373 %375 LT.float %918 %378 %380 SEL.float %392 %918 %378 %380 LT.float %919 %379 %381 SEL.float %393 %919 %379 %381 GE.float %920 %378 %380 SEL.float %394 %920 %378 %380 GE.float %921 %379 %381 SEL.float %395 %921 %379 %381 LT.float %922 %384 %386 SEL.float %396 %922 %384 %386 LT.float %923 %385 %387 SEL.float %397 %923 %385 %387 GE.float %924 %384 %386 SEL.float %398 %924 %384 %386 GE.float %925 %385 %387 SEL.float %399 %925 %385 %387 LT.float %926 %370 %388 SEL.float %400 %926 %370 %388 LT.float %927 %371 %389 SEL.float %401 %927 %371 %389 GE.float %928 %370 %388 SEL.float %402 %928 %370 %388 GE.float %929 %371 %389 SEL.float %403 %929 %371 %389 LT.float %930 %376 %392 SEL.float %404 %930 %376 %392 LT.float %931 %377 %393 SEL.float %405 %931 %377 %393 GE.float %932 %376 %392 SEL.float %406 %932 %376 %392 GE.float %933 %377 %393 SEL.float %407 %933 %377 %393 LT.float %934 %382 %396 SEL.float %408 %934 %382 %396 LT.float %935 %383 %397 SEL.float %409 %935 %383 %397 GE.float %936 %382 %396 SEL.float %410 %936 %382 %396 GE.float %937 %383 %397 SEL.float %411 %937 %383 %397 LT.float %938 %402 %390 SEL.float %412 %938 %402 %390 LT.float %939 %403 %391 SEL.float %413 %939 %403 %391 GE.float %940 %402 %390 SEL.float %414 %940 %402 %390 GE.float %941 %403 %391 SEL.float %415 %941 %403 %391 LT.float %942 %406 %394 SEL.float %416 %942 %406 %394 LT.float %943 %407 %395 SEL.float %417 %943 %407 %395 GE.float %944 %406 %394 SEL.float %418 %944 %406 %394 GE.float %945 %407 %395 SEL.float %419 %945 %407 %395 LT.float %946 %410 %398 SEL.float %420 %946 %410 %398 LT.float %947 %411 %399 SEL.float %421 %947 %411 %399 GE.float %948 %410 %398 SEL.float %422 %948 %410 %398 GE.float %949 %411 %399 SEL.float %423 %949 %411 %399 LT.float %950 %400 %404 SEL.float %424 %950 %400 %404 LT.float %951 %401 %405 SEL.float %425 %951 %401 %405 GE.float %952 %400 %404 SEL.float %426 %952 %400 %404 GE.float %953 %401 %405 SEL.float %427 %953 %401 %405 LT.float %954 %418 %422 SEL.float %428 %954 %418 %422 LT.float %955 %419 %423 SEL.float %429 %955 %419 %423 GE.float %956 %418 %422 SEL.float %430 %956 %418 %422 GE.float %957 %419 %423 SEL.float %431 %957 %419 %423 LT.float %958 %416 %420 SEL.float %432 %958 %416 %420 LT.float %959 %417 %421 SEL.float %433 %959 %417 %421 GE.float %960 %416 %420 SEL.float %434 %960 %416 %420 GE.float %961 %417 %421 SEL.float %435 %961 %417 %421 LT.float %962 %426 %408 SEL.float %436 %962 %426 %408 LT.float %963 %427 %409 SEL.float %437 %963 %427 %409 GE.float %964 %426 %408 SEL.float %438 %964 %426 %408 GE.float %965 %427 %409 SEL.float %439 %965 %427 %409 GE.float %966 %412 %432 SEL.float %440 %966 %412 %432 GE.float %967 %413 %433 SEL.float %441 %967 %413 %433 LT.float %968 %414 %428 SEL.float %442 %968 %414 %428 LT.float %969 %415 %429 SEL.float %443 %969 %415 %429 GE.float %970 %414 %428 SEL.float %444 %970 %414 %428 GE.float %971 %415 %429 SEL.float %445 %971 %415 %429 LT.float %972 %440 %434 SEL.float %446 %972 %440 %434 LT.float %973 %441 %435 SEL.float %447 %973 %441 %435 LT.float %974 %446 %442 SEL.float %448 %974 %446 %442 LT.float %975 %447 %443 SEL.float %449 %975 %447 %443 GE.float %976 %446 %442 SEL.float %450 %976 %446 %442 GE.float %977 %447 %443 SEL.float %451 %977 %447 %443 GE.float %978 %438 %448 SEL.float %452 %978 %438 %448 GE.float %979 %439 %449 SEL.float %453 %979 %439 %449 LT.float %980 %452 %450 SEL.float %454 %980 %452 %450 LT.float %981 %453 %451 SEL.float %455 %981 %453 %451 LT.float %982 %424 %436 SEL.float %456 %982 %424 %436 LT.float %983 %425 %437 SEL.float %457 %983 %425 %437 GE.float %984 %444 %430 SEL.float %458 %984 %444 %430 GE.float %985 %445 %431 SEL.float %459 %985 %445 %431 SUB.float %460 %458 %456 SUB.float %461 %459 %457 GE.float %986 %460 %46 SEL.float %462 %986 %460 %46 GE.float %987 %461 %46 SEL.float %463 %987 %461 %46 DIV.float %464 %462 %45 DIV.float %465 %463 %45 LOADI.float %988 1 LT.float %989 %464 %988 SEL.float %466 %989 %464 %988 LT.float %991 %465 %988 SEL.float %467 %991 %465 %988 SUB.float %468 %988 %466 MUL.float %469 %378 %466 MAD.float %470 %468 %454 %469 STORE.float.local.aligned %356 {%470} bti:254 SUB.float %471 %988 %467 LOAD.float.local.aligned {%472} %363 bti:254 MUL.float %473 %467 %472 MAD.float %474 %471 %455 %473 STORE.float.local.aligned %363 {%474} bti:254 ADD.float %475 %460 %461 LOADI.float %1000 2 MUL.float %476 %45 %1000 LT.float %477 %475 %476 IF !<%477> -> label$21 LABEL $11 LABEL $12 ELSE -> label$20 <**>label: 21 LOADI.uint32 %1002 0 LOAD.float.local.aligned {%478} %154 bti:254 LOAD.float.local.aligned {%479} %159 bti:254 LOAD.float.local.aligned {%480} %162 bti:254 LOAD.float.local.aligned {%481} %165 bti:254 LOAD.float.local.aligned {%482} %173 bti:254 LOAD.float.local.aligned {%483} %177 bti:254 LOAD.float.local.aligned {%484} %185 bti:254 LOAD.float.local.aligned {%485} %189 bti:254 LOAD.float.local.aligned {%486} %244 bti:254 LOAD.float.local.aligned {%487} %251 bti:254 LOAD.float.local.aligned {%488} %197 bti:254 LOAD.float.local.aligned {%489} %201 bti:254 LOAD.float.local.aligned {%490} %210 bti:254 LOAD.float.local.aligned {%491} %215 bti:254 LOAD.float.local.aligned {%492} %222 bti:254 LOAD.float.local.aligned {%493} %225 bti:254 LOAD.float.local.aligned {%494} %233 bti:254 LOAD.float.local.aligned {%495} %237 bti:254 LT.float %1038 %480 %482 SEL.float %496 %1038 %480 %482 LT.float %1039 %481 %483 SEL.float %497 %1039 %481 %483 GE.float %1040 %480 %482 SEL.float %498 %1040 %480 %482 GE.float %1041 %481 %483 SEL.float %499 %1041 %481 %483 LT.float %1042 %486 %488 SEL.float %500 %1042 %486 %488 LT.float %1043 %487 %489 SEL.float %501 %1043 %487 %489 GE.float %1044 %486 %488 SEL.float %502 %1044 %486 %488 GE.float %1045 %487 %489 SEL.float %503 %1045 %487 %489 LT.float %1046 %492 %494 SEL.float %504 %1046 %492 %494 LT.float %1047 %493 %495 SEL.float %505 %1047 %493 %495 GE.float %1048 %492 %494 SEL.float %506 %1048 %492 %494 GE.float %1049 %493 %495 SEL.float %507 %1049 %493 %495 LT.float %1050 %478 %496 SEL.float %508 %1050 %478 %496 LT.float %1051 %479 %497 SEL.float %509 %1051 %479 %497 GE.float %1052 %478 %496 SEL.float %510 %1052 %478 %496 GE.float %1053 %479 %497 SEL.float %511 %1053 %479 %497 LT.float %1054 %484 %500 SEL.float %512 %1054 %484 %500 LT.float %1055 %485 %501 SEL.float %513 %1055 %485 %501 GE.float %1056 %484 %500 SEL.float %514 %1056 %484 %500 GE.float %1057 %485 %501 SEL.float %515 %1057 %485 %501 LT.float %1058 %490 %504 SEL.float %516 %1058 %490 %504 LT.float %1059 %491 %505 SEL.float %517 %1059 %491 %505 GE.float %1060 %490 %504 SEL.float %518 %1060 %490 %504 GE.float %1061 %491 %505 SEL.float %519 %1061 %491 %505 LT.float %1062 %510 %498 SEL.float %520 %1062 %510 %498 LT.float %1063 %511 %499 SEL.float %521 %1063 %511 %499 GE.float %1064 %510 %498 SEL.float %522 %1064 %510 %498 GE.float %1065 %511 %499 SEL.float %523 %1065 %511 %499 LT.float %1066 %514 %502 SEL.float %524 %1066 %514 %502 LT.float %1067 %515 %503 SEL.float %525 %1067 %515 %503 GE.float %1068 %514 %502 SEL.float %526 %1068 %514 %502 GE.float %1069 %515 %503 SEL.float %527 %1069 %515 %503 LT.float %1070 %518 %506 SEL.float %528 %1070 %518 %506 LT.float %1071 %519 %507 SEL.float %529 %1071 %519 %507 GE.float %1072 %518 %506 SEL.float %530 %1072 %518 %506 GE.float %1073 %519 %507 SEL.float %531 %1073 %519 %507 LT.float %1074 %508 %512 SEL.float %532 %1074 %508 %512 LT.float %1075 %509 %513 SEL.float %533 %1075 %509 %513 GE.float %1076 %508 %512 SEL.float %534 %1076 %508 %512 GE.float %1077 %509 %513 SEL.float %535 %1077 %509 %513 LT.float %1078 %526 %530 SEL.float %536 %1078 %526 %530 LT.float %1079 %527 %531 SEL.float %537 %1079 %527 %531 GE.float %1080 %526 %530 SEL.float %538 %1080 %526 %530 GE.float %1081 %527 %531 SEL.float %539 %1081 %527 %531 LT.float %1082 %524 %528 SEL.float %540 %1082 %524 %528 LT.float %1083 %525 %529 SEL.float %541 %1083 %525 %529 GE.float %1084 %524 %528 SEL.float %542 %1084 %524 %528 GE.float %1085 %525 %529 SEL.float %543 %1085 %525 %529 LT.float %1086 %534 %516 SEL.float %544 %1086 %534 %516 LT.float %1087 %535 %517 SEL.float %545 %1087 %535 %517 GE.float %1088 %534 %516 SEL.float %546 %1088 %534 %516 GE.float %1089 %535 %517 SEL.float %547 %1089 %535 %517 GE.float %1090 %520 %540 SEL.float %548 %1090 %520 %540 GE.float %1091 %521 %541 SEL.float %549 %1091 %521 %541 LT.float %1092 %522 %536 SEL.float %550 %1092 %522 %536 LT.float %1093 %523 %537 SEL.float %551 %1093 %523 %537 GE.float %1094 %522 %536 SEL.float %552 %1094 %522 %536 GE.float %1095 %523 %537 SEL.float %553 %1095 %523 %537 LT.float %1096 %548 %542 SEL.float %554 %1096 %548 %542 LT.float %1097 %549 %543 SEL.float %555 %1097 %549 %543 LT.float %1098 %554 %550 SEL.float %556 %1098 %554 %550 LT.float %1099 %555 %551 SEL.float %557 %1099 %555 %551 GE.float %1100 %554 %550 SEL.float %558 %1100 %554 %550 GE.float %1101 %555 %551 SEL.float %559 %1101 %555 %551 GE.float %1102 %546 %556 SEL.float %560 %1102 %546 %556 GE.float %1103 %547 %557 SEL.float %561 %1103 %547 %557 LT.float %1104 %560 %558 SEL.float %562 %1104 %560 %558 LT.float %1105 %561 %559 SEL.float %563 %1105 %561 %559 LT.float %1106 %532 %544 SEL.float %564 %1106 %532 %544 LT.float %1107 %533 %545 SEL.float %565 %1107 %533 %545 GE.float %1108 %552 %538 SEL.float %566 %1108 %552 %538 GE.float %1109 %553 %539 SEL.float %567 %1109 %553 %539 SUB.float %568 %566 %564 SUB.float %569 %567 %565 GE.float %1110 %568 %46 SEL.float %570 %1110 %568 %46 GE.float %1111 %569 %46 SEL.float %571 %1111 %569 %46 DIV.float %572 %570 %45 DIV.float %573 %571 %45 LOADI.float %1112 1 LT.float %1113 %572 %1112 SEL.float %574 %1113 %572 %1112 LT.float %1115 %573 %1112 SEL.float %575 %1115 %573 %1112 SUB.float %576 %1112 %574 MUL.float %577 %486 %574 MAD.float %578 %576 %562 %577 STORE.float.local.aligned %244 {%578} bti:254 SUB.float %579 %1112 %575 LOAD.float.local.aligned {%580} %251 bti:254 MUL.float %581 %575 %580 MAD.float %582 %579 %563 %581 STORE.float.local.aligned %251 {%582} bti:254 ENDIF -> label$20 LABEL $13 SYNC.workgroup.local_read.local_write LOADI.uint32 %1124 1 ADD.int32 %583 %53 %1124 LT.int32 %584 %583 %63 ADD.int32 %585 %56 %1124 LT.int32 %586 %585 %64 AND.bool %587 %584 %586 BRA<%587> -> label$15 LABEL $14 BRA -> label$16 LABEL $15 LOADI.uint32 %1126 1 SHL.int32 %588 %53 %1126 SHL.int32 %589 %47 %1126 MUL.int32 %590 %589 %56 ADD.int32 %591 %590 %588 LOADI.uint32 %1128 4 MUL.int32 %592 %1128 %62 ADD.int32 %593 %50 %592 LOADI.uint32 %1129 0 LOAD.float.local.aligned {%594 %595} %593 bti:254 MUL.int32 %596 %1128 %591 ADD.int32 %597 %41 %596 SUB.uint32 %1132 %597 %41 STORE.float.global.aligned %1132 {%594 %595} bti:2 LOADI.uint32 %1133 110 ADD.int32 %598 %61 %1133 MUL.int32 %599 %1128 %598 ADD.int32 %600 %50 %599 LOAD.float.local.aligned {%601 %602} %600 bti:254 ADD.int32 %603 %591 %47 MUL.int32 %604 %1128 %603 ADD.int32 %605 %41 %604 SUB.uint32 %1138 %605 %41 STORE.float.global.aligned %1138 {%601 %602} bti:2 LABEL $16 LABEL $17 RET .end_function rawNoiseKernel's SELECTION IR begin: WARNING: not completed yet, welcome for the FIX! [0] L0: [2] CMP.le(16) arf : %23<8,8,1>:UW 0x0:UW [4](f0.1) IF(16) : 0:D [6] MOV(1) %50<0>:UD : 0x4:UD [8] L1: [10] MUL(1) %51<0>:D : %3<0,1,0>:D %12<0,1,0>:UD [12] ADD(16) %52<1>:D : %51<0,1,0>:D %0<8,8,1>:D [14] ADD(16) %53<1>:D : %52<8,8,1>:D %18<0,1,0>:D [16] MUL(1) %54<0>:D : %4<0,1,0>:D %13<0,1,0>:UD [18] ADD(16) %55<1>:D : %54<0,1,0>:D %1<8,8,1>:D [20] ADD(16) %56<1>:D : %55<8,8,1>:D %19<0,1,0>:D [22] SHL(16) %57<1>:D : %1<8,8,1>:D 4:D [24] ADD(16) %58<1>:D : %57<8,8,1>:D %0<8,8,1>:D [26] SHL(16) %59<1>:D : %0<8,8,1>:D 1:D [28] MOV(1) %608<0>:UD : 0x48:UD [30] MUL(16) %60<1>:D : %608<0,1,0>:D %1<8,8,1>:UD [32] ADD(16) %61<1>:D : %60<8,8,1>:D %59<8,8,1>:D [34] ADD(16) %62<1>:D : %61<8,8,1>:D 74:D [36] SHL(1) %63<0>:D : %15<0,1,0>:D 1:D [38] SHL(1) %64<0>:D : %16<0,1,0>:D 1:D [40] CMP.eq(16) arf : %49<0,1,0>:D 0:D [42](f65) IF(16) : 0:D [44] L2: [46] SHL(1) %66<0>:D : %3<0,1,0>:D 5:D [48] ADD(1) %67<0>:D : %66<0,1,0>:D -2:D [50] SHL(1) %68<0>:D : %4<0,1,0>:D 5:D [52] ADD(1) %69<0>:D : %68<0,1,0>:D -2:D [54] CMP.ge(16) arf : %58<8,8,1>:D 1296:D [56](f70) IF(16) : 0:D [58] L3: [60] SHL(1) %71<0>:D : %16<0,1,0>:D 2:D [62] ADD(1) %72<0>:D : %71<0,1,0>:D -2:D [64] SHL(1) %73<0>:D : %15<0,1,0>:D 2:D [66] ADD(1) %74<0>:D : %73<0,1,0>:D -2:D [68] MOV(16) %76<1>:F : %58<8,8,1>:F [70] L4: [72] MOV(1) %622<0>:UD : 0x24:UD [74] MATH(16) %77<1>:D : %76<8,8,1>:D %622<0,1,0>:D [76] ADD(16) %78<1>:D : %67<0,1,0>:D %77<8,8,1>:D [78] MATH(16) %79<1>:D : %76<8,8,1>:D %622<0,1,0>:D [80] ADD(16) %80<1>:D : %69<0,1,0>:D %79<8,8,1>:D [82] CMP.l(16) arf : %78<8,8,1>:D 0:D [84] ADD(16) %82<1>:D : -%78<8,8,1>:D 0:D [86](f81) SEL(16) %83<1>:D : %82<8,8,1>:D %78<8,8,1>:D [88] CMP.l(16) arf : %83<8,8,1>:D %63<0,1,0>:D [90] ADD(16) %85<1>:D : %74<0,1,0>:D -%83<8,8,1>:D [92](f84) SEL(16) %86<1>:D : %83<8,8,1>:D %85<8,8,1>:D [94] CMP.l(16) arf : %80<8,8,1>:D 0:D [96] ADD(16) %88<1>:D : -%80<8,8,1>:D 0:D [98](f87) SEL(16) %89<1>:D : %88<8,8,1>:D %80<8,8,1>:D [100] CMP.l(16) arf : %89<8,8,1>:D %64<0,1,0>:D [102] ADD(16) %91<1>:D : %72<0,1,0>:D -%89<8,8,1>:D [104](f90) SEL(16) %92<1>:D : %89<8,8,1>:D %91<8,8,1>:D [106] MUL(8) arf : %92<8,8,1>:D %47<0,1,0>:D [108] MACH(8) arf : %92<8,8,1>:D %47<0,1,0>:D [110] MOV(8) %93<1>:F : arf [112] MUL(8) arf : %92<8,8,1>:D %47<0,1,0>:D [114] MACH(8) arf : %92<8,8,1>:D %47<0,1,0>:D [116] MOV(8) %1142<1>:F : arf [118] MOV(8) %93<1>:F : %1142<8,8,1>:F [120] ADD(16) %94<1>:D : %93<8,8,1>:D %86<8,8,1>:D [122] MUL(16) %95<1>:UD : %94<8,8,1>:UD 0x2:UW [124] ADD(16) %96<1>:D : %42<0,1,0>:D %95<8,8,1>:D [126] ADD(16) %629<1>:UD : %96<8,8,1>:UD -%42<0,1,0>:UD [128] AND(16) %1140<1>:UD : %629<8,8,1>:UD 0xfffffffc:UD [130] UNTYPED_READ(16) %1139<1>:UD : %1140<8,8,1>:UD 0x3:UD [132] AND(16) %1141<1>:UD : %629<8,8,1>:UD 0x3:UD [134] SHL(16) %1141<1>:UD : %1141<8,8,1>:UD 0x3:UD [136] SHR(16) %1139<1>:UD : %1139<8,8,1>:UD %1141<8,8,1>:UD [138] MOV(16) %97<1>:UW : %1139<16,8,2>:UW [140] MOV(16) %98<1>:F : %97<8,8,1>:UW [142] MOV(1) %630<0>:F : 16383:F [144] MATH(16) %99<1>:F : %98<8,8,1>:F %630<0,1,0>:F [146] MUL(16) %100<1>:UD : %76<8,8,1>:UD 0x4:UW [148] ADD(16) %101<1>:D : %50<0,1,0>:D %100<8,8,1>:D [150] UNTYPED_WRITE(16) : %101<8,8,1>:UD %99<8,8,1>:UD 0xfe:UD [152] ADD(16) %76<1>:D : %76<8,8,1>:D 256:D [154] CMP.l(16) arf : %76<8,8,1>:D 1296:D [156](f103) WHILE(16) : 0:D [158] L5: [160] L23: [162] ENDIF(16) : 0:D [164] L6: [166] ELSE(16) : 0:D [168] L25: [170] SHL(1) %104<0>:D : %3<0,1,0>:D 5:D [172] ADD(1) %105<0>:D : %104<0,1,0>:D -2:D [174] SHL(1) %106<0>:D : %4<0,1,0>:D 5:D [176] ADD(1) %107<0>:D : %106<0,1,0>:D -2:D [178] CMP.ge(16) arf : %58<8,8,1>:D 1296:D [180](f108) IF(16) : 0:D [182] L7: [184] SHL(1) %109<0>:D : %16<0,1,0>:D 2:D [186] ADD(1) %110<0>:D : %109<0,1,0>:D -2:D [188] SHL(1) %111<0>:D : %15<0,1,0>:D 2:D [190] ADD(1) %112<0>:D : %111<0,1,0>:D -2:D [192] MOV(16) %114<1>:F : %58<8,8,1>:F [194] L8: [196] MOV(1) %645<0>:UD : 0x24:UD [198] MATH(16) %115<1>:D : %114<8,8,1>:D %645<0,1,0>:D [200] ADD(16) %116<1>:D : %105<0,1,0>:D %115<8,8,1>:D [202] MATH(16) %117<1>:D : %114<8,8,1>:D %645<0,1,0>:D [204] ADD(16) %118<1>:D : %107<0,1,0>:D %117<8,8,1>:D [206] CMP.l(16) arf : %116<8,8,1>:D 0:D [208] ADD(16) %120<1>:D : -%116<8,8,1>:D 0:D [210](f119) SEL(16) %121<1>:D : %120<8,8,1>:D %116<8,8,1>:D [212] CMP.l(16) arf : %121<8,8,1>:D %63<0,1,0>:D [214] ADD(16) %123<1>:D : %112<0,1,0>:D -%121<8,8,1>:D [216](f122) SEL(16) %124<1>:D : %121<8,8,1>:D %123<8,8,1>:D [218] CMP.l(16) arf : %118<8,8,1>:D 0:D [220] ADD(16) %126<1>:D : -%118<8,8,1>:D 0:D [222](f125) SEL(16) %127<1>:D : %126<8,8,1>:D %118<8,8,1>:D [224] CMP.l(16) arf : %127<8,8,1>:D %64<0,1,0>:D [226] ADD(16) %129<1>:D : %110<0,1,0>:D -%127<8,8,1>:D [228](f128) SEL(16) %130<1>:D : %127<8,8,1>:D %129<8,8,1>:D [230] MUL(8) arf : %130<8,8,1>:D %47<0,1,0>:D [232] MACH(8) arf : %130<8,8,1>:D %47<0,1,0>:D [234] MOV(8) %131<1>:F : arf [236] MUL(8) arf : %130<8,8,1>:D %47<0,1,0>:D [238] MACH(8) arf : %130<8,8,1>:D %47<0,1,0>:D [240] MOV(8) %1143<1>:F : arf [242] MOV(8) %131<1>:F : %1143<8,8,1>:F [244] ADD(16) %132<1>:D : %131<8,8,1>:D %124<8,8,1>:D [246] MUL(16) %133<1>:UD : %132<8,8,1>:UD 0x4:UW [248] ADD(16) %134<1>:D : %42<0,1,0>:D %133<8,8,1>:D [250] ADD(16) %652<1>:UD : %134<8,8,1>:UD -%42<0,1,0>:UD [252] UNTYPED_READ(16) %135<1>:UD : %652<8,8,1>:UD 0x3:UD [254] MUL(16) %136<1>:UD : %114<8,8,1>:UD 0x4:UW [256] ADD(16) %137<1>:D : %50<0,1,0>:D %136<8,8,1>:D [258] UNTYPED_WRITE(16) : %137<8,8,1>:UD %135<8,8,1>:UD 0xfe:UD [260] ADD(16) %114<1>:D : %114<8,8,1>:D 256:D [262] CMP.l(16) arf : %114<8,8,1>:D 1296:D [264](f139) WHILE(16) : 0:D [266] L22: [268] ENDIF(16) : 0:D [270] L24: [272] ENDIF(16) : 0:D [274] L18: [276] ENDIF(16) : 0:D [278] L9: [280] CMP.le(16) arf : %23<8,8,1>:UW 0x9:UW [282](f0.1) MOV(16) %23<1>:UW : 0xffff:UW [284] CMP.eq(16) arf : %23<8,8,1>:UW 0xffff:UW [286](f0.1) JMPI(1) : 0:D [288](f0.1) MOV(16) %23<1>:UW : 0x9:UW [290] BARRIER(16) %1147<1>:F : %1146<8,8,1>:UD [292] XOR(1) %140<0>:W : %44<0,1,0>:W %43<0,1,0>:W [294] MOV(1) %141<0>:D : %140<0,1,0>:UW [296] ADD(16) %142<1>:D : %53<8,8,1>:D %141<0,1,0>:D [298] ADD(16) %143<1>:D : %142<8,8,1>:D %56<8,8,1>:D [300] AND(16) %144<1>:D : %143<8,8,1>:D 1:D [302] CMP.neq(16) arf : %144<8,8,1>:D 0:D [304] ADD(16) %146<1>:D : %61<8,8,1>:D 75:D [306](f145) SEL(16) %147<1>:D : %62<8,8,1>:D %146<8,8,1>:D [308] SHL(16) %148<1>:D : %144<8,8,1>:D 1:D [310] ADD(16) %149<1>:D : %147<8,8,1>:D %148<8,8,1>:D [312] ADD(16) %150<1>:D : %149<8,8,1>:D 35:D [314] ADD(16) %151<1>:D : %147<8,8,1>:D -72:D [316] ADD(16) %152<1>:D : %147<8,8,1>:D -74:D [318] MUL(16) %153<1>:UD : %152<8,8,1>:UD 0x4:UW [320] ADD(16) %154<1>:D : %50<0,1,0>:D %153<8,8,1>:D [322] UNTYPED_READ(16) %155<1>:UD : %154<8,8,1>:UD 0xfe:UD [324] ADD(16) %156<1>:D : %149<8,8,1>:D -37:D [326] ADD(16) %157<1>:D : %149<8,8,1>:D -39:D [328] MUL(16) %158<1>:UD : %157<8,8,1>:UD 0x4:UW [330] ADD(16) %159<1>:D : %50<0,1,0>:D %158<8,8,1>:D [332] UNTYPED_READ(16) %160<1>:UD : %159<8,8,1>:UD 0xfe:UD [334] MUL(16) %161<1>:UD : %151<8,8,1>:UD 0x4:UW [336] ADD(16) %162<1>:D : %50<0,1,0>:D %161<8,8,1>:D [338] UNTYPED_READ(16) %163<1>:UD : %162<8,8,1>:UD 0xfe:UD [340] MUL(16) %164<1>:UD : %156<8,8,1>:UD 0x4:UW [342] ADD(16) %165<1>:D : %50<0,1,0>:D %164<8,8,1>:D [344] UNTYPED_READ(16) %166<1>:UD : %165<8,8,1>:UD 0xfe:UD [346] SEL_CMP(16) %167<1>:F : %155<8,8,1>:F %163<8,8,1>:F [348] SEL_CMP(16) %168<1>:F : %160<8,8,1>:F %166<8,8,1>:F [350] SEL_CMP(16) %169<1>:F : %155<8,8,1>:F %163<8,8,1>:F [352] SEL_CMP(16) %170<1>:F : %160<8,8,1>:F %166<8,8,1>:F [354] ADD(16) %171<1>:D : %147<8,8,1>:D -70:D [356] MUL(16) %172<1>:UD : %171<8,8,1>:UD 0x4:UW [358] ADD(16) %173<1>:D : %50<0,1,0>:D %172<8,8,1>:D [360] UNTYPED_READ(16) %174<1>:UD : %173<8,8,1>:UD 0xfe:UD [362] ADD(16) %175<1>:D : %149<8,8,1>:D -35:D [364] MUL(16) %176<1>:UD : %175<8,8,1>:UD 0x4:UW [366] ADD(16) %177<1>:D : %50<0,1,0>:D %176<8,8,1>:D [368] UNTYPED_READ(16) %178<1>:UD : %177<8,8,1>:UD 0xfe:UD [370] SEL_CMP(16) %179<1>:F : %167<8,8,1>:F %174<8,8,1>:F [372] SEL_CMP(16) %180<1>:F : %168<8,8,1>:F %178<8,8,1>:F [374] SEL_CMP(16) %181<1>:F : %169<8,8,1>:F %174<8,8,1>:F [376] SEL_CMP(16) %182<1>:F : %170<8,8,1>:F %178<8,8,1>:F [378] ADD(16) %183<1>:D : %147<8,8,1>:D -2:D [380] MUL(16) %184<1>:UD : %183<8,8,1>:UD 0x4:UW [382] ADD(16) %185<1>:D : %50<0,1,0>:D %184<8,8,1>:D [384] UNTYPED_READ(16) %186<1>:UD : %185<8,8,1>:UD 0xfe:UD [386] ADD(16) %187<1>:D : %149<8,8,1>:D 33:D [388] MUL(16) %188<1>:UD : %187<8,8,1>:UD 0x4:UW [390] ADD(16) %189<1>:D : %50<0,1,0>:D %188<8,8,1>:D [392] UNTYPED_READ(16) %190<1>:UD : %189<8,8,1>:UD 0xfe:UD [394] SEL_CMP(16) %191<1>:F : %179<8,8,1>:F %186<8,8,1>:F [396] SEL_CMP(16) %192<1>:F : %180<8,8,1>:F %190<8,8,1>:F [398] SEL_CMP(16) %193<1>:F : %181<8,8,1>:F %186<8,8,1>:F [400] SEL_CMP(16) %194<1>:F : %182<8,8,1>:F %190<8,8,1>:F [402] ADD(16) %195<1>:D : %147<8,8,1>:D 2:D [404] MUL(16) %196<1>:UD : %195<8,8,1>:UD 0x4:UW [406] ADD(16) %197<1>:D : %50<0,1,0>:D %196<8,8,1>:D [408] UNTYPED_READ(16) %198<1>:UD : %197<8,8,1>:UD 0xfe:UD [410] ADD(16) %199<1>:D : %149<8,8,1>:D 37:D [412] MUL(16) %200<1>:UD : %199<8,8,1>:UD 0x4:UW [414] ADD(16) %201<1>:D : %50<0,1,0>:D %200<8,8,1>:D [416] UNTYPED_READ(16) %202<1>:UD : %201<8,8,1>:UD 0xfe:UD [418] SEL_CMP(16) %203<1>:F : %191<8,8,1>:F %198<8,8,1>:F [420] SEL_CMP(16) %204<1>:F : %192<8,8,1>:F %202<8,8,1>:F [422] SEL_CMP(16) %205<1>:F : %193<8,8,1>:F %198<8,8,1>:F [424] SEL_CMP(16) %206<1>:F : %194<8,8,1>:F %202<8,8,1>:F [426] ADD(16) %207<1>:D : %147<8,8,1>:D 72:D [428] ADD(16) %208<1>:D : %147<8,8,1>:D 70:D [430] MUL(16) %209<1>:UD : %208<8,8,1>:UD 0x4:UW [432] ADD(16) %210<1>:D : %50<0,1,0>:D %209<8,8,1>:D [434] UNTYPED_READ(16) %211<1>:UD : %210<8,8,1>:UD 0xfe:UD [436] ADD(16) %212<1>:D : %149<8,8,1>:D 107:D [438] ADD(16) %213<1>:D : %149<8,8,1>:D 105:D [440] MUL(16) %214<1>:UD : %213<8,8,1>:UD 0x4:UW [442] ADD(16) %215<1>:D : %50<0,1,0>:D %214<8,8,1>:D [444] UNTYPED_READ(16) %216<1>:UD : %215<8,8,1>:UD 0xfe:UD [446] SEL_CMP(16) %217<1>:F : %203<8,8,1>:F %211<8,8,1>:F [448] SEL_CMP(16) %218<1>:F : %204<8,8,1>:F %216<8,8,1>:F [450] SEL_CMP(16) %219<1>:F : %205<8,8,1>:F %211<8,8,1>:F [452] SEL_CMP(16) %220<1>:F : %206<8,8,1>:F %216<8,8,1>:F [454] MUL(16) %221<1>:UD : %207<8,8,1>:UD 0x4:UW [456] ADD(16) %222<1>:D : %50<0,1,0>:D %221<8,8,1>:D [458] UNTYPED_READ(16) %223<1>:UD : %222<8,8,1>:UD 0xfe:UD [460] MUL(16) %224<1>:UD : %212<8,8,1>:UD 0x4:UW [462] ADD(16) %225<1>:D : %50<0,1,0>:D %224<8,8,1>:D [464] UNTYPED_READ(16) %226<1>:UD : %225<8,8,1>:UD 0xfe:UD [466] SEL_CMP(16) %227<1>:F : %217<8,8,1>:F %223<8,8,1>:F [468] SEL_CMP(16) %228<1>:F : %218<8,8,1>:F %226<8,8,1>:F [470] SEL_CMP(16) %229<1>:F : %219<8,8,1>:F %223<8,8,1>:F [472] SEL_CMP(16) %230<1>:F : %220<8,8,1>:F %226<8,8,1>:F [474] ADD(16) %231<1>:D : %147<8,8,1>:D 74:D [476] MUL(16) %232<1>:UD : %231<8,8,1>:UD 0x4:UW [478] ADD(16) %233<1>:D : %50<0,1,0>:D %232<8,8,1>:D [480] UNTYPED_READ(16) %234<1>:UD : %233<8,8,1>:UD 0xfe:UD [482] ADD(16) %235<1>:D : %149<8,8,1>:D 109:D [484] MUL(16) %236<1>:UD : %235<8,8,1>:UD 0x4:UW [486] ADD(16) %237<1>:D : %50<0,1,0>:D %236<8,8,1>:D [488] UNTYPED_READ(16) %238<1>:UD : %237<8,8,1>:UD 0xfe:UD [490] SEL_CMP(16) %239<1>:F : %227<8,8,1>:F %234<8,8,1>:F [492] SEL_CMP(16) %240<1>:F : %228<8,8,1>:F %238<8,8,1>:F [494] SEL_CMP(16) %241<1>:F : %229<8,8,1>:F %234<8,8,1>:F [496] SEL_CMP(16) %242<1>:F : %230<8,8,1>:F %238<8,8,1>:F [498] MUL(16) %243<1>:UD : %147<8,8,1>:UD 0x4:UW [500] ADD(16) %244<1>:D : %50<0,1,0>:D %243<8,8,1>:D [502] UNTYPED_READ(16) %245<1>:UD : %244<8,8,1>:UD 0xfe:UD [504] CMP.g(16) arf : %245<8,8,1>:F %239<8,8,1>:F [506](f246) SEL(16) %247<1>:F : %239<8,8,1>:F %245<8,8,1>:F [508] CMP.l(16) arf : %247<8,8,1>:F %241<8,8,1>:F [510](f248) SEL(16) %249<1>:F : %241<8,8,1>:F %247<8,8,1>:F [512] UNTYPED_WRITE(16) : %244<8,8,1>:UD %249<8,8,1>:UD 0xfe:UD [514] MUL(16) %250<1>:UD : %150<8,8,1>:UD 0x4:UW [516] ADD(16) %251<1>:D : %50<0,1,0>:D %250<8,8,1>:D [518] UNTYPED_READ(16) %252<1>:UD : %251<8,8,1>:UD 0xfe:UD [520] CMP.g(16) arf : %252<8,8,1>:F %240<8,8,1>:F [522](f253) SEL(16) %254<1>:F : %240<8,8,1>:F %252<8,8,1>:F [524] CMP.l(16) arf : %254<8,8,1>:F %242<8,8,1>:F [526](f255) SEL(16) %256<1>:F : %242<8,8,1>:F %254<8,8,1>:F [528] UNTYPED_WRITE(16) : %251<8,8,1>:UD %256<8,8,1>:UD 0xfe:UD [530](f145) SEL(16) %257<1>:D : %146<8,8,1>:D %62<8,8,1>:D [532] ADD(16) %258<1>:D : %257<8,8,1>:D 36:D [534] XOR(16) %259<1>:D : %148<8,8,1>:D 2:D [536] ADD(16) %260<1>:D : %259<8,8,1>:D -1:D [538] ADD(16) %261<1>:D : %258<8,8,1>:D %260<8,8,1>:D [540] ADD(16) %262<1>:D : %257<8,8,1>:D -72:D [542] MUL(16) %263<1>:UD : %262<8,8,1>:UD 0x4:UW [544] ADD(16) %264<1>:D : %50<0,1,0>:D %263<8,8,1>:D [546] UNTYPED_READ(16) %265<1>:UD : %264<8,8,1>:UD 0xfe:UD [548] ADD(16) %266<1>:D : %261<8,8,1>:D -72:D [550] MUL(16) %267<1>:UD : %266<8,8,1>:UD 0x4:UW [552] ADD(16) %268<1>:D : %50<0,1,0>:D %267<8,8,1>:D [554] UNTYPED_READ(16) %269<1>:UD : %268<8,8,1>:UD 0xfe:UD [556] ADD(16) %270<1>:D : %257<8,8,1>:D -37:D [558] MUL(16) %271<1>:UD : %270<8,8,1>:UD 0x4:UW [560] ADD(16) %272<1>:D : %50<0,1,0>:D %271<8,8,1>:D [562] UNTYPED_READ(16) %273<1>:UD : %272<8,8,1>:UD 0xfe:UD [564] ADD(16) %274<1>:D : %257<8,8,1>:D -1:D [566] ADD(16) %275<1>:D : %274<8,8,1>:D %260<8,8,1>:D [568] MUL(16) %276<1>:UD : %275<8,8,1>:UD 0x4:UW [570] ADD(16) %277<1>:D : %50<0,1,0>:D %276<8,8,1>:D [572] UNTYPED_READ(16) %278<1>:UD : %277<8,8,1>:UD 0xfe:UD [574] SEL_CMP(16) %279<1>:F : %265<8,8,1>:F %273<8,8,1>:F [576] SEL_CMP(16) %280<1>:F : %269<8,8,1>:F %278<8,8,1>:F [578] SEL_CMP(16) %281<1>:F : %265<8,8,1>:F %273<8,8,1>:F [580] SEL_CMP(16) %282<1>:F : %269<8,8,1>:F %278<8,8,1>:F [582] ADD(16) %283<1>:D : %257<8,8,1>:D -35:D [584] MUL(16) %284<1>:UD : %283<8,8,1>:UD 0x4:UW [586] ADD(16) %285<1>:D : %50<0,1,0>:D %284<8,8,1>:D [588] UNTYPED_READ(16) %286<1>:UD : %285<8,8,1>:UD 0xfe:UD [590] ADD(16) %287<1>:D : %257<8,8,1>:D %259<8,8,1>:D [592] MUL(16) %288<1>:UD : %287<8,8,1>:UD 0x4:UW [594] ADD(16) %289<1>:D : %50<0,1,0>:D %288<8,8,1>:D [596] UNTYPED_READ(16) %290<1>:UD : %289<8,8,1>:UD 0xfe:UD [598] SEL_CMP(16) %291<1>:F : %279<8,8,1>:F %286<8,8,1>:F [600] SEL_CMP(16) %292<1>:F : %280<8,8,1>:F %290<8,8,1>:F [602] SEL_CMP(16) %293<1>:F : %281<8,8,1>:F %286<8,8,1>:F [604] SEL_CMP(16) %294<1>:F : %282<8,8,1>:F %290<8,8,1>:F [606] ADD(16) %295<1>:D : %257<8,8,1>:D -2:D [608] MUL(16) %296<1>:UD : %295<8,8,1>:UD 0x4:UW [610] ADD(16) %297<1>:D : %50<0,1,0>:D %296<8,8,1>:D [612] UNTYPED_READ(16) %298<1>:UD : %297<8,8,1>:UD 0xfe:UD [614] ADD(16) %299<1>:D : %261<8,8,1>:D -2:D [616] MUL(16) %300<1>:UD : %299<8,8,1>:UD 0x4:UW [618] ADD(16) %301<1>:D : %50<0,1,0>:D %300<8,8,1>:D [620] UNTYPED_READ(16) %302<1>:UD : %301<8,8,1>:UD 0xfe:UD [622] SEL_CMP(16) %303<1>:F : %291<8,8,1>:F %298<8,8,1>:F [624] SEL_CMP(16) %304<1>:F : %292<8,8,1>:F %302<8,8,1>:F [626] SEL_CMP(16) %305<1>:F : %293<8,8,1>:F %298<8,8,1>:F [628] SEL_CMP(16) %306<1>:F : %294<8,8,1>:F %302<8,8,1>:F [630] ADD(16) %307<1>:D : %257<8,8,1>:D 2:D [632] MUL(16) %308<1>:UD : %307<8,8,1>:UD 0x4:UW [634] ADD(16) %309<1>:D : %50<0,1,0>:D %308<8,8,1>:D [636] UNTYPED_READ(16) %310<1>:UD : %309<8,8,1>:UD 0xfe:UD [638] ADD(16) %311<1>:D : %261<8,8,1>:D 2:D [640] MUL(16) %312<1>:UD : %311<8,8,1>:UD 0x4:UW [642] ADD(16) %313<1>:D : %50<0,1,0>:D %312<8,8,1>:D [644] UNTYPED_READ(16) %314<1>:UD : %313<8,8,1>:UD 0xfe:UD [646] SEL_CMP(16) %315<1>:F : %303<8,8,1>:F %310<8,8,1>:F [648] SEL_CMP(16) %316<1>:F : %304<8,8,1>:F %314<8,8,1>:F [650] SEL_CMP(16) %317<1>:F : %305<8,8,1>:F %310<8,8,1>:F [652] SEL_CMP(16) %318<1>:F : %306<8,8,1>:F %314<8,8,1>:F [654] ADD(16) %319<1>:D : %257<8,8,1>:D 35:D [656] MUL(16) %320<1>:UD : %319<8,8,1>:UD 0x4:UW [658] ADD(16) %321<1>:D : %50<0,1,0>:D %320<8,8,1>:D [660] UNTYPED_READ(16) %322<1>:UD : %321<8,8,1>:UD 0xfe:UD [662] ADD(16) %323<1>:D : %261<8,8,1>:D 35:D [664] MUL(16) %324<1>:UD : %323<8,8,1>:UD 0x4:UW [666] ADD(16) %325<1>:D : %50<0,1,0>:D %324<8,8,1>:D [668] UNTYPED_READ(16) %326<1>:UD : %325<8,8,1>:UD 0xfe:UD [670] SEL_CMP(16) %327<1>:F : %315<8,8,1>:F %322<8,8,1>:F [672] SEL_CMP(16) %328<1>:F : %316<8,8,1>:F %326<8,8,1>:F [674] SEL_CMP(16) %329<1>:F : %317<8,8,1>:F %322<8,8,1>:F [676] SEL_CMP(16) %330<1>:F : %318<8,8,1>:F %326<8,8,1>:F [678] ADD(16) %331<1>:D : %257<8,8,1>:D 37:D [680] MUL(16) %332<1>:UD : %331<8,8,1>:UD 0x4:UW [682] ADD(16) %333<1>:D : %50<0,1,0>:D %332<8,8,1>:D [684] UNTYPED_READ(16) %334<1>:UD : %333<8,8,1>:UD 0xfe:UD [686] ADD(16) %335<1>:D : %261<8,8,1>:D 37:D [688] MUL(16) %336<1>:UD : %335<8,8,1>:UD 0x4:UW [690] ADD(16) %337<1>:D : %50<0,1,0>:D %336<8,8,1>:D [692] UNTYPED_READ(16) %338<1>:UD : %337<8,8,1>:UD 0xfe:UD [694] SEL_CMP(16) %339<1>:F : %327<8,8,1>:F %334<8,8,1>:F [696] SEL_CMP(16) %340<1>:F : %328<8,8,1>:F %338<8,8,1>:F [698] SEL_CMP(16) %341<1>:F : %329<8,8,1>:F %334<8,8,1>:F [700] SEL_CMP(16) %342<1>:F : %330<8,8,1>:F %338<8,8,1>:F [702] ADD(16) %343<1>:D : %257<8,8,1>:D 72:D [704] MUL(16) %344<1>:UD : %343<8,8,1>:UD 0x4:UW [706] ADD(16) %345<1>:D : %50<0,1,0>:D %344<8,8,1>:D [708] UNTYPED_READ(16) %346<1>:UD : %345<8,8,1>:UD 0xfe:UD [710] ADD(16) %347<1>:D : %261<8,8,1>:D 72:D [712] MUL(16) %348<1>:UD : %347<8,8,1>:UD 0x4:UW [714] ADD(16) %349<1>:D : %50<0,1,0>:D %348<8,8,1>:D [716] UNTYPED_READ(16) %350<1>:UD : %349<8,8,1>:UD 0xfe:UD [718] SEL_CMP(16) %351<1>:F : %339<8,8,1>:F %346<8,8,1>:F [720] SEL_CMP(16) %352<1>:F : %340<8,8,1>:F %350<8,8,1>:F [722] SEL_CMP(16) %353<1>:F : %341<8,8,1>:F %346<8,8,1>:F [724] SEL_CMP(16) %354<1>:F : %342<8,8,1>:F %350<8,8,1>:F [726] MUL(16) %355<1>:UD : %257<8,8,1>:UD 0x4:UW [728] ADD(16) %356<1>:D : %50<0,1,0>:D %355<8,8,1>:D [730] UNTYPED_READ(16) %357<1>:UD : %356<8,8,1>:UD 0xfe:UD [732] CMP.g(16) arf : %357<8,8,1>:F %351<8,8,1>:F [734](f358) SEL(16) %359<1>:F : %351<8,8,1>:F %357<8,8,1>:F [736] CMP.l(16) arf : %359<8,8,1>:F %353<8,8,1>:F [738](f360) SEL(16) %361<1>:F : %353<8,8,1>:F %359<8,8,1>:F [740] UNTYPED_WRITE(16) : %356<8,8,1>:UD %361<8,8,1>:UD 0xfe:UD [742] MUL(16) %362<1>:UD : %261<8,8,1>:UD 0x4:UW [744] ADD(16) %363<1>:D : %50<0,1,0>:D %362<8,8,1>:D [746] UNTYPED_READ(16) %364<1>:UD : %363<8,8,1>:UD 0xfe:UD [748] CMP.g(16) arf : %364<8,8,1>:F %352<8,8,1>:F [750](f365) SEL(16) %366<1>:F : %352<8,8,1>:F %364<8,8,1>:F [752] CMP.l(16) arf : %366<8,8,1>:F %354<8,8,1>:F [754](f367) SEL(16) %368<1>:F : %354<8,8,1>:F %366<8,8,1>:F [756] UNTYPED_WRITE(16) : %363<8,8,1>:UD %368<8,8,1>:UD 0xfe:UD [758] BARRIER(16) %1145<1>:F : %1144<8,8,1>:UD [760] CMP.neq(16) arf : %48<0,1,0>:D 1:D [762](f369) MOV(16) %23<1>:UW : 0xd:UW [764] L10: [766] CMP.le(16) arf : %23<8,8,1>:UW 0xa:UW [768](f0.1) JMPI(1) : 0:D [770](f0.1) IF(16) : 0:D [772] UNTYPED_READ(16) %370<1>:UD : %264<8,8,1>:UD 0xfe:UD [774] UNTYPED_READ(16) %371<1>:UD : %268<8,8,1>:UD 0xfe:UD [776] UNTYPED_READ(16) %372<1>:UD : %272<8,8,1>:UD 0xfe:UD [778] UNTYPED_READ(16) %373<1>:UD : %277<8,8,1>:UD 0xfe:UD [780] UNTYPED_READ(16) %374<1>:UD : %285<8,8,1>:UD 0xfe:UD [782] UNTYPED_READ(16) %375<1>:UD : %289<8,8,1>:UD 0xfe:UD [784] UNTYPED_READ(16) %376<1>:UD : %297<8,8,1>:UD 0xfe:UD [786] UNTYPED_READ(16) %377<1>:UD : %301<8,8,1>:UD 0xfe:UD [788] UNTYPED_READ(16) %378<1>:UD : %356<8,8,1>:UD 0xfe:UD [790] UNTYPED_READ(16) %379<1>:UD : %363<8,8,1>:UD 0xfe:UD [792] UNTYPED_READ(16) %380<1>:UD : %309<8,8,1>:UD 0xfe:UD [794] UNTYPED_READ(16) %381<1>:UD : %313<8,8,1>:UD 0xfe:UD [796] UNTYPED_READ(16) %382<1>:UD : %321<8,8,1>:UD 0xfe:UD [798] UNTYPED_READ(16) %383<1>:UD : %325<8,8,1>:UD 0xfe:UD [800] UNTYPED_READ(16) %384<1>:UD : %333<8,8,1>:UD 0xfe:UD [802] UNTYPED_READ(16) %385<1>:UD : %337<8,8,1>:UD 0xfe:UD [804] UNTYPED_READ(16) %386<1>:UD : %345<8,8,1>:UD 0xfe:UD [806] UNTYPED_READ(16) %387<1>:UD : %349<8,8,1>:UD 0xfe:UD [808] SEL_CMP(16) %388<1>:F : %372<8,8,1>:F %374<8,8,1>:F [810] SEL_CMP(16) %389<1>:F : %373<8,8,1>:F %375<8,8,1>:F [812] SEL_CMP(16) %390<1>:F : %372<8,8,1>:F %374<8,8,1>:F [814] SEL_CMP(16) %391<1>:F : %373<8,8,1>:F %375<8,8,1>:F [816] SEL_CMP(16) %392<1>:F : %378<8,8,1>:F %380<8,8,1>:F [818] SEL_CMP(16) %393<1>:F : %379<8,8,1>:F %381<8,8,1>:F [820] SEL_CMP(16) %394<1>:F : %378<8,8,1>:F %380<8,8,1>:F [822] SEL_CMP(16) %395<1>:F : %379<8,8,1>:F %381<8,8,1>:F [824] SEL_CMP(16) %396<1>:F : %384<8,8,1>:F %386<8,8,1>:F [826] SEL_CMP(16) %397<1>:F : %385<8,8,1>:F %387<8,8,1>:F [828] SEL_CMP(16) %398<1>:F : %384<8,8,1>:F %386<8,8,1>:F [830] SEL_CMP(16) %399<1>:F : %385<8,8,1>:F %387<8,8,1>:F [832] SEL_CMP(16) %400<1>:F : %370<8,8,1>:F %388<8,8,1>:F [834] SEL_CMP(16) %401<1>:F : %371<8,8,1>:F %389<8,8,1>:F [836] SEL_CMP(16) %402<1>:F : %370<8,8,1>:F %388<8,8,1>:F [838] SEL_CMP(16) %403<1>:F : %371<8,8,1>:F %389<8,8,1>:F [840] SEL_CMP(16) %404<1>:F : %376<8,8,1>:F %392<8,8,1>:F [842] SEL_CMP(16) %405<1>:F : %377<8,8,1>:F %393<8,8,1>:F [844] SEL_CMP(16) %406<1>:F : %376<8,8,1>:F %392<8,8,1>:F [846] SEL_CMP(16) %407<1>:F : %377<8,8,1>:F %393<8,8,1>:F [848] SEL_CMP(16) %408<1>:F : %382<8,8,1>:F %396<8,8,1>:F [850] SEL_CMP(16) %409<1>:F : %383<8,8,1>:F %397<8,8,1>:F [852] SEL_CMP(16) %410<1>:F : %382<8,8,1>:F %396<8,8,1>:F [854] SEL_CMP(16) %411<1>:F : %383<8,8,1>:F %397<8,8,1>:F [856] SEL_CMP(16) %412<1>:F : %402<8,8,1>:F %390<8,8,1>:F [858] SEL_CMP(16) %413<1>:F : %403<8,8,1>:F %391<8,8,1>:F [860] SEL_CMP(16) %414<1>:F : %402<8,8,1>:F %390<8,8,1>:F [862] SEL_CMP(16) %415<1>:F : %403<8,8,1>:F %391<8,8,1>:F [864] SEL_CMP(16) %416<1>:F : %406<8,8,1>:F %394<8,8,1>:F [866] SEL_CMP(16) %417<1>:F : %407<8,8,1>:F %395<8,8,1>:F [868] SEL_CMP(16) %418<1>:F : %406<8,8,1>:F %394<8,8,1>:F [870] SEL_CMP(16) %419<1>:F : %407<8,8,1>:F %395<8,8,1>:F [872] SEL_CMP(16) %420<1>:F : %410<8,8,1>:F %398<8,8,1>:F [874] SEL_CMP(16) %421<1>:F : %411<8,8,1>:F %399<8,8,1>:F [876] SEL_CMP(16) %422<1>:F : %410<8,8,1>:F %398<8,8,1>:F [878] SEL_CMP(16) %423<1>:F : %411<8,8,1>:F %399<8,8,1>:F [880] SEL_CMP(16) %424<1>:F : %400<8,8,1>:F %404<8,8,1>:F [882] SEL_CMP(16) %425<1>:F : %401<8,8,1>:F %405<8,8,1>:F [884] SEL_CMP(16) %426<1>:F : %400<8,8,1>:F %404<8,8,1>:F [886] SEL_CMP(16) %427<1>:F : %401<8,8,1>:F %405<8,8,1>:F [888] SEL_CMP(16) %428<1>:F : %418<8,8,1>:F %422<8,8,1>:F [890] SEL_CMP(16) %429<1>:F : %419<8,8,1>:F %423<8,8,1>:F [892] SEL_CMP(16) %430<1>:F : %418<8,8,1>:F %422<8,8,1>:F [894] SEL_CMP(16) %431<1>:F : %419<8,8,1>:F %423<8,8,1>:F [896] SEL_CMP(16) %432<1>:F : %416<8,8,1>:F %420<8,8,1>:F [898] SEL_CMP(16) %433<1>:F : %417<8,8,1>:F %421<8,8,1>:F [900] SEL_CMP(16) %434<1>:F : %416<8,8,1>:F %420<8,8,1>:F [902] SEL_CMP(16) %435<1>:F : %417<8,8,1>:F %421<8,8,1>:F [904] SEL_CMP(16) %436<1>:F : %426<8,8,1>:F %408<8,8,1>:F [906] SEL_CMP(16) %437<1>:F : %427<8,8,1>:F %409<8,8,1>:F [908] SEL_CMP(16) %438<1>:F : %426<8,8,1>:F %408<8,8,1>:F [910] SEL_CMP(16) %439<1>:F : %427<8,8,1>:F %409<8,8,1>:F [912] SEL_CMP(16) %440<1>:F : %412<8,8,1>:F %432<8,8,1>:F [914] SEL_CMP(16) %441<1>:F : %413<8,8,1>:F %433<8,8,1>:F [916] SEL_CMP(16) %442<1>:F : %414<8,8,1>:F %428<8,8,1>:F [918] SEL_CMP(16) %443<1>:F : %415<8,8,1>:F %429<8,8,1>:F [920] SEL_CMP(16) %444<1>:F : %414<8,8,1>:F %428<8,8,1>:F [922] SEL_CMP(16) %445<1>:F : %415<8,8,1>:F %429<8,8,1>:F [924] SEL_CMP(16) %446<1>:F : %440<8,8,1>:F %434<8,8,1>:F [926] SEL_CMP(16) %447<1>:F : %441<8,8,1>:F %435<8,8,1>:F [928] SEL_CMP(16) %448<1>:F : %446<8,8,1>:F %442<8,8,1>:F [930] SEL_CMP(16) %449<1>:F : %447<8,8,1>:F %443<8,8,1>:F [932] SEL_CMP(16) %450<1>:F : %446<8,8,1>:F %442<8,8,1>:F [934] SEL_CMP(16) %451<1>:F : %447<8,8,1>:F %443<8,8,1>:F [936] SEL_CMP(16) %452<1>:F : %438<8,8,1>:F %448<8,8,1>:F [938] SEL_CMP(16) %453<1>:F : %439<8,8,1>:F %449<8,8,1>:F [940] SEL_CMP(16) %454<1>:F : %452<8,8,1>:F %450<8,8,1>:F [942] SEL_CMP(16) %455<1>:F : %453<8,8,1>:F %451<8,8,1>:F [944] SEL_CMP(16) %456<1>:F : %424<8,8,1>:F %436<8,8,1>:F [946] SEL_CMP(16) %457<1>:F : %425<8,8,1>:F %437<8,8,1>:F [948] SEL_CMP(16) %458<1>:F : %444<8,8,1>:F %430<8,8,1>:F [950] SEL_CMP(16) %459<1>:F : %445<8,8,1>:F %431<8,8,1>:F [952] ADD(16) %460<1>:F : %458<8,8,1>:F -%456<8,8,1>:F [954] ADD(16) %461<1>:F : %459<8,8,1>:F -%457<8,8,1>:F [956] SEL_CMP(16) %462<1>:F : %460<8,8,1>:F %46<0,1,0>:F [958] SEL_CMP(16) %463<1>:F : %461<8,8,1>:F %46<0,1,0>:F [960] MATH(16) %464<1>:F : %462<8,8,1>:F %45<0,1,0>:F [962] MATH(16) %465<1>:F : %463<8,8,1>:F %45<0,1,0>:F [964] SEL_CMP(16) %466<1>:F : %464<8,8,1>:F 1:F [966] SEL_CMP(16) %467<1>:F : %465<8,8,1>:F 1:F [968] ADD(16) %468<1>:F : -%466<8,8,1>:F 1:F [970] MUL(16) %469<1>:F : %378<8,8,1>:F %466<8,8,1>:F [972] MAD(16) %470<1>:F : %469<8,8,1>:F %468<8,8,1>:F %454<8,8,1>:F [974] UNTYPED_WRITE(16) : %356<8,8,1>:UD %470<8,8,1>:UD 0xfe:UD [976] ADD(16) %471<1>:F : -%467<8,8,1>:F 1:F [978] UNTYPED_READ(16) %472<1>:UD : %363<8,8,1>:UD 0xfe:UD [980] MUL(16) %473<1>:F : %467<8,8,1>:F %472<8,8,1>:F [982] MAD(16) %474<1>:F : %473<8,8,1>:F %471<8,8,1>:F %455<8,8,1>:F [984] UNTYPED_WRITE(16) : %363<8,8,1>:UD %474<8,8,1>:UD 0xfe:UD [986] ADD(16) %475<1>:F : %460<8,8,1>:F %461<8,8,1>:F [988] MUL(1) %476<0>:F : %45<0,1,0>:F 2:F [990] CMP.l(16) arf : %475<8,8,1>:F %476<0,1,0>:F [992](f477) IF(16) : 0:D [994] L11: [996] L12: [998] ELSE(16) : 0:D [1000] L21: [1002] UNTYPED_READ(16) %478<1>:UD : %154<8,8,1>:UD 0xfe:UD [1004] UNTYPED_READ(16) %479<1>:UD : %159<8,8,1>:UD 0xfe:UD [1006] UNTYPED_READ(16) %480<1>:UD : %162<8,8,1>:UD 0xfe:UD [1008] UNTYPED_READ(16) %481<1>:UD : %165<8,8,1>:UD 0xfe:UD [1010] UNTYPED_READ(16) %482<1>:UD : %173<8,8,1>:UD 0xfe:UD [1012] UNTYPED_READ(16) %483<1>:UD : %177<8,8,1>:UD 0xfe:UD [1014] UNTYPED_READ(16) %484<1>:UD : %185<8,8,1>:UD 0xfe:UD [1016] UNTYPED_READ(16) %485<1>:UD : %189<8,8,1>:UD 0xfe:UD [1018] UNTYPED_READ(16) %486<1>:UD : %244<8,8,1>:UD 0xfe:UD [1020] UNTYPED_READ(16) %487<1>:UD : %251<8,8,1>:UD 0xfe:UD [1022] UNTYPED_READ(16) %488<1>:UD : %197<8,8,1>:UD 0xfe:UD [1024] UNTYPED_READ(16) %489<1>:UD : %201<8,8,1>:UD 0xfe:UD [1026] UNTYPED_READ(16) %490<1>:UD : %210<8,8,1>:UD 0xfe:UD [1028] UNTYPED_READ(16) %491<1>:UD : %215<8,8,1>:UD 0xfe:UD [1030] UNTYPED_READ(16) %492<1>:UD : %222<8,8,1>:UD 0xfe:UD [1032] UNTYPED_READ(16) %493<1>:UD : %225<8,8,1>:UD 0xfe:UD [1034] UNTYPED_READ(16) %494<1>:UD : %233<8,8,1>:UD 0xfe:UD [1036] UNTYPED_READ(16) %495<1>:UD : %237<8,8,1>:UD 0xfe:UD [1038] SEL_CMP(16) %496<1>:F : %480<8,8,1>:F %482<8,8,1>:F [1040] SEL_CMP(16) %497<1>:F : %481<8,8,1>:F %483<8,8,1>:F [1042] SEL_CMP(16) %498<1>:F : %480<8,8,1>:F %482<8,8,1>:F [1044] SEL_CMP(16) %499<1>:F : %481<8,8,1>:F %483<8,8,1>:F [1046] SEL_CMP(16) %500<1>:F : %486<8,8,1>:F %488<8,8,1>:F [1048] SEL_CMP(16) %501<1>:F : %487<8,8,1>:F %489<8,8,1>:F [1050] SEL_CMP(16) %502<1>:F : %486<8,8,1>:F %488<8,8,1>:F [1052] SEL_CMP(16) %503<1>:F : %487<8,8,1>:F %489<8,8,1>:F [1054] SEL_CMP(16) %504<1>:F : %492<8,8,1>:F %494<8,8,1>:F [1056] SEL_CMP(16) %505<1>:F : %493<8,8,1>:F %495<8,8,1>:F [1058] SEL_CMP(16) %506<1>:F : %492<8,8,1>:F %494<8,8,1>:F [1060] SEL_CMP(16) %507<1>:F : %493<8,8,1>:F %495<8,8,1>:F [1062] SEL_CMP(16) %508<1>:F : %478<8,8,1>:F %496<8,8,1>:F [1064] SEL_CMP(16) %509<1>:F : %479<8,8,1>:F %497<8,8,1>:F [1066] SEL_CMP(16) %510<1>:F : %478<8,8,1>:F %496<8,8,1>:F [1068] SEL_CMP(16) %511<1>:F : %479<8,8,1>:F %497<8,8,1>:F [1070] SEL_CMP(16) %512<1>:F : %484<8,8,1>:F %500<8,8,1>:F [1072] SEL_CMP(16) %513<1>:F : %485<8,8,1>:F %501<8,8,1>:F [1074] SEL_CMP(16) %514<1>:F : %484<8,8,1>:F %500<8,8,1>:F [1076] SEL_CMP(16) %515<1>:F : %485<8,8,1>:F %501<8,8,1>:F [1078] SEL_CMP(16) %516<1>:F : %490<8,8,1>:F %504<8,8,1>:F [1080] SEL_CMP(16) %517<1>:F : %491<8,8,1>:F %505<8,8,1>:F [1082] SEL_CMP(16) %518<1>:F : %490<8,8,1>:F %504<8,8,1>:F [1084] SEL_CMP(16) %519<1>:F : %491<8,8,1>:F %505<8,8,1>:F [1086] SEL_CMP(16) %520<1>:F : %510<8,8,1>:F %498<8,8,1>:F [1088] SEL_CMP(16) %521<1>:F : %511<8,8,1>:F %499<8,8,1>:F [1090] SEL_CMP(16) %522<1>:F : %510<8,8,1>:F %498<8,8,1>:F [1092] SEL_CMP(16) %523<1>:F : %511<8,8,1>:F %499<8,8,1>:F [1094] SEL_CMP(16) %524<1>:F : %514<8,8,1>:F %502<8,8,1>:F [1096] SEL_CMP(16) %525<1>:F : %515<8,8,1>:F %503<8,8,1>:F [1098] SEL_CMP(16) %526<1>:F : %514<8,8,1>:F %502<8,8,1>:F [1100] SEL_CMP(16) %527<1>:F : %515<8,8,1>:F %503<8,8,1>:F [1102] SEL_CMP(16) %528<1>:F : %518<8,8,1>:F %506<8,8,1>:F [1104] SEL_CMP(16) %529<1>:F : %519<8,8,1>:F %507<8,8,1>:F [1106] SEL_CMP(16) %530<1>:F : %518<8,8,1>:F %506<8,8,1>:F [1108] SEL_CMP(16) %531<1>:F : %519<8,8,1>:F %507<8,8,1>:F [1110] SEL_CMP(16) %532<1>:F : %508<8,8,1>:F %512<8,8,1>:F [1112] SEL_CMP(16) %533<1>:F : %509<8,8,1>:F %513<8,8,1>:F [1114] SEL_CMP(16) %534<1>:F : %508<8,8,1>:F %512<8,8,1>:F [1116] SEL_CMP(16) %535<1>:F : %509<8,8,1>:F %513<8,8,1>:F [1118] SEL_CMP(16) %536<1>:F : %526<8,8,1>:F %530<8,8,1>:F [1120] SEL_CMP(16) %537<1>:F : %527<8,8,1>:F %531<8,8,1>:F [1122] SEL_CMP(16) %538<1>:F : %526<8,8,1>:F %530<8,8,1>:F [1124] SEL_CMP(16) %539<1>:F : %527<8,8,1>:F %531<8,8,1>:F [1126] SEL_CMP(16) %540<1>:F : %524<8,8,1>:F %528<8,8,1>:F [1128] SEL_CMP(16) %541<1>:F : %525<8,8,1>:F %529<8,8,1>:F [1130] SEL_CMP(16) %542<1>:F : %524<8,8,1>:F %528<8,8,1>:F [1132] SEL_CMP(16) %543<1>:F : %525<8,8,1>:F %529<8,8,1>:F [1134] SEL_CMP(16) %544<1>:F : %534<8,8,1>:F %516<8,8,1>:F [1136] SEL_CMP(16) %545<1>:F : %535<8,8,1>:F %517<8,8,1>:F [1138] SEL_CMP(16) %546<1>:F : %534<8,8,1>:F %516<8,8,1>:F [1140] SEL_CMP(16) %547<1>:F : %535<8,8,1>:F %517<8,8,1>:F [1142] SEL_CMP(16) %548<1>:F : %520<8,8,1>:F %540<8,8,1>:F [1144] SEL_CMP(16) %549<1>:F : %521<8,8,1>:F %541<8,8,1>:F [1146] SEL_CMP(16) %550<1>:F : %522<8,8,1>:F %536<8,8,1>:F [1148] SEL_CMP(16) %551<1>:F : %523<8,8,1>:F %537<8,8,1>:F [1150] SEL_CMP(16) %552<1>:F : %522<8,8,1>:F %536<8,8,1>:F [1152] SEL_CMP(16) %553<1>:F : %523<8,8,1>:F %537<8,8,1>:F [1154] SEL_CMP(16) %554<1>:F : %548<8,8,1>:F %542<8,8,1>:F [1156] SEL_CMP(16) %555<1>:F : %549<8,8,1>:F %543<8,8,1>:F [1158] SEL_CMP(16) %556<1>:F : %554<8,8,1>:F %550<8,8,1>:F [1160] SEL_CMP(16) %557<1>:F : %555<8,8,1>:F %551<8,8,1>:F [1162] SEL_CMP(16) %558<1>:F : %554<8,8,1>:F %550<8,8,1>:F [1164] SEL_CMP(16) %559<1>:F : %555<8,8,1>:F %551<8,8,1>:F [1166] SEL_CMP(16) %560<1>:F : %546<8,8,1>:F %556<8,8,1>:F [1168] SEL_CMP(16) %561<1>:F : %547<8,8,1>:F %557<8,8,1>:F [1170] SEL_CMP(16) %562<1>:F : %560<8,8,1>:F %558<8,8,1>:F [1172] SEL_CMP(16) %563<1>:F : %561<8,8,1>:F %559<8,8,1>:F [1174] SEL_CMP(16) %564<1>:F : %532<8,8,1>:F %544<8,8,1>:F [1176] SEL_CMP(16) %565<1>:F : %533<8,8,1>:F %545<8,8,1>:F [1178] SEL_CMP(16) %566<1>:F : %552<8,8,1>:F %538<8,8,1>:F [1180] SEL_CMP(16) %567<1>:F : %553<8,8,1>:F %539<8,8,1>:F [1182] ADD(16) %568<1>:F : %566<8,8,1>:F -%564<8,8,1>:F [1184] ADD(16) %569<1>:F : %567<8,8,1>:F -%565<8,8,1>:F [1186] SEL_CMP(16) %570<1>:F : %568<8,8,1>:F %46<0,1,0>:F [1188] SEL_CMP(16) %571<1>:F : %569<8,8,1>:F %46<0,1,0>:F [1190] MATH(16) %572<1>:F : %570<8,8,1>:F %45<0,1,0>:F [1192] MATH(16) %573<1>:F : %571<8,8,1>:F %45<0,1,0>:F [1194] SEL_CMP(16) %574<1>:F : %572<8,8,1>:F 1:F [1196] SEL_CMP(16) %575<1>:F : %573<8,8,1>:F 1:F [1198] ADD(16) %576<1>:F : -%574<8,8,1>:F 1:F [1200] MUL(16) %577<1>:F : %486<8,8,1>:F %574<8,8,1>:F [1202] MAD(16) %578<1>:F : %577<8,8,1>:F %576<8,8,1>:F %562<8,8,1>:F [1204] UNTYPED_WRITE(16) : %244<8,8,1>:UD %578<8,8,1>:UD 0xfe:UD [1206] ADD(16) %579<1>:F : -%575<8,8,1>:F 1:F [1208] UNTYPED_READ(16) %580<1>:UD : %251<8,8,1>:UD 0xfe:UD [1210] MUL(16) %581<1>:F : %575<8,8,1>:F %580<8,8,1>:F [1212] MAD(16) %582<1>:F : %581<8,8,1>:F %579<8,8,1>:F %563<8,8,1>:F [1214] UNTYPED_WRITE(16) : %251<8,8,1>:UD %582<8,8,1>:UD 0xfe:UD [1216] L20: [1218] ENDIF(16) : 0:D [1220] L19: [1222] ENDIF(16) : 0:D [1224] L13: [1226] CMP.le(16) arf : %23<8,8,1>:UW 0xd:UW [1228](f0.1) MOV(16) %23<1>:UW : 0xffff:UW [1230] CMP.eq(16) arf : %23<8,8,1>:UW 0xffff:UW [1232](f0.1) JMPI(1) : 0:D [1234](f0.1) MOV(16) %23<1>:UW : 0xd:UW [1236] BARRIER(16) %1149<1>:F : %1148<8,8,1>:UD [1238] ADD(16) %583<1>:D : %53<8,8,1>:D 1:D [1240] CMP.l(16) arf : %583<8,8,1>:D %63<0,1,0>:D [1242] ADD(16) %585<1>:D : %56<8,8,1>:D 1:D [1244] CMP.l(16) arf : %585<8,8,1>:D %64<0,1,0>:D [1246] AND(16) %587<1>:W : %584<8,8,1>:W %586<8,8,1>:W [1248](f587) MOV(16) %23<1>:UW : 0xf:UW [1250](f0.1) L14: [1252] CMP.le(16) arf : %23<8,8,1>:UW 0xe:UW [1254](f0.1) MOV(16) %23<1>:UW : 0x10:UW [1256] L15: [1258] CMP.le(16) arf : %23<8,8,1>:UW 0xf:UW [1260](f0.1) IF(16) : 0:D [1262] SHL(16) %588<1>:D : %53<8,8,1>:D 1:D [1264] SHL(1) %589<0>:D : %47<0,1,0>:D 1:D [1266] MUL(8) arf : %589<0,1,0>:D %56<8,8,1>:D [1268] MACH(8) arf : %589<0,1,0>:D %56<8,8,1>:D [1270] MOV(8) %590<1>:F : arf [1272] MUL(8) arf : %589<0,1,0>:D %56<8,8,1>:D [1274] MACH(8) arf : %589<0,1,0>:D %56<8,8,1>:D [1276] MOV(8) %1150<1>:F : arf [1278] MOV(8) %590<1>:F : %1150<8,8,1>:F [1280] ADD(16) %591<1>:D : %590<8,8,1>:D %588<8,8,1>:D [1282] MUL(16) %592<1>:UD : %62<8,8,1>:UD 0x4:UW [1284] ADD(16) %593<1>:D : %50<0,1,0>:D %592<8,8,1>:D [1286] UNTYPED_READ(16) %594<1>:UD %595<1>:UD : %593<8,8,1>:UD 0xfe:UD [1288] MUL(16) %596<1>:UD : %591<8,8,1>:UD 0x4:UW [1290] ADD(16) %597<1>:D : %41<0,1,0>:D %596<8,8,1>:D [1292] ADD(16) %1132<1>:UD : %597<8,8,1>:UD -%41<0,1,0>:UD [1294] UNTYPED_WRITE(16) : %1132<8,8,1>:UD %594<8,8,1>:UD %595<8,8,1>:UD 0x2:UD [1296] ADD(16) %598<1>:D : %61<8,8,1>:D 110:D [1298] MUL(16) %599<1>:UD : %598<8,8,1>:UD 0x4:UW [1300] ADD(16) %600<1>:D : %50<0,1,0>:D %599<8,8,1>:D [1302] UNTYPED_READ(16) %601<1>:UD %602<1>:UD : %600<8,8,1>:UD 0xfe:UD [1304] ADD(16) %603<1>:D : %591<8,8,1>:D %47<0,1,0>:D [1306] MUL(16) %604<1>:UD : %603<8,8,1>:UD 0x4:UW [1308] ADD(16) %605<1>:D : %41<0,1,0>:D %604<8,8,1>:D [1310] ADD(16) %1138<1>:UD : %605<8,8,1>:UD -%41<0,1,0>:UD [1312] UNTYPED_WRITE(16) : %1138<8,8,1>:UD %601<8,8,1>:UD %602<8,8,1>:UD 0x2:UD [1314] L27: [1316] ENDIF(16) : 0:D [1318](f0.1) L16: [1320] CMP.le(16) arf : %23<8,8,1>:UW 0x10:UW [1322](f0.1) L17: [1324](f0.1) EOT(16) : rawNoiseKernel's SELECTION IR end. built rawnoise kernel 0 CL kernel source: #define Kernel16 //#pragma OPENCL EXTENSION cl_amd_printf : enable void loadLDS(__local float *pixels, __global float const *src, const int lrp, const int rowPixels, const int size, const int pad, const int globalWidth, const int globalHeight, const int srcx, const int srcy, const int groupId, const int workGroupSize) { const int lsize = lrp * lrp; int loadOffset = groupId; while (loadOffset < lsize) { int x = srcx + (loadOffset % lrp);// + pad; int y = srcy + (loadOffset / lrp);// + pad; x = (x < 0) ? -x : x; x = (x >= globalWidth) ? (2 * (globalWidth - 1) - x) : x; y = (y < 0) ? -y : y; y = (y >= globalHeight) ? (2 * (globalHeight - 1) - y) : y; //pixels[loadOffset] = (float)(src[x + y * rowPixels]) * 1.0f / 16383.0f; pixels[loadOffset] = src[x + y * rowPixels]; loadOffset += workGroupSize; } } void loadLDSShort(__local float *pixels, __global unsigned short const *src, const int lrp, const int rowPixels, const int size, const int pad, const int globalWidth, const int globalHeight, const int srcx, const int srcy, const int groupId, const int workGroupSize) { const int lsize = lrp * lrp; int loadOffset = groupId; while (loadOffset < lsize) { int x = srcx + (loadOffset % lrp) + pad; int y = srcy + (loadOffset / lrp) + pad; x = (x < 0) ? -x : x; x = (x >= globalWidth) ? (2 * (globalWidth - 1) - x) : x; y = (y < 0) ? -y : y; y = (y >= globalHeight) ? (2 * (globalHeight - 1) - y) : y; pixels[loadOffset] = (float)(src[x + y * rowPixels]) * 1.0f / 16383.0f; //pixels[loadOffset] = src[x + y * rowPixels]; loadOffset += workGroupSize; } } #ifdef Kernel16 __kernel __attribute__((reqd_work_group_size(16, 16, 1))) void demosaicKernel(__global float *dst, __global float *src, const unsigned int grx, const unsigned int gry, const float threshold, const unsigned int srcRowPixels, const unsigned int dstRowPixels, const unsigned int dstPlanePixels, const unsigned int sourceFormat, const unsigned int destFormat) { const int size = 32; // Processing size const int outSize = 26; // Output size (padding is partially processed but not written out) const int pad = 2; const int lrp = 36; // local row pixels __local float pixels[36 * 36]; __local float xgrads[36 * 36]; __local float ygrads[36 * 36]; __local float greens[36 * 36]; const int localx = get_local_id(0); const int localy = get_local_id(1); const int groupId = localx + localy * size / 2; const int globalWidth = (get_global_size(0) * 2 * outSize) / size; const int globalHeight = (get_global_size(1) * 2 * outSize) / size; int srcx = get_group_id(0) * outSize - pad - grx; // always a green at 0,0 on a red line int srcy = get_group_id(1) * outSize - pad - gry; if (sourceFormat == 0) loadLDS(pixels, src, lrp, srcRowPixels, size, pad, globalWidth, globalHeight, srcx, srcy, groupId, 256); else loadLDSShort(pixels, (__global unsigned short *)(src), lrp, srcRowPixels, size, pad, globalWidth, globalHeight, srcx, srcy, groupId, 256); barrier(CLK_LOCAL_MEM_FENCE); const int x_src = (localx * 2) + pad; // x position in the (lds) src data const int y_src = (localy * 2) + pad; // x position in the (lds) src data const int p_src = x_src + y_src * lrp; { // Calculate the gradiants int p = p_src; float dx0 = fabs(pixels[p - 2] * -0.140625f + pixels[p - 1] * 1.26953f + pixels[p + 1] * -1.26953f + pixels[p + 2] * 0.140625f); float dx1 = fabs(pixels[p - 1] * -0.140625f + pixels[p] * 1.26953f + pixels[p + 2] * -1.26953f + pixels[p + 3] * 0.140625f); float odx0 = fabs(pixels[p] * 2.0f - pixels[p - 1] - pixels[p + 1]); float odx1 = fabs(pixels[p + 1] * 2.0f - pixels[p] - pixels[p + 2]); float dy0 = fabs(pixels[p - 2 * lrp] * -0.140625f + pixels[p - 1 * lrp] * 1.26953f + pixels[p + 1 * lrp] * -1.26953f + pixels[p + 2 * lrp] * 0.140625f); float dy2 = fabs(pixels[p - 1 * lrp] * -0.140625f + pixels[p] * 1.26953f + pixels[p + 2 * lrp] * -1.26953f + pixels[p + 3 * lrp] * 0.140625f); float ody0 = fabs(pixels[p] * 2.0f - pixels[p - 1 * lrp] - pixels[p + 1 * lrp]); float ody2 = fabs(pixels[p + 1 * lrp] * 2.0f - pixels[p] - pixels[p + 2 * lrp]); p += lrp; // move down a row float dx2 = fabs(pixels[p - 2] * -0.140625f + pixels[p - 1] * 1.26953f + pixels[p + 1] * -1.26953f + pixels[p + 2] * 0.140625f); float dx3 = fabs(pixels[p - 1] * -0.140625f + pixels[p] * 1.26953f + pixels[p + 2] * -1.26953f + pixels[p + 3] * 0.140625f); float odx2 = fabs(pixels[p] * 2.0f - pixels[p - 1] - pixels[p + 1]); float odx3 = fabs(pixels[p + 1] * 2.0f - pixels[p] - pixels[p + 2]); p -= lrp; p += 1; // move back up and over a column float dy1 = fabs(pixels[p - 2 * lrp] * -0.140625f + pixels[p - 1 * lrp] * 1.26953f + pixels[p + 1 * lrp] * -1.26953f + pixels[p + 2 * lrp] * 0.140625f); float dy3 = fabs(pixels[p - 1 * lrp] * -0.140625f + pixels[p] * 1.26953f + pixels[p + 2 * lrp] * -1.26953f + pixels[p + 3 * lrp] * 0.140625f); float ody1 = fabs(pixels[p] * 2.0f - pixels[p - 1 * lrp] - pixels[p + 1 * lrp]); float ody3 = fabs(pixels[p + 1 * lrp] * 2.0f - pixels[p] - pixels[p + 2 * lrp]); p -= 1; // restore p const float DERCONST = 800.0f / 16383.0f; xgrads[p] = ((dx0 + dy0) < DERCONST) ? dx0 : dx0 + odx0; ygrads[p] = ((dx0 + dy0) < DERCONST) ? dy0 : dy0 + ody0; xgrads[p + 1] = ((dx1 + dy1) < DERCONST) ? dx1 : dx1 + odx1; ygrads[p + 1] = ((dx1 + dy1) < DERCONST) ? dy1 : dy1 + ody1; xgrads[p + lrp] = ((dx2 + dy2) < DERCONST) ? dx2 : dx2 + odx2; ygrads[p + lrp] = ((dx2 + dy2) < DERCONST) ? dy2 : dy2 + ody2; xgrads[p + lrp + 1] = ((dx3 + dy3) < DERCONST) ? dx3 : dx3 + odx3; ygrads[p + lrp + 1] = ((dx3 + dy3) < DERCONST) ? dy3 : dy3 + ody3; } barrier(CLK_LOCAL_MEM_FENCE); { // Reduce. Replace grad data with 3 pixel windowed average values float p0 = xgrads[p_src - 1] + xgrads[p_src] + xgrads[p_src + 1]; float p1 = xgrads[p_src] + xgrads[p_src + 1] + xgrads[p_src + 2]; float p2 = xgrads[p_src - 1 + lrp] + xgrads[p_src + lrp] + xgrads[p_src + 1 + lrp]; float p3 = xgrads[p_src + lrp] + xgrads[p_src + 1 + lrp] + xgrads[p_src + 2 + lrp]; float p4 = ygrads[p_src - lrp] + ygrads[p_src] + ygrads[p_src + lrp]; float p6 = ygrads[p_src] + ygrads[p_src + lrp] + ygrads[p_src + 2 * lrp]; // yes 6 float p5 = ygrads[p_src - lrp + 1] + ygrads[p_src + 1] + ygrads[p_src + lrp +1]; // yes 5 float p7 = ygrads[p_src + 1] + ygrads[p_src + lrp + 1] + ygrads[p_src + 2 * lrp + 1]; barrier(CLK_LOCAL_MEM_FENCE); xgrads[p_src] = p0; xgrads[p_src + 1] = p1; xgrads[p_src + lrp] = p2; xgrads[p_src + lrp + 1] = p3; ygrads[p_src] = p4; ygrads[p_src + 1] = p5; ygrads[p_src + lrp] = p6; ygrads[p_src + lrp + 1] = p7; } barrier(CLK_LOCAL_MEM_FENCE); { // Calculate green pixels float xg1 = xgrads[p_src + 1 - lrp] + xgrads[p_src + 1] + xgrads[p_src + 1 + lrp]; float xg2 = xgrads[p_src] + xgrads[p_src + lrp] + xgrads[p_src + 2 * lrp]; float yg1 = ygrads[p_src] + ygrads[p_src + 1] + ygrads[p_src + 2]; float yg2 = ygrads[p_src - 1 + lrp] + ygrads[p_src + lrp] + ygrads[p_src + 2 + lrp]; // pixel 1 float h = pixels[p_src] + pixels[p_src + 2]; float v = pixels[p_src + 1 - lrp] + pixels[p_src + 1 + lrp]; if (fabs(xg1 - yg1) < threshold) { greens[p_src] = pixels[p_src]; greens[p_src + 1] = (h + v) / 4.0f; } else if (xg1 > yg1) { greens[p_src] = pixels[p_src]; greens[p_src + 1] = v / 2.0f; } else { greens[p_src] = pixels[p_src]; greens[p_src + 1] = h / 2.0f; } // pixel 2 h = pixels[p_src - 1 + lrp] + pixels[p_src + 1 + lrp]; v = pixels[p_src] + pixels[p_src + 2 * lrp]; if (fabs(xg2 - yg2) < threshold) { greens[p_src + lrp] = (h + v) / 4.0f; greens[p_src + lrp + 1] = pixels[p_src + lrp + 1]; } else if (xg2 > yg2) { greens[p_src + lrp] = v / 2.0f; greens[p_src + lrp + 1] = pixels[p_src + lrp + 1]; } else { greens[p_src + lrp] = h / 2.0f; greens[p_src + lrp + 1] = pixels[p_src + lrp + 1]; } } barrier(CLK_LOCAL_MEM_FENCE); { // Calculate the red/blue pixels // 1 - Non color row // 1a - vertical interpolation float2 pix_b0r3 = (float2)( (greens[p_src] * 2 - greens[p_src - lrp] - greens[p_src + lrp]) // green impulse + (pixels[p_src - lrp] + pixels[p_src + lrp]) // average color , (greens[p_src + 1 + lrp] * 2 - greens[p_src + 1] - greens[p_src + 1 + 2 * lrp]) + (pixels[p_src + 1] + pixels[p_src + 1 + 2 * lrp]) ); pix_b0r3 /= 2.0f; pix_b0r3 = max(pix_b0r3, 0.0f); // 1b diagonal interpolation float2 pix_b1r2 = (float2)( pixels[p_src - lrp] + pixels[p_src + 2 - lrp] + pixels[p_src + lrp] + pixels[p_src + lrp + 2] , pixels[p_src - 1] + pixels[p_src + 1] + pixels[p_src + 2 * lrp - 1] + pixels[p_src + 2 * lrp + 1] ); pix_b1r2 /= 4.0f; float2 h = (float2)( 2.0f * greens[p_src + 1] - greens[p_src] - greens[p_src + 2] , 2.0f * greens[p_src + lrp] - greens[p_src + lrp - 1] - greens[p_src + lrp + 1] ); float2 v = (float2)( 2.0f * greens[p_src + 1] - greens[p_src + 1 - lrp] - greens[p_src + 1 + lrp] , 2.0f * greens[p_src + lrp] - greens[p_src] - greens[p_src + 2 * lrp] ); // figure out blue float xg = xgrads[p_src + 1 - lrp] + xgrads[p_src + 1] + xgrads[p_src + 1 + lrp]; float yg = ygrads[p_src] + ygrads[p_src + 1] + ygrads[p_src + 2]; if (fabs(xg - yg) < threshold) pix_b1r2.x += (h.x + v.x) / 4.0f; else if (xg > yg) pix_b1r2.x += h.x / 2.0f; else pix_b1r2.x += v.x / 2.0f; // figure out red xg = xgrads[p_src] + xgrads[p_src + lrp] + xgrads[p_src + 2 * lrp]; yg = ygrads[p_src - 1 + lrp] + ygrads[p_src + lrp] + ygrads[p_src + 2 + lrp]; if (fabs(xg - yg) < threshold) pix_b1r2.y += (h.y + v.y) / 4.0f; else if (xg > yg) pix_b1r2.y += h.y / 2.0f; else pix_b1r2.y += v.y / 2.0f; pix_b1r2 = max(pix_b1r2, 0.0f); // 2 - Color row // 2a - horizontal interpolation float2 pix_b3r0 = (float2)( (greens[p_src + 1 + lrp] * 2 - greens[p_src + lrp] - greens[p_src + 2 + lrp]) // green impulse + (pixels[p_src + lrp] + pixels[p_src + lrp + 2]) // average color , (greens[p_src] * 2 - greens[p_src - 1] - greens[p_src + 1]) + (pixels[p_src - 1] + pixels[p_src + 1]) ); pix_b3r0 /= 2.0f; pix_b3r0 = max(pix_b3r0, 0.0f); barrier(CLK_LOCAL_MEM_FENCE); // We want to use the lds to global "unloader" below for simplicity. // Rather than allocating an LDS buffer for red and blue just reuse xgrads and ygrads xgrads[p_src] = pix_b3r0.y; xgrads[p_src + 1] = pixels[p_src + 1]; xgrads[p_src + lrp] = pix_b1r2.y; xgrads[p_src + lrp + 1] = pix_b0r3.y; ygrads[p_src] = pix_b0r3.x; ygrads[p_src + 1] = pix_b1r2.x; ygrads[p_src + lrp] = pixels[p_src + lrp]; ygrads[p_src + lrp + 1] = pix_b3r0.x; } barrier(CLK_LOCAL_MEM_FENCE); int x1 = get_group_id(0) * outSize; int x2 = x1 + outSize; x2 = min(x2, (int)(dstRowPixels)); int y1 = get_group_id(1) * outSize; int y2 = y1 + outSize; y2 = min(y2, (int)(dstRowPixels)); const int globalX = srcx + pad - 3 + grx + localx * 2; // global x under our workitem. 3 is half the 32->26 padding const int globalY = srcy + pad - 3 + gry + localy * 2; if (destFormat == 0) { for (int i = 0; i < 2; ++i) { for (int j = 0; j < 2; ++j) { if (((globalX + i) >= x1) && ((globalX + i) < x2) && ((globalY + j) >= y1) && ((globalY + j) < y2)) { // This pixel is inside the output area dst[(globalX + i) + (globalY + j) * dstRowPixels] = xgrads[(x_src + i) + (y_src + j) * lrp]; dst[(globalX + i) + (globalY + j) * dstRowPixels + dstPlanePixels] = greens[(x_src + i) + (y_src + j) * lrp]; dst[(globalX + i) + (globalY + j) * dstRowPixels + 2 * dstPlanePixels] = ygrads[(x_src + i) + (y_src + j) * lrp]; } } } } else { __global unsigned short int *shortDst = (__global unsigned short int *)(dst); for (int i = 0; i < 2; ++i) { for (int j = 0; j < 2; ++j) { if (((globalX + i) >= x1) && ((globalX + i) < x2) && ((globalY + j) >= y1) && ((globalY + j) < y2)) { // This pixel is inside the output area shortDst[(globalX + i) + (globalY + j) * dstRowPixels] = (unsigned short int)(xgrads[(x_src + i) + (y_src + j) * lrp] * 16383.0f); shortDst[(globalX + i) + (globalY + j) * dstRowPixels + dstPlanePixels] = (unsigned short int)(greens[(x_src + i) + (y_src + j) * lrp] * 16383.0f); shortDst[(globalX + i) + (globalY + j) * dstRowPixels + 2 * dstPlanePixels] = (unsigned short int)(ygrads[(x_src + i) + (y_src + j) * lrp] * 16383.0f); } } } } } #endif #ifdef Kernel8 __kernel __attribute__((reqd_work_group_size(8, 8, 1))) void demosaicKernel(__global float *dst, __global float *src, const unsigned int grx, const unsigned int gry, const float threshold, const unsigned int srcRowPixels, const unsigned int dstRowPixels, const unsigned int dstPlanePixels, const unsigned int sourceFormat, const unsigned int destFormat) { const int size = 16; // Processing size const int outSize = 10; // Output size (padding is partially processed but not written out) const int pad = 2; const int lrp = 20; // local row pixels __local float pixels[20 * 20]; __local float xgrads[20 * 20]; __local float ygrads[20 * 20]; __local float greens[20 * 20]; int localx = get_local_id(0); int localy = get_local_id(1); const int groupId = localx + localy * size / 2; int globalWidth = (get_global_size(0) * 2 * outSize) / size; int globalHeight = (get_global_size(1) * 2 * outSize) / size; int srcx = get_group_id(0) * outSize - pad - grx; // always a green at 0,0 on a red line int srcy = get_group_id(1) * outSize - pad - gry; if (sourceFormat == 0) loadLDS(pixels, src, lrp, srcRowPixels, size, pad, globalWidth, globalHeight, srcx, srcy, groupId, 64); else loadLDSShort(pixels, (__global unsigned short *)(src), lrp, srcRowPixels, size, pad, globalWidth, globalHeight, srcx, srcy, groupId, 64); barrier(CLK_LOCAL_MEM_FENCE); const int x_src = (localx * 2) + pad; // x position in the (lds) src data const int y_src = (localy * 2) + pad; // x position in the (lds) src data const int p_src = x_src + y_src * lrp; { // Calculate the gradiants int p = p_src; float dx0 = fabs(pixels[p - 2] * -0.140625f + pixels[p - 1] * 1.26953f + pixels[p + 1] * -1.26953f + pixels[p + 2] * 0.140625f); float dx1 = fabs(pixels[p - 1] * -0.140625f + pixels[p] * 1.26953f + pixels[p + 2] * -1.26953f + pixels[p + 3] * 0.140625f); float odx0 = fabs(pixels[p] * 2.0f - pixels[p - 1] - pixels[p + 1]); float odx1 = fabs(pixels[p + 1] * 2.0f - pixels[p] - pixels[p + 2]); float dy0 = fabs(pixels[p - 2 * lrp] * -0.140625f + pixels[p - 1 * lrp] * 1.26953f + pixels[p + 1 * lrp] * -1.26953f + pixels[p + 2 * lrp] * 0.140625f); float dy2 = fabs(pixels[p - 1 * lrp] * -0.140625f + pixels[p] * 1.26953f + pixels[p + 2 * lrp] * -1.26953f + pixels[p + 3 * lrp] * 0.140625f); float ody0 = fabs(pixels[p] * 2.0f - pixels[p - 1 * lrp] - pixels[p + 1 * lrp]); float ody2 = fabs(pixels[p + 1 * lrp] * 2.0f - pixels[p] - pixels[p + 2 * lrp]); p += lrp; // move down a row float dx2 = fabs(pixels[p - 2] * -0.140625f + pixels[p - 1] * 1.26953f + pixels[p + 1] * -1.26953f + pixels[p + 2] * 0.140625f); float dx3 = fabs(pixels[p - 1] * -0.140625f + pixels[p] * 1.26953f + pixels[p + 2] * -1.26953f + pixels[p + 3] * 0.140625f); float odx2 = fabs(pixels[p] * 2.0f - pixels[p - 1] - pixels[p + 1]); float odx3 = fabs(pixels[p + 1] * 2.0f - pixels[p] - pixels[p + 2]); p -= lrp; p += 1; // move back up and over a column float dy1 = fabs(pixels[p - 2 * lrp] * -0.140625f + pixels[p - 1 * lrp] * 1.26953f + pixels[p + 1 * lrp] * -1.26953f + pixels[p + 2 * lrp] * 0.140625f); float dy3 = fabs(pixels[p - 1 * lrp] * -0.140625f + pixels[p] * 1.26953f + pixels[p + 2 * lrp] * -1.26953f + pixels[p + 3 * lrp] * 0.140625f); float ody1 = fabs(pixels[p] * 2.0f - pixels[p - 1 * lrp] - pixels[p + 1 * lrp]); float ody3 = fabs(pixels[p + 1 * lrp] * 2.0f - pixels[p] - pixels[p + 2 * lrp]); p -= 1; // restore p const float DERCONST = 800.0f / 16383.0f; xgrads[p] = ((dx0 + dy0) < DERCONST) ? dx0 : dx0 + odx0; ygrads[p] = ((dx0 + dy0) < DERCONST) ? dy0 : dy0 + ody0; xgrads[p + 1] = ((dx1 + dy1) < DERCONST) ? dx1 : dx1 + odx1; ygrads[p + 1] = ((dx1 + dy1) < DERCONST) ? dy1 : dy1 + ody1; xgrads[p + lrp] = ((dx2 + dy2) < DERCONST) ? dx2 : dx2 + odx2; ygrads[p + lrp] = ((dx2 + dy2) < DERCONST) ? dy2 : dy2 + ody2; xgrads[p + lrp + 1] = ((dx3 + dy3) < DERCONST) ? dx3 : dx3 + odx3; ygrads[p + lrp + 1] = ((dx3 + dy3) < DERCONST) ? dy3 : dy3 + ody3; } barrier(CLK_LOCAL_MEM_FENCE); { // Reduce. Replace grad data with 3 pixel windowed average values float p0 = xgrads[p_src - 1] + xgrads[p_src] + xgrads[p_src + 1]; float p1 = xgrads[p_src] + xgrads[p_src + 1] + xgrads[p_src + 2]; float p2 = xgrads[p_src - 1 + lrp] + xgrads[p_src + lrp] + xgrads[p_src + 1 + lrp]; float p3 = xgrads[p_src + lrp] + xgrads[p_src + 1 + lrp] + xgrads[p_src + 2 + lrp]; float p4 = ygrads[p_src - lrp] + ygrads[p_src] + ygrads[p_src + lrp]; float p6 = ygrads[p_src] + ygrads[p_src + lrp] + ygrads[p_src + 2 * lrp]; // yes 6 float p5 = ygrads[p_src - lrp + 1] + ygrads[p_src + 1] + ygrads[p_src + lrp +1]; // yes 5 float p7 = ygrads[p_src + 1] + ygrads[p_src + lrp + 1] + ygrads[p_src + 2 * lrp + 1]; barrier(CLK_LOCAL_MEM_FENCE); xgrads[p_src] = p0; xgrads[p_src + 1] = p1; xgrads[p_src + lrp] = p2; xgrads[p_src + lrp + 1] = p3; ygrads[p_src] = p4; ygrads[p_src + 1] = p5; ygrads[p_src + lrp] = p6; ygrads[p_src + lrp + 1] = p7; } barrier(CLK_LOCAL_MEM_FENCE); { // Calculate green pixels float xg1 = xgrads[p_src + 1 - lrp] + xgrads[p_src + 1] + xgrads[p_src + 1 + lrp]; float xg2 = xgrads[p_src] + xgrads[p_src + lrp] + xgrads[p_src + 2 * lrp]; float yg1 = ygrads[p_src] + ygrads[p_src + 1] + ygrads[p_src + 2]; float yg2 = ygrads[p_src - 1 + lrp] + ygrads[p_src + lrp] + ygrads[p_src + 2 + lrp]; // pixel 1 float h = pixels[p_src] + pixels[p_src + 2]; float v = pixels[p_src + 1 - lrp] + pixels[p_src + 1 + lrp]; if (fabs(xg1 - yg1) < threshold) { greens[p_src] = pixels[p_src]; greens[p_src + 1] = (h + v) / 4.0f; } else if (xg1 > yg1) { greens[p_src] = pixels[p_src]; greens[p_src + 1] = v / 2.0f; } else { greens[p_src] = pixels[p_src]; greens[p_src + 1] = h / 2.0f; } // pixel 2 h = pixels[p_src - 1 + lrp] + pixels[p_src + 1 + lrp]; v = pixels[p_src] + pixels[p_src + 2 * lrp]; if (fabs(xg2 - yg2) < threshold) { greens[p_src + lrp] = (h + v) / 4.0f; greens[p_src + lrp + 1] = pixels[p_src + lrp + 1]; } else if (xg2 > yg2) { greens[p_src + lrp] = v / 2.0f; greens[p_src + lrp + 1] = pixels[p_src + lrp + 1]; } else { greens[p_src + lrp] = h / 2.0f; greens[p_src + lrp + 1] = pixels[p_src + lrp + 1]; } } barrier(CLK_LOCAL_MEM_FENCE); { // Calculate the red/blue pixels // 1 - Non color row // 1a - vertical interpolation float2 pix_b0r3 = (float2)( (greens[p_src] * 2 - greens[p_src - lrp] - greens[p_src + lrp]) // green impulse + (pixels[p_src - lrp] + pixels[p_src + lrp]) // average color , (greens[p_src + 1 + lrp] * 2 - greens[p_src + 1] - greens[p_src + 1 + 2 * lrp]) + (pixels[p_src + 1] + pixels[p_src + 1 + 2 * lrp]) ); pix_b0r3 /= 2.0f; pix_b0r3 = max(pix_b0r3, 0.0f); // 1b diagonal interpolation float2 pix_b1r2 = (float2)( pixels[p_src - lrp] + pixels[p_src + 2 - lrp] + pixels[p_src + lrp] + pixels[p_src + lrp + 2] , pixels[p_src - 1] + pixels[p_src + 1] + pixels[p_src + 2 * lrp - 1] + pixels[p_src + 2 * lrp + 1] ); pix_b1r2 /= 4.0f; float2 h = (float2)( 2.0f * greens[p_src + 1] - greens[p_src] - greens[p_src + 2] , 2.0f * greens[p_src + lrp] - greens[p_src + lrp - 1] - greens[p_src + lrp + 1] ); float2 v = (float2)( 2.0f * greens[p_src + 1] - greens[p_src + 1 - lrp] - greens[p_src + 1 + lrp] , 2.0f * greens[p_src + lrp] - greens[p_src] - greens[p_src + 2 * lrp] ); // figure out blue float xg = xgrads[p_src + 1 - lrp] + xgrads[p_src + 1] + xgrads[p_src + 1 + lrp]; float yg = ygrads[p_src] + ygrads[p_src + 1] + ygrads[p_src + 2]; if (fabs(xg - yg) < threshold) pix_b1r2.x += (h.x + v.x) / 4.0f; else if (xg > yg) pix_b1r2.x += h.x / 2.0f; else pix_b1r2.x += v.x / 2.0f; // figure out red xg = xgrads[p_src] + xgrads[p_src + lrp] + xgrads[p_src + 2 * lrp]; yg = ygrads[p_src - 1 + lrp] + ygrads[p_src + lrp] + ygrads[p_src + 2 + lrp]; if (fabs(xg - yg) < threshold) pix_b1r2.y += (h.y + v.y) / 4.0f; else if (xg > yg) pix_b1r2.y += h.y / 2.0f; else pix_b1r2.y += v.y / 2.0f; pix_b1r2 = max(pix_b1r2, 0.0f); // 2 - Color row // 2a - horizontal interpolation float2 pix_b3r0 = (float2)( (greens[p_src + 1 + lrp] * 2 - greens[p_src + lrp] - greens[p_src + 2 + lrp]) // green impulse + (pixels[p_src + lrp] + pixels[p_src + lrp + 2]) // average color , (greens[p_src] * 2 - greens[p_src - 1] - greens[p_src + 1]) + (pixels[p_src - 1] + pixels[p_src + 1]) ); pix_b3r0 /= 2.0f; pix_b3r0 = max(pix_b3r0, 0.0f); barrier(CLK_LOCAL_MEM_FENCE); // We want to use the lds to global "unloader" below for simplicity. // Rather than allocating an LDS buffer for red and blue just reuse xgrads and ygrads xgrads[p_src] = pix_b3r0.y; xgrads[p_src + 1] = pixels[p_src + 1]; xgrads[p_src + lrp] = pix_b1r2.y; xgrads[p_src + lrp + 1] = pix_b0r3.y; ygrads[p_src] = pix_b0r3.x; ygrads[p_src + 1] = pix_b1r2.x; ygrads[p_src + lrp] = pixels[p_src + lrp]; ygrads[p_src + lrp + 1] = pix_b3r0.x; } barrier(CLK_LOCAL_MEM_FENCE); int x1 = get_group_id(0) * outSize; int x2 = x1 + outSize; x2 = min(x2, (int)(dstRowPixels)); int y1 = get_group_id(1) * outSize; int y2 = y1 + outSize; y2 = min(y2, (int)(dstRowPixels)); const int globalX = srcx + pad - 3 + grx + localx * 2; // global x under our workitem. 3 is half the 32->26 padding const int globalY = srcy + pad - 3 + gry + localy * 2; if (destFormat == 0) { for (int i = 0; i < 2; ++i) { for (int j = 0; j < 2; ++j) { if (((globalX + i) >= x1) && ((globalX + i) < x2) && ((globalY + j) >= y1) && ((globalY + j) < y2)) { // This pixel is inside the output area dst[(globalX + i) + (globalY + j) * dstRowPixels] = xgrads[(x_src + i) + (y_src + j) * lrp]; dst[(globalX + i) + (globalY + j) * dstRowPixels + dstPlanePixels] = greens[(x_src + i) + (y_src + j) * lrp]; dst[(globalX + i) + (globalY + j) * dstRowPixels + 2 * dstPlanePixels] = ygrads[(x_src + i) + (y_src + j) * lrp]; } } } } else { __global unsigned short int *shortDst = (__global unsigned short int *)(dst); for (int i = 0; i < 2; ++i) { for (int j = 0; j < 2; ++j) { if (((globalX + i) >= x1) && ((globalX + i) < x2) && ((globalY + j) >= y1) && ((globalY + j) < y2)) { // This pixel is inside the output area shortDst[(globalX + i) + (globalY + j) * dstRowPixels] = (unsigned short int)(xgrads[(x_src + i) + (y_src + j) * lrp] * 16383.0f); shortDst[(globalX + i) + (globalY + j) * dstRowPixels + dstPlanePixels] = (unsigned short int)(greens[(x_src + i) + (y_src + j) * lrp] * 16383.0f); shortDst[(globalX + i) + (globalY + j) * dstRowPixels + 2 * dstPlanePixels] = (unsigned short int)(ygrads[(x_src + i) + (y_src + j) * lrp] * 16383.0f); } } } } } #endif .decl_function demosaicKernel ## 1378 registers ## .decl.dword %0 local_id_0 .decl.dword %1 local_id_1 .decl.dword %2 local_id_2 .decl.dword %3 group_id_0 .decl.dword %4 group_id_1 .decl.dword %5 group_id_2 .decl.dword %6 num_groups_0 .decl.dword %7 num_groups_1 .decl.dword %8 num_groups_2 .decl.dword %9 local_size_0 .decl.dword %10 local_size_1 .decl.dword %11 local_size_2 .decl.dword %12 enqueued_local_size_0 .decl.dword %13 enqueued_local_size_1 .decl.dword %14 enqueued_local_size_2 .decl.dword %15 global_size_0 .decl.dword %16 global_size_1 .decl.dword %17 global_size_2 .decl.dword %18 global_offset_0 .decl.dword %19 global_offset_1 .decl.dword %20 global_offset_2 .decl.dword %21 stack_pointer .decl.qword %22 stack_buffer .decl.word %23 block_ip .decl.dword %24 barrier_id .decl.dword %25 thread_number .decl.dword %26 work_dimension .decl.dword %27 zero .decl.dword %28 one .decl.word %29 retVal .decl.dword %30 dwblockip .decl.qword %31 profiling_buffer_pointer .decl.dword %32 profiling_timestamps0 .decl.dword %33 profiling_timestamps1 .decl.dword %34 profiling_timestamps2 .decl.dword %35 profiling_timestamps3 .decl.dword %36 profiling_timestamps4 .decl.dword %37 threadid .decl.qword %38 constant_addrspace_start .decl.qword %39 stack_size .decl.qword %40 enqueue_buffer_pointer .decl.dword %41 .decl.dword %42 .decl.dword %43 .decl.dword %44 .decl.dword %45 .decl.dword %46 .decl.dword %47 .decl.dword %48 .decl.dword %49 .decl.dword %50 .decl.dword %51 .decl.dword %52 .decl.dword %53 .decl.dword %54 .decl.dword %55 .decl.dword %56 .decl.dword %57 .decl.dword %58 .decl.dword %59 .decl.dword %60 .decl.dword %61 .decl.dword %62 .decl.dword %63 .decl.dword %64 .decl.dword %65 .decl.dword %66 .decl.bool %67 .decl.bool %68 .decl.dword %69 .decl.dword %70 .decl.dword %71 .decl.dword %72 .decl.dword %73 .decl.dword %74 .decl.dword %75 .decl.dword %76 .decl.dword %77 .decl.dword %78 .decl.dword %79 .decl.dword %80 .decl.bool %81 .decl.dword %82 .decl.dword %83 .decl.bool %84 .decl.dword %85 .decl.dword %86 .decl.bool %87 .decl.dword %88 .decl.dword %89 .decl.bool %90 .decl.dword %91 .decl.dword %92 .decl.dword %93 .decl.dword %94 .decl.dword %95 .decl.dword %96 .decl.word %97 .decl.dword %98 .decl.dword %99 .decl.dword %100 .decl.dword %101 .decl.dword %102 .decl.bool %103 .decl.bool %104 .decl.dword %105 .decl.dword %106 .decl.dword %107 .decl.dword %108 .decl.dword %109 .decl.dword %110 .decl.dword %111 .decl.dword %112 .decl.dword %113 .decl.dword %114 .decl.bool %115 .decl.dword %116 .decl.dword %117 .decl.bool %118 .decl.dword %119 .decl.dword %120 .decl.bool %121 .decl.dword %122 .decl.dword %123 .decl.bool %124 .decl.dword %125 .decl.dword %126 .decl.dword %127 .decl.dword %128 .decl.dword %129 .decl.dword %130 .decl.dword %131 .decl.dword %132 .decl.dword %133 .decl.dword %134 .decl.bool %135 .decl.dword %136 .decl.dword %137 .decl.dword %138 .decl.dword %139 .decl.dword %140 .decl.dword %141 .decl.dword %142 .decl.dword %143 .decl.dword %144 .decl.dword %145 .decl.dword %146 .decl.dword %147 .decl.dword %148 .decl.dword %149 .decl.dword %150 .decl.dword %151 .decl.dword %152 .decl.dword %153 .decl.dword %154 .decl.dword %155 .decl.dword %156 .decl.dword %157 .decl.dword %158 .decl.dword %159 .decl.dword %160 .decl.dword %161 .decl.dword %162 .decl.dword %163 .decl.dword %164 .decl.dword %165 .decl.dword %166 .decl.dword %167 .decl.dword %168 .decl.dword %169 .decl.dword %170 .decl.dword %171 .decl.dword %172 .decl.dword %173 .decl.dword %174 .decl.dword %175 .decl.dword %176 .decl.dword %177 .decl.dword %178 .decl.dword %179 .decl.dword %180 .decl.dword %181 .decl.dword %182 .decl.dword %183 .decl.dword %184 .decl.dword %185 .decl.dword %186 .decl.dword %187 .decl.dword %188 .decl.dword %189 .decl.dword %190 .decl.dword %191 .decl.dword %192 .decl.dword %193 .decl.dword %194 .decl.dword %195 .decl.dword %196 .decl.dword %197 .decl.dword %198 .decl.dword %199 .decl.dword %200 .decl.dword %201 .decl.dword %202 .decl.dword %203 .decl.dword %204 .decl.dword %205 .decl.dword %206 .decl.dword %207 .decl.dword %208 .decl.dword %209 .decl.dword %210 .decl.dword %211 .decl.dword %212 .decl.dword %213 .decl.dword %214 .decl.dword %215 .decl.dword %216 .decl.dword %217 .decl.dword %218 .decl.dword %219 .decl.dword %220 .decl.dword %221 .decl.dword %222 .decl.dword %223 .decl.dword %224 .decl.dword %225 .decl.dword %226 .decl.dword %227 .decl.dword %228 .decl.dword %229 .decl.dword %230 .decl.dword %231 .decl.dword %232 .decl.dword %233 .decl.dword %234 .decl.dword %235 .decl.dword %236 .decl.dword %237 .decl.dword %238 .decl.dword %239 .decl.dword %240 .decl.dword %241 .decl.dword %242 .decl.dword %243 .decl.dword %244 .decl.dword %245 .decl.dword %246 .decl.dword %247 .decl.dword %248 .decl.dword %249 .decl.dword %250 .decl.dword %251 .decl.dword %252 .decl.dword %253 .decl.dword %254 .decl.dword %255 .decl.dword %256 .decl.dword %257 .decl.dword %258 .decl.dword %259 .decl.dword %260 .decl.dword %261 .decl.dword %262 .decl.dword %263 .decl.dword %264 .decl.dword %265 .decl.dword %266 .decl.dword %267 .decl.dword %268 .decl.dword %269 .decl.dword %270 .decl.dword %271 .decl.dword %272 .decl.dword %273 .decl.dword %274 .decl.dword %275 .decl.dword %276 .decl.dword %277 .decl.dword %278 .decl.dword %279 .decl.dword %280 .decl.dword %281 .decl.dword %282 .decl.dword %283 .decl.dword %284 .decl.dword %285 .decl.dword %286 .decl.dword %287 .decl.dword %288 .decl.dword %289 .decl.bool %290 .decl.dword %291 .decl.dword %292 .decl.dword %293 .decl.dword %294 .decl.dword %295 .decl.dword %296 .decl.dword %297 .decl.dword %298 .decl.dword %299 .decl.bool %300 .decl.dword %301 .decl.dword %302 .decl.dword %303 .decl.dword %304 .decl.dword %305 .decl.dword %306 .decl.dword %307 .decl.dword %308 .decl.dword %309 .decl.bool %310 .decl.dword %311 .decl.dword %312 .decl.dword %313 .decl.dword %314 .decl.dword %315 .decl.dword %316 .decl.dword %317 .decl.dword %318 .decl.dword %319 .decl.bool %320 .decl.dword %321 .decl.dword %322 .decl.dword %323 .decl.dword %324 .decl.dword %325 .decl.dword %326 .decl.dword %327 .decl.dword %328 .decl.dword %329 .decl.dword %330 .decl.dword %331 .decl.dword %332 .decl.dword %333 .decl.dword %334 .decl.dword %335 .decl.dword %336 .decl.dword %337 .decl.dword %338 .decl.dword %339 .decl.dword %340 .decl.dword %341 .decl.dword %342 .decl.dword %343 .decl.dword %344 .decl.dword %345 .decl.dword %346 .decl.dword %347 .decl.dword %348 .decl.dword %349 .decl.dword %350 .decl.dword %351 .decl.dword %352 .decl.dword %353 .decl.dword %354 .decl.dword %355 .decl.dword %356 .decl.dword %357 .decl.dword %358 .decl.dword %359 .decl.dword %360 .decl.dword %361 .decl.dword %362 .decl.dword %363 .decl.dword %364 .decl.dword %365 .decl.dword %366 .decl.dword %367 .decl.dword %368 .decl.dword %369 .decl.dword %370 .decl.dword %371 .decl.dword %372 .decl.dword %373 .decl.dword %374 .decl.dword %375 .decl.dword %376 .decl.dword %377 .decl.dword %378 .decl.dword %379 .decl.dword %380 .decl.dword %381 .decl.dword %382 .decl.dword %383 .decl.dword %384 .decl.dword %385 .decl.dword %386 .decl.dword %387 .decl.dword %388 .decl.dword %389 .decl.dword %390 .decl.dword %391 .decl.dword %392 .decl.dword %393 .decl.dword %394 .decl.dword %395 .decl.dword %396 .decl.dword %397 .decl.dword %398 .decl.dword %399 .decl.dword %400 .decl.dword %401 .decl.dword %402 .decl.dword %403 .decl.dword %404 .decl.dword %405 .decl.dword %406 .decl.dword %407 .decl.bool %408 .decl.bool %409 .decl.dword %410 .decl.dword %411 .decl.dword %412 .decl.dword %413 .decl.dword %414 .decl.dword %415 .decl.dword %416 .decl.dword %417 .decl.dword %418 .decl.dword %419 .decl.dword %420 .decl.dword %421 .decl.dword %422 .decl.dword %423 .decl.dword %424 .decl.dword %425 .decl.dword %426 .decl.dword %427 .decl.bool %428 .decl.bool %429 .decl.dword %430 .decl.dword %431 .decl.dword %432 .decl.dword %433 .decl.dword %434 .decl.dword %435 .decl.dword %436 .decl.dword %437 .decl.dword %438 .decl.dword %439 .decl.dword %440 .decl.dword %441 .decl.dword %442 .decl.dword %443 .decl.dword %444 .decl.dword %445 .decl.dword %446 .decl.dword %447 .decl.dword %448 .decl.dword %449 .decl.dword %450 .decl.dword %451 .decl.dword %452 .decl.dword %453 .decl.dword %454 .decl.dword %455 .decl.dword %456 .decl.dword %457 .decl.dword %458 .decl.dword %459 .decl.dword %460 .decl.dword %461 .decl.dword %462 .decl.dword %463 .decl.dword %464 .decl.dword %465 .decl.dword %466 .decl.dword %467 .decl.dword %468 .decl.dword %469 .decl.dword %470 .decl.dword %471 .decl.dword %472 .decl.dword %473 .decl.dword %474 .decl.dword %475 .decl.dword %476 .decl.dword %477 .decl.dword %478 .decl.dword %479 .decl.dword %480 .decl.dword %481 .decl.dword %482 .decl.dword %483 .decl.dword %484 .decl.dword %485 .decl.dword %486 .decl.dword %487 .decl.dword %488 .decl.dword %489 .decl.dword %490 .decl.dword %491 .decl.dword %492 .decl.dword %493 .decl.dword %494 .decl.dword %495 .decl.dword %496 .decl.dword %497 .decl.dword %498 .decl.dword %499 .decl.dword %500 .decl.dword %501 .decl.dword %502 .decl.dword %503 .decl.dword %504 .decl.dword %505 .decl.dword %506 .decl.dword %507 .decl.dword %508 .decl.dword %509 .decl.dword %510 .decl.dword %511 .decl.dword %512 .decl.dword %513 .decl.dword %514 .decl.dword %515 .decl.dword %516 .decl.dword %517 .decl.dword %518 .decl.dword %519 .decl.dword %520 .decl.dword %521 .decl.dword %522 .decl.dword %523 .decl.dword %524 .decl.dword %525 .decl.dword %526 .decl.bool %527 .decl.bool %528 .decl.dword %529 .decl.dword %530 .decl.dword %531 .decl.dword %532 .decl.dword %533 .decl.dword %534 .decl.dword %535 .decl.dword %536 .decl.dword %537 .decl.dword %538 .decl.dword %539 .decl.dword %540 .decl.dword %541 .decl.dword %542 .decl.dword %543 .decl.dword %544 .decl.dword %545 .decl.dword %546 .decl.dword %547 .decl.dword %548 .decl.dword %549 .decl.bool %550 .decl.bool %551 .decl.dword %552 .decl.dword %553 .decl.dword %554 .decl.dword %555 .decl.dword %556 .decl.dword %557 .decl.dword %558 .decl.dword %559 .decl.dword %560 .decl.dword %561 .decl.dword %562 .decl.dword %563 .decl.dword %564 .decl.dword %565 .decl.dword %566 .decl.dword %567 .decl.dword %568 .decl.dword %569 .decl.dword %570 .decl.dword %571 .decl.dword %572 .decl.dword %573 .decl.dword %574 .decl.dword %575 .decl.dword %576 .decl.dword %577 .decl.dword %578 .decl.dword %579 .decl.dword %580 .decl.dword %581 .decl.dword %582 .decl.bool %583 .decl.dword %584 .decl.dword %585 .decl.bool %586 .decl.dword %587 .decl.dword %588 .decl.dword %589 .decl.dword %590 .decl.dword %591 .decl.bool %592 .decl.dword %593 .decl.bool %594 .decl.bool %595 .decl.bool %596 .decl.bool %597 .decl.bool %598 .decl.bool %599 .decl.dword %600 .decl.dword %601 .decl.word %602 .decl.dword %603 .decl.dword %604 .decl.dword %605 .decl.dword %606 .decl.dword %607 .decl.dword %608 .decl.word %609 .decl.dword %610 .decl.dword %611 .decl.dword %612 .decl.dword %613 .decl.dword %614 .decl.word %615 .decl.dword %616 .decl.dword %617 .decl.dword %618 .decl.dword %619 .decl.bool %620 .decl.bool %621 .decl.bool %622 .decl.dword %623 .decl.dword %624 .decl.dword %625 .decl.dword %626 .decl.dword %627 .decl.dword %628 .decl.word %629 .decl.dword %630 .decl.dword %631 .decl.dword %632 .decl.dword %633 .decl.dword %634 .decl.dword %635 .decl.dword %636 .decl.dword %637 .decl.word %638 .decl.dword %639 .decl.dword %640 .decl.dword %641 .decl.dword %642 .decl.dword %643 .decl.dword %644 .decl.dword %645 .decl.word %646 .decl.dword %647 .decl.dword %648 .decl.dword %649 .decl.dword %650 .decl.bool %651 .decl.bool %652 .decl.bool %653 .decl.dword %654 .decl.bool %655 .decl.bool %656 .decl.bool %657 .decl.dword %658 .decl.dword %659 .decl.dword %660 .decl.dword %661 .decl.dword %662 .decl.word %663 .decl.dword %664 .decl.dword %665 .decl.dword %666 .decl.dword %667 .decl.dword %668 .decl.dword %669 .decl.dword %670 .decl.dword %671 .decl.word %672 .decl.dword %673 .decl.dword %674 .decl.dword %675 .decl.dword %676 .decl.dword %677 .decl.dword %678 .decl.dword %679 .decl.word %680 .decl.dword %681 .decl.dword %682 .decl.dword %683 .decl.dword %684 .decl.bool %685 .decl.bool %686 .decl.bool %687 .decl.dword %688 .decl.dword %689 .decl.dword %690 .decl.dword %691 .decl.dword %692 .decl.dword %693 .decl.word %694 .decl.dword %695 .decl.dword %696 .decl.dword %697 .decl.dword %698 .decl.dword %699 .decl.dword %700 .decl.dword %701 .decl.dword %702 .decl.word %703 .decl.dword %704 .decl.dword %705 .decl.dword %706 .decl.dword %707 .decl.dword %708 .decl.dword %709 .decl.dword %710 .decl.word %711 .decl.dword %712 .decl.dword %713 .decl.dword %714 .decl.dword %715 .decl.bool %716 .decl.bool %717 .decl.bool %718 .decl.bool %719 .decl.bool %720 .decl.bool %721 .decl.dword %722 .decl.dword %723 .decl.dword %724 .decl.dword %725 .decl.dword %726 .decl.dword %727 .decl.dword %728 .decl.dword %729 .decl.dword %730 .decl.dword %731 .decl.dword %732 .decl.dword %733 .decl.dword %734 .decl.dword %735 .decl.bool %736 .decl.bool %737 .decl.bool %738 .decl.dword %739 .decl.dword %740 .decl.dword %741 .decl.dword %742 .decl.dword %743 .decl.dword %744 .decl.dword %745 .decl.dword %746 .decl.dword %747 .decl.dword %748 .decl.dword %749 .decl.dword %750 .decl.dword %751 .decl.dword %752 .decl.dword %753 .decl.dword %754 .decl.dword %755 .decl.dword %756 .decl.dword %757 .decl.dword %758 .decl.dword %759 .decl.dword %760 .decl.bool %761 .decl.bool %762 .decl.bool %763 .decl.dword %764 .decl.bool %765 .decl.bool %766 .decl.bool %767 .decl.dword %768 .decl.dword %769 .decl.dword %770 .decl.dword %771 .decl.dword %772 .decl.dword %773 .decl.dword %774 .decl.dword %775 .decl.dword %776 .decl.dword %777 .decl.dword %778 .decl.dword %779 .decl.dword %780 .decl.dword %781 .decl.dword %782 .decl.dword %783 .decl.dword %784 .decl.dword %785 .decl.dword %786 .decl.dword %787 .decl.dword %788 .decl.bool %789 .decl.bool %790 .decl.bool %791 .decl.dword %792 .decl.dword %793 .decl.dword %794 .decl.dword %795 .decl.dword %796 .decl.dword %797 .decl.dword %798 .decl.dword %799 .decl.dword %800 .decl.dword %801 .decl.dword %802 .decl.dword %803 .decl.dword %804 .decl.dword %805 .decl.dword %806 .decl.dword %807 .decl.dword %808 .decl.dword %809 .decl.dword %810 .decl.dword %811 .decl.dword %812 .decl.dword %813 .decl.dword %814 .decl.dword %815 .decl.dword %816 .decl.dword %817 .decl.dword %818 .decl.dword %819 .decl.dword %820 .decl.dword %821 .decl.dword %822 .decl.dword %823 .decl.dword %824 .decl.dword %825 .decl.dword %826 .decl.dword %827 .decl.dword %828 .decl.dword %829 .decl.dword %830 .decl.dword %831 .decl.dword %832 .decl.dword %833 .decl.dword %834 .decl.dword %835 .decl.dword %836 .decl.dword %837 .decl.dword %838 .decl.dword %839 .decl.dword %840 .decl.dword %841 .decl.dword %842 .decl.dword %843 .decl.dword %844 .decl.dword %845 .decl.dword %846 .decl.dword %847 .decl.dword %848 .decl.dword %849 .decl.dword %850 .decl.dword %851 .decl.dword %852 .decl.dword %853 .decl.dword %854 .decl.dword %855 .decl.dword %856 .decl.dword %857 .decl.dword %858 .decl.dword %859 .decl.dword %860 .decl.dword %861 .decl.dword %862 .decl.dword %863 .decl.dword %864 .decl.dword %865 .decl.dword %866 .decl.dword %867 .decl.dword %868 .decl.dword %869 .decl.dword %870 .decl.dword %871 .decl.dword %872 .decl.dword %873 .decl.dword %874 .decl.dword %875 .decl.dword %876 .decl.dword %877 .decl.dword %878 .decl.dword %879 .decl.dword %880 .decl.dword %881 .decl.dword %882 .decl.dword %883 .decl.dword %884 .decl.dword %885 .decl.dword %886 .decl.dword %887 .decl.dword %888 .decl.dword %889 .decl.dword %890 .decl.dword %891 .decl.dword %892 .decl.dword %893 .decl.dword %894 .decl.dword %895 .decl.dword %896 .decl.dword %897 .decl.dword %898 .decl.dword %899 .decl.dword %900 .decl.dword %901 .decl.dword %902 .decl.dword %903 .decl.dword %904 .decl.dword %905 .decl.dword %906 .decl.dword %907 .decl.dword %908 .decl.dword %909 .decl.dword %910 .decl.dword %911 .decl.dword %912 .decl.dword %913 .decl.dword %914 .decl.dword %915 .decl.dword %916 .decl.dword %917 .decl.dword %918 .decl.dword %919 .decl.dword %920 .decl.dword %921 .decl.dword %922 .decl.dword %923 .decl.dword %924 .decl.dword %925 .decl.dword %926 .decl.dword %927 .decl.dword %928 .decl.dword %929 .decl.dword %930 .decl.dword %931 .decl.dword %932 .decl.dword %933 .decl.dword %934 .decl.dword %935 .decl.dword %936 .decl.dword %937 .decl.dword %938 .decl.dword %939 .decl.dword %940 .decl.dword %941 .decl.dword %942 .decl.dword %943 .decl.dword %944 .decl.dword %945 .decl.dword %946 .decl.dword %947 .decl.dword %948 .decl.dword %949 .decl.dword %950 .decl.dword %951 .decl.dword %952 .decl.dword %953 .decl.dword %954 .decl.dword %955 .decl.dword %956 .decl.dword %957 .decl.dword %958 .decl.dword %959 .decl.dword %960 .decl.dword %961 .decl.dword %962 .decl.dword %963 .decl.dword %964 .decl.dword %965 .decl.dword %966 .decl.dword %967 .decl.dword %968 .decl.dword %969 .decl.dword %970 .decl.dword %971 .decl.dword %972 .decl.dword %973 .decl.dword %974 .decl.dword %975 .decl.dword %976 .decl.dword %977 .decl.dword %978 .decl.dword %979 .decl.dword %980 .decl.dword %981 .decl.bool %982 .decl.dword %983 .decl.dword %984 .decl.dword %985 .decl.dword %986 .decl.dword %987 .decl.bool %988 .decl.dword %989 .decl.dword %990 .decl.dword %991 .decl.dword %992 .decl.dword %993 .decl.dword %994 .decl.dword %995 .decl.bool %996 .decl.dword %997 .decl.dword %998 .decl.dword %999 .decl.dword %1000 .decl.dword %1001 .decl.bool %1002 .decl.dword %1003 .decl.dword %1004 .decl.dword %1005 .decl.dword %1006 .decl.dword %1007 .decl.dword %1008 .decl.dword %1009 .decl.dword %1010 .decl.dword %1011 .decl.dword %1012 .decl.dword %1013 .decl.dword %1014 .decl.dword %1015 .decl.dword %1016 .decl.dword %1017 .decl.dword %1018 .decl.dword %1019 .decl.dword %1020 .decl.dword %1021 .decl.dword %1022 .decl.dword %1023 .decl.dword %1024 .decl.dword %1025 .decl.dword %1026 .decl.dword %1027 .decl.dword %1028 .decl.dword %1029 .decl.dword %1030 .decl.dword %1031 .decl.dword %1032 .decl.dword %1033 .decl.dword %1034 .decl.dword %1035 .decl.dword %1036 .decl.dword %1037 .decl.dword %1038 .decl.dword %1039 .decl.dword %1040 .decl.dword %1041 .decl.dword %1042 .decl.dword %1043 .decl.dword %1044 .decl.dword %1045 .decl.dword %1046 .decl.dword %1047 .decl.dword %1048 .decl.dword %1049 .decl.dword %1050 .decl.dword %1051 .decl.dword %1052 .decl.dword %1053 .decl.dword %1054 .decl.dword %1055 .decl.dword %1056 .decl.dword %1057 .decl.dword %1058 .decl.dword %1059 .decl.dword %1060 .decl.dword %1061 .decl.dword %1062 .decl.dword %1063 .decl.dword %1064 .decl.dword %1065 .decl.dword %1066 .decl.dword %1067 .decl.dword %1068 .decl.dword %1069 .decl.dword %1070 .decl.bool %1071 .decl.bool %1072 .decl.dword %1073 .decl.dword %1074 .decl.dword %1075 .decl.dword %1076 .decl.dword %1077 .decl.dword %1078 .decl.dword %1079 .decl.dword %1080 .decl.dword %1081 .decl.dword %1082 .decl.dword %1083 .decl.dword %1084 .decl.dword %1085 .decl.dword %1086 .decl.dword %1087 .decl.dword %1088 .decl.dword %1089 .decl.dword %1090 .decl.dword %1091 .decl.bool %1092 .decl.bool %1093 .decl.dword %1094 .decl.dword %1095 .decl.dword %1096 .decl.dword %1097 .decl.dword %1098 .decl.dword %1099 .decl.dword %1100 .decl.dword %1101 .decl.dword %1102 .decl.dword %1103 .decl.dword %1104 .decl.dword %1105 .decl.dword %1106 .decl.dword %1107 .decl.dword %1108 .decl.dword %1109 .decl.dword %1110 .decl.dword %1111 .decl.dword %1112 .decl.dword %1113 .decl.dword %1114 .decl.dword %1115 .decl.dword %1116 .decl.dword %1117 .decl.dword %1118 .decl.dword %1119 .decl.dword %1120 .decl.dword %1121 .decl.dword %1122 .decl.dword %1123 .decl.dword %1124 .decl.dword %1125 .decl.dword %1126 .decl.dword %1127 .decl.dword %1128 .decl.dword %1129 .decl.dword %1130 .decl.dword %1131 .decl.dword %1132 .decl.dword %1133 .decl.dword %1134 .decl.bool %1135 .decl.dword %1136 .decl.bool %1137 .decl.dword %1138 .decl.dword %1139 .decl.dword %1140 .decl.dword %1141 .decl.dword %1142 .decl.dword %1143 .decl.dword %1144 .decl.dword %1145 .decl.dword %1146 .decl.dword %1147 .decl.dword %1148 .decl.dword %1149 .decl.dword %1150 .decl.dword %1151 .decl.dword %1152 .decl.dword %1153 .decl.dword %1154 .decl.dword %1155 .decl.dword %1156 .decl.dword %1157 .decl.dword %1158 .decl.dword %1159 .decl.dword %1160 .decl.dword %1161 .decl.dword %1162 .decl.dword %1163 .decl.dword %1164 .decl.dword %1165 .decl.dword %1166 .decl.dword %1167 .decl.dword %1168 .decl.dword %1169 .decl.dword %1170 .decl.dword %1171 .decl.dword %1172 .decl.dword %1173 .decl.dword %1174 .decl.dword %1175 .decl.dword %1176 .decl.dword %1177 .decl.dword %1178 .decl.bool %1179 .decl.bool %1180 .decl.dword %1181 .decl.dword %1182 .decl.dword %1183 .decl.dword %1184 .decl.dword %1185 .decl.dword %1186 .decl.dword %1187 .decl.dword %1188 .decl.dword %1189 .decl.dword %1190 .decl.dword %1191 .decl.dword %1192 .decl.dword %1193 .decl.bool %1194 .decl.bool %1195 .decl.dword %1196 .decl.dword %1197 .decl.dword %1198 .decl.dword %1199 .decl.bool %1200 .decl.dword %1201 .decl.bool %1202 .decl.dword %1203 .decl.dword %1204 .decl.dword %1205 .decl.dword %1206 .decl.dword %1207 .decl.dword %1208 .decl.dword %1209 .decl.dword %1210 .decl.dword %1211 .decl.dword %1212 .decl.dword %1213 .decl.dword %1214 .decl.dword %1215 .decl.bool %1216 .decl.dword %1217 .decl.bool %1218 .decl.dword %1219 .decl.dword %1220 .decl.dword %1221 .decl.dword %1222 .decl.dword %1223 .decl.dword %1224 .decl.dword %1225 .decl.dword %1226 .decl.dword %1227 .decl.dword %1228 .decl.dword %1229 .decl.dword %1230 .decl.dword %1231 .decl.dword %1232 .decl.dword %1233 .decl.dword %1234 .decl.dword %1235 .decl.dword %1236 .decl.dword %1237 .decl.dword %1238 .decl.dword %1239 .decl.dword %1240 .decl.dword %1241 .decl.dword %1242 .decl.dword %1243 .decl.dword %1244 .decl.dword %1245 .decl.dword %1246 .decl.dword %1247 .decl.dword %1248 .decl.dword %1249 .decl.dword %1250 .decl.dword %1251 .decl.dword %1252 .decl.dword %1253 .decl.dword %1254 .decl.dword %1255 .decl.dword %1256 .decl.dword %1257 .decl.dword %1258 .decl.dword %1259 .decl.dword %1260 .decl.dword %1261 .decl.dword %1262 .decl.dword %1263 .decl.dword %1264 .decl.dword %1265 .decl.dword %1266 .decl.dword %1267 .decl.dword %1268 .decl.dword %1269 .decl.dword %1270 .decl.dword %1271 .decl.dword %1272 .decl.dword %1273 .decl.dword %1274 .decl.dword %1275 .decl.dword %1276 .decl.dword %1277 .decl.dword %1278 .decl.dword %1279 .decl.dword %1280 .decl.dword %1281 .decl.dword %1282 .decl.dword %1283 .decl.dword %1284 .decl.dword %1285 .decl.dword %1286 .decl.dword %1287 .decl.dword %1288 .decl.dword %1289 .decl.dword %1290 .decl.dword %1291 .decl.dword %1292 .decl.dword %1293 .decl.dword %1294 .decl.dword %1295 .decl.dword %1296 .decl.dword %1297 .decl.dword %1298 .decl.dword %1299 .decl.dword %1300 .decl.dword %1301 .decl.dword %1302 .decl.dword %1303 .decl.dword %1304 .decl.dword %1305 .decl.dword %1306 .decl.dword %1307 .decl.dword %1308 .decl.dword %1309 .decl.dword %1310 .decl.dword %1311 .decl.dword %1312 .decl.dword %1313 .decl.dword %1314 .decl.dword %1315 .decl.dword %1316 .decl.dword %1317 .decl.dword %1318 .decl.dword %1319 .decl.dword %1320 .decl.dword %1321 .decl.dword %1322 .decl.dword %1323 .decl.dword %1324 .decl.dword %1325 .decl.dword %1326 .decl.dword %1327 .decl.dword %1328 .decl.dword %1329 .decl.dword %1330 .decl.dword %1331 .decl.dword %1332 .decl.dword %1333 .decl.dword %1334 .decl.dword %1335 .decl.dword %1336 .decl.dword %1337 .decl.dword %1338 .decl.dword %1339 .decl.dword %1340 .decl.dword %1341 .decl.dword %1342 .decl.dword %1343 .decl.dword %1344 .decl.dword %1345 .decl.dword %1346 .decl.dword %1347 .decl.dword %1348 .decl.dword %1349 .decl.dword %1350 .decl.dword %1351 .decl.dword %1352 .decl.dword %1353 .decl.dword %1354 .decl.dword %1355 .decl.dword %1356 .decl.dword %1357 .decl.dword %1358 .decl.dword %1359 .decl.dword %1360 .decl.dword %1361 .decl.dword %1362 .decl.dword %1363 .decl.dword %1364 .decl.dword %1365 .decl.dword %1366 .decl.dword %1367 .decl.dword %1368 .decl.dword %1369 .decl.dword %1370 .decl.dword %1371 .decl.dword %1372 .decl.dword %1373 .decl.dword %1374 .decl.dword %1375 .decl.dword %1376 .decl.dword %1377 ## 10 input registers ## decl_input.global %41 dst decl_input.global %42 src decl_input.value %43 grx decl_input.value %44 gry decl_input.value %45 threshold decl_input.value %46 srcRowPixels decl_input.value %47 dstRowPixels decl_input.value %48 dstPlanePixels decl_input.value %49 sourceFormat decl_input.value %50 destFormat ## 0 output register ## ## 0 pushed register ## 64 blocks ## LABEL $0 LOADI.uint32 %51 4 LOADI.uint32 %52 5188 LOADI.uint32 %53 10372 LOADI.uint32 %54 15556 LABEL $1 LOADI.uint32 %813 4 SHL.int32 %55 %1 %813 ADD.int32 %56 %55 %0 LOADI.uint32 %814 52 MUL.int32 %57 %15 %814 LOADI.uint32 %815 5 SHR.uint32 %58 %57 %815 MUL.int32 %59 %16 %814 SHR.uint32 %60 %59 %815 LOADI.uint32 %818 26 MUL.int32 %61 %3 %818 LOADI.uint32 %819 4294967294 SUB.int32 %62 %819 %43 ADD.int32 %63 %62 %61 MUL.int32 %64 %4 %818 SUB.int32 %65 %819 %44 ADD.int32 %66 %65 %64 LOADI.uint32 %822 0 EQ.int32 %67 %49 %822 IF !<%67> -> label$112 LABEL $2 LOADI.uint32 %823 1296 GE.int32 %68 %56 %823 IF !<%68> -> label$110 LABEL $3 LOADI.uint32 %824 1 SHL.int32 %69 %60 %824 LOADI.uint32 %825 4294967294 ADD.int32 %70 %69 %825 SHL.int32 %71 %58 %824 ADD.int32 %72 %71 %825 MOV.int32 %74 %56 LABEL $4 LOADI.uint32 %828 36 REM.int32 %75 %74 %828 ADD.int32 %76 %75 %63 LOADI.uint32 %829 2 ADD.int32 %77 %76 %829 DIV.int32 %78 %74 %828 ADD.int32 %79 %78 %66 ADD.int32 %80 %79 %829 LOADI.uint32 %832 4294967294 LT.int32 %81 %76 %832 SUB.int32 %82 %832 %76 SEL.int32 %83 %81 %82 %77 LT.int32 %84 %83 %58 SUB.int32 %85 %72 %83 SEL.int32 %86 %84 %83 %85 LT.int32 %87 %79 %832 SUB.int32 %88 %832 %79 SEL.int32 %89 %87 %88 %80 LT.int32 %90 %89 %60 SUB.int32 %91 %70 %89 SEL.int32 %92 %90 %89 %91 MUL.int32 %93 %92 %46 ADD.int32 %94 %93 %86 MUL.int32 %95 %829 %94 ADD.int32 %96 %42 %95 SUB.uint32 %837 %96 %42 LOAD.int16.global.unaligned {%97} %837 bti:3 CVT.float.uint16 %98 %97 LOADI.float %838 16383 DIV.float %99 %98 %838 LOADI.uint32 %839 4 MUL.int32 %100 %839 %74 ADD.int32 %101 %51 %100 LOADI.uint32 %840 0 STORE.float.local.aligned %101 {%99} bti:254 LOADI.uint32 %842 256 ADD.int32 %74 %74 %842 LOADI.uint32 %843 1296 LT.int32 %103 %74 %843 WHILE<%103> -> label$4 LABEL $5 ENDIF -> label$110 LABEL $6 ELSE -> label$111 <**>label: 112 LOADI.uint32 %844 1296 GE.int32 %104 %56 %844 IF !<%104> -> label$101 LABEL $7 LOADI.uint32 %845 1 SHL.int32 %105 %60 %845 LOADI.uint32 %846 4294967294 ADD.int32 %106 %105 %846 SHL.int32 %107 %58 %845 ADD.int32 %108 %107 %846 MOV.int32 %110 %56 LABEL $8 LOADI.uint32 %849 36 REM.int32 %111 %110 %849 ADD.int32 %112 %111 %63 DIV.int32 %113 %110 %849 ADD.int32 %114 %113 %66 LOADI.uint32 %851 0 LT.int32 %115 %112 %851 SUB.int32 %116 %851 %112 SEL.int32 %117 %115 %116 %112 LT.int32 %118 %117 %58 SUB.int32 %119 %108 %117 SEL.int32 %120 %118 %117 %119 LT.int32 %121 %114 %851 SUB.int32 %122 %851 %114 SEL.int32 %123 %121 %122 %114 LT.int32 %124 %123 %60 SUB.int32 %125 %106 %123 SEL.int32 %126 %124 %123 %125 MUL.int32 %127 %126 %46 ADD.int32 %128 %127 %120 LOADI.uint32 %855 4 MUL.int32 %129 %855 %128 ADD.int32 %130 %42 %129 SUB.uint32 %856 %130 %42 LOAD.float.global.aligned {%131} %856 bti:3 MUL.int32 %132 %855 %110 ADD.int32 %133 %51 %132 STORE.float.local.aligned %133 {%131} bti:254 LOADI.uint32 %860 256 ADD.int32 %110 %110 %860 LOADI.uint32 %861 1296 LT.int32 %135 %110 %861 WHILE<%135> -> label$8 ENDIF -> label$101 ENDIF -> label$111 LABEL $9 SYNC.workgroup.local_read.local_write LOADI.uint32 %862 1 SHL.int32 %136 %0 %862 LOADI.uint32 %863 2 ADD.int32 %137 %136 %863 SHL.int32 %138 %1 %862 LOADI.uint32 %865 72 MUL.int32 %139 %1 %865 ADD.int32 %140 %139 %865 ADD.int32 %141 %140 %137 ADD.int32 %142 %140 %136 LOADI.uint32 %867 4 MUL.int32 %143 %867 %142 ADD.int32 %144 %51 %143 LOADI.uint32 %868 0 LOAD.float.local.aligned {%145 %146 %147} %144 bti:254 LOADI.uint32 %870 4294967295 ADD.int32 %148 %141 %870 MUL.int32 %149 %867 %148 ADD.int32 %150 %51 %149 LOADI.float %872 1.26953 MUL.float %151 %146 %872 LOADI.float %873 -0.140625 MAD.float %152 %145 %873 %151 OR.int32 %153 %141 %862 MUL.int32 %154 %867 %153 ADD.int32 %155 %51 %154 LOAD.float.local.aligned {%156} %155 bti:254 LOADI.float %878 -1.26953 MAD.float %157 %156 %878 %152 ADD.int32 %158 %141 %863 MUL.int32 %159 %867 %158 ADD.int32 %160 %51 %159 LOAD.float.local.aligned {%161} %160 bti:254 LOADI.float %883 0.140625 MAD.float %162 %161 %883 %157 ABS.float %163 %162 MUL.int32 %164 %867 %141 ADD.int32 %165 %51 %164 MUL.float %166 %147 %872 MAD.float %167 %146 %873 %166 MAD.float %168 %161 %878 %167 LOADI.uint32 %888 3 ADD.int32 %169 %141 %888 MUL.int32 %170 %867 %169 ADD.int32 %171 %51 %170 LOAD.float.local.aligned {%172} %171 bti:254 MAD.float %173 %172 %883 %168 ABS.float %174 %173 LOADI.float %893 -0 SUB.float %175 %893 %146 LOADI.float %894 2 MAD.float %176 %147 %894 %175 SUB.float %177 %176 %156 ABS.float %178 %177 SUB.float %179 %893 %147 MAD.float %180 %156 %894 %179 SUB.float %181 %180 %161 ABS.float %182 %181 ADD.int32 %183 %139 %137 MUL.int32 %184 %867 %183 ADD.int32 %185 %51 %184 LOAD.float.local.aligned {%186} %185 bti:254 LOADI.uint32 %900 4294967260 ADD.int32 %187 %141 %900 MUL.int32 %188 %867 %187 ADD.int32 %189 %51 %188 LOAD.float.local.aligned {%190} %189 bti:254 MUL.float %191 %190 %872 MAD.float %192 %186 %873 %191 LOADI.uint32 %906 36 ADD.int32 %193 %141 %906 MUL.int32 %194 %867 %193 ADD.int32 %195 %51 %194 LOAD.float.local.aligned {%196 %197} %195 bti:254 MAD.float %198 %196 %878 %192 ADD.int32 %199 %141 %865 MUL.int32 %200 %867 %199 ADD.int32 %201 %51 %200 LOAD.float.local.aligned {%202} %201 bti:254 MAD.float %203 %202 %883 %198 ABS.float %204 %203 MAD.float %205 %190 %873 %166 MAD.float %206 %202 %878 %205 LOADI.uint32 %918 108 ADD.int32 %207 %141 %918 MUL.int32 %208 %867 %207 ADD.int32 %209 %51 %208 LOAD.float.local.aligned {%210} %209 bti:254 MAD.float %211 %210 %883 %206 ABS.float %212 %211 SUB.float %213 %893 %190 MAD.float %214 %147 %894 %213 SUB.float %215 %214 %196 ABS.float %216 %215 MAD.float %217 %196 %894 %179 SUB.float %218 %217 %202 ABS.float %219 %218 LOADI.uint32 %926 34 ADD.int32 %220 %141 %926 MUL.int32 %221 %867 %220 ADD.int32 %222 %51 %221 LOAD.float.local.aligned {%223} %222 bti:254 LOADI.uint32 %930 35 ADD.int32 %224 %141 %930 MUL.int32 %225 %867 %224 ADD.int32 %226 %51 %225 LOAD.float.local.aligned {%227} %226 bti:254 MUL.float %228 %227 %872 MAD.float %229 %223 %873 %228 LOADI.uint32 %936 37 ADD.int32 %230 %141 %936 MAD.float %231 %197 %878 %229 LOADI.uint32 %938 38 ADD.int32 %232 %141 %938 MUL.int32 %233 %867 %232 ADD.int32 %234 %51 %233 LOAD.float.local.aligned {%235 %236} %234 bti:254 MAD.float %237 %235 %883 %231 ABS.float %238 %237 MUL.float %239 %196 %872 MAD.float %240 %227 %873 %239 MAD.float %241 %235 %878 %240 MAD.float %242 %236 %883 %241 ABS.float %243 %242 SUB.float %244 %893 %227 MAD.float %245 %196 %894 %244 SUB.float %246 %245 %197 ABS.float %247 %246 SUB.float %248 %893 %196 MAD.float %249 %197 %894 %248 SUB.float %250 %249 %235 ABS.float %251 %250 LOADI.uint32 %951 4294967224 ADD.int32 %252 %153 %951 MUL.int32 %253 %867 %252 ADD.int32 %254 %51 %253 LOAD.float.local.aligned {%255} %254 bti:254 ADD.int32 %256 %153 %900 MUL.int32 %257 %867 %256 ADD.int32 %258 %51 %257 LOAD.float.local.aligned {%259} %258 bti:254 MUL.float %260 %259 %872 MAD.float %261 %255 %873 %260 ADD.int32 %262 %153 %906 MUL.int32 %263 %867 %262 ADD.int32 %264 %51 %263 MAD.float %265 %197 %878 %261 ADD.int32 %266 %153 %865 MUL.int32 %267 %867 %266 ADD.int32 %268 %51 %267 LOAD.float.local.aligned {%269} %268 bti:254 MAD.float %270 %269 %883 %265 ABS.float %271 %270 MUL.float %272 %156 %872 MAD.float %273 %259 %873 %272 MAD.float %274 %269 %878 %273 ADD.int32 %275 %153 %918 MUL.int32 %276 %867 %275 ADD.int32 %277 %51 %276 LOAD.float.local.aligned {%278} %277 bti:254 MAD.float %279 %278 %883 %274 ABS.float %280 %279 SUB.float %281 %893 %259 MAD.float %282 %156 %894 %281 SUB.float %283 %282 %197 ABS.float %284 %283 SUB.float %285 %893 %156 MAD.float %286 %197 %894 %285 SUB.float %287 %286 %269 ABS.float %288 %287 ADD.float %289 %163 %204 LOADI.float %981 0.0488311 LT.float %290 %289 %981 ADD.float %291 %163 %178 SEL.float %292 %290 %163 %291 MUL.int32 %293 %867 %141 ADD.int32 %294 %52 %293 ADD.float %295 %216 %204 SEL.float %296 %290 %204 %295 MUL.int32 %297 %867 %141 ADD.int32 %298 %53 %297 STORE.float.local.aligned %298 {%296} bti:254 ADD.float %299 %174 %271 LT.float %300 %299 %981 ADD.float %301 %182 %174 SEL.float %302 %300 %174 %301 MUL.int32 %303 %867 %153 ADD.int32 %304 %52 %303 STORE.float.local.aligned %294 {%292 %302} bti:254 ADD.float %305 %284 %271 SEL.float %306 %300 %271 %305 MUL.int32 %307 %867 %153 ADD.int32 %308 %53 %307 STORE.float.local.aligned %308 {%306} bti:254 ADD.float %309 %212 %238 LT.float %310 %309 %981 ADD.float %311 %247 %238 SEL.float %312 %310 %238 %311 MUL.int32 %313 %867 %193 ADD.int32 %314 %52 %313 ADD.float %315 %219 %212 SEL.float %316 %310 %212 %315 MUL.int32 %317 %867 %193 ADD.int32 %318 %53 %317 STORE.float.local.aligned %318 {%316} bti:254 ADD.float %319 %243 %280 LT.float %320 %319 %981 ADD.float %321 %251 %243 SEL.float %322 %320 %243 %321 STORE.float.local.aligned %314 {%312 %322} bti:254 ADD.float %323 %288 %280 SEL.float %324 %320 %280 %323 MUL.int32 %325 %867 %230 ADD.int32 %326 %53 %325 STORE.float.local.aligned %326 {%324} bti:254 SYNC.workgroup.local_read.local_write MUL.int32 %327 %867 %148 ADD.int32 %328 %52 %327 LOAD.float.local.aligned {%329 %330 %331 %332} %328 bti:254 ADD.float %333 %329 %330 ADD.float %334 %333 %331 ADD.float %335 %330 %331 ADD.float %336 %335 %332 MUL.int32 %337 %867 %224 ADD.int32 %338 %52 %337 LOAD.float.local.aligned {%339 %340 %341 %342} %338 bti:254 ADD.float %343 %339 %340 MUL.int32 %344 %867 %262 ADD.int32 %345 %52 %344 ADD.float %346 %343 %341 ADD.float %347 %340 %341 ADD.float %348 %347 %342 MUL.int32 %349 %867 %187 ADD.int32 %350 %53 %349 LOAD.float.local.aligned {%351 %352} %350 bti:254 LOAD.float.local.aligned {%353} %298 bti:254 ADD.float %354 %351 %353 LOAD.float.local.aligned {%355} %318 bti:254 ADD.float %356 %354 %355 ADD.float %357 %353 %355 MUL.int32 %358 %867 %199 ADD.int32 %359 %53 %358 LOAD.float.local.aligned {%360} %359 bti:254 ADD.float %361 %357 %360 LOAD.float.local.aligned {%362} %308 bti:254 ADD.float %363 %352 %362 LOAD.float.local.aligned {%364} %326 bti:254 ADD.float %365 %363 %364 ADD.float %366 %362 %364 LOADI.uint32 %1029 73 ADD.int32 %367 %141 %1029 MUL.int32 %368 %867 %367 ADD.int32 %369 %53 %368 LOAD.float.local.aligned {%370} %369 bti:254 ADD.float %371 %366 %370 SYNC.workgroup.local_read.local_write STORE.float.local.aligned %294 {%334 %336} bti:254 STORE.float.local.aligned %314 {%346 %348} bti:254 STORE.float.local.aligned %298 {%356 %365} bti:254 STORE.float.local.aligned %318 {%361 %371} bti:254 SYNC.workgroup.local_read.local_write MUL.int32 %372 %867 %256 ADD.int32 %373 %52 %372 LOAD.float.local.aligned {%374} %373 bti:254 LOAD.float.local.aligned {%375} %304 bti:254 ADD.float %376 %374 %375 LOAD.float.local.aligned {%377} %345 bti:254 ADD.float %378 %376 %377 LOAD.float.local.aligned {%379} %294 bti:254 LOAD.float.local.aligned {%380} %314 bti:254 ADD.float %381 %379 %380 MUL.int32 %382 %867 %199 ADD.int32 %383 %52 %382 LOAD.float.local.aligned {%384} %383 bti:254 ADD.float %385 %381 %384 LOAD.float.local.aligned {%386 %387 %388} %298 bti:254 ADD.float %389 %386 %387 ADD.float %390 %389 %388 MUL.int32 %391 %867 %224 ADD.int32 %392 %53 %391 LOAD.float.local.aligned {%393 %394} %392 bti:254 ADD.float %395 %393 %394 MUL.int32 %396 %867 %232 ADD.int32 %397 %53 %396 LOAD.float.local.aligned {%398} %397 bti:254 ADD.float %399 %395 %398 LOAD.float.local.aligned {%400} %165 bti:254 LOAD.float.local.aligned {%401} %160 bti:254 ADD.float %402 %400 %401 LOAD.float.local.aligned {%403} %258 bti:254 LOAD.float.local.aligned {%404} %264 bti:254 ADD.float %405 %403 %404 SUB.float %406 %378 %390 ABS.float %407 %406 LT.float %408 %407 %45 BRA<%408> -> label$13 LABEL $10 GT.float %409 %378 %390 LOADI.uint32 %1073 4 MUL.int32 %410 %1073 %141 ADD.int32 %411 %54 %410 LOADI.uint32 %1074 0 STORE.float.local.aligned %411 {%400} bti:254 IF !<%409> -> label$74 LABEL $11 LOADI.float %1076 0.5 MUL.float %412 %402 %1076 LOADI.uint32 %1077 4 MUL.int32 %413 %1077 %153 ADD.int32 %414 %54 %413 LOADI.uint32 %1078 0 STORE.float.local.aligned %414 {%412} bti:254 LABEL $12 ELSE -> label$73 <**>label: 74 LOADI.float %1080 0.5 MUL.float %415 %405 %1080 LOADI.uint32 %1081 4 MUL.int32 %416 %1081 %153 ADD.int32 %417 %54 %416 LOADI.uint32 %1082 0 STORE.float.local.aligned %417 {%415} bti:254 ENDIF -> label$73 BRA -> label$14 LABEL $13 LOADI.uint32 %1084 4 MUL.int32 %418 %1084 %141 ADD.int32 %419 %54 %418 ADD.float %420 %402 %405 LOADI.float %1085 0.25 MUL.float %421 %420 %1085 LOADI.uint32 %1086 0 STORE.float.local.aligned %419 {%400 %421} bti:254 LABEL $14 LOADI.uint32 %1088 0 LOAD.float.local.aligned {%422} %226 bti:254 ADD.float %423 %422 %404 LOAD.float.local.aligned {%424} %201 bti:254 ADD.float %425 %400 %424 SUB.float %426 %385 %399 ABS.float %427 %426 LT.float %428 %427 %45 IF !<%428> -> label$98 LABEL $15 GT.float %429 %385 %399 IF !<%429> -> label$76 LABEL $16 LOADI.float %1094 0.5 MUL.float %430 %423 %1094 LOADI.uint32 %1095 4 MUL.int32 %431 %1095 %193 ADD.int32 %432 %54 %431 LOADI.uint32 %1096 0 STORE.float.local.aligned %432 {%430 %404} bti:254 MOV.uint32 %441 %432 LABEL $17 ELSE -> label$75 <**>label: 76 LOADI.float %1098 0.5 MUL.float %433 %425 %1098 LOADI.uint32 %1099 4 MUL.int32 %434 %1099 %193 ADD.int32 %435 %54 %434 LOADI.uint32 %1100 0 STORE.float.local.aligned %435 {%433 %404} bti:254 MOV.uint32 %441 %435 ENDIF -> label$75 LABEL $18 ELSE -> label$97 <**>label: 98 ADD.float %436 %423 %425 LOADI.float %1102 0.25 MUL.float %437 %436 %1102 LOADI.uint32 %1103 4 MUL.int32 %438 %1103 %193 ADD.int32 %441 %54 %438 LOADI.uint32 %1104 0 STORE.float.local.aligned %441 {%437 %404} bti:254 ENDIF -> label$97 LABEL $19 SYNC.workgroup.local_read.local_write LOADI.uint32 %1106 4 MUL.int32 %442 %1106 %141 ADD.int32 %443 %54 %442 LOADI.uint32 %1107 0 LOAD.float.local.aligned {%444 %445} %443 bti:254 MUL.int32 %446 %1106 %187 ADD.int32 %447 %54 %446 LOAD.float.local.aligned {%448} %447 bti:254 LOADI.float %1112 -0 SUB.float %449 %1112 %448 LOADI.float %1113 2 MAD.float %450 %444 %1113 %449 LOAD.float.local.aligned {%451} %441 bti:254 SUB.float %452 %450 %451 LOAD.float.local.aligned {%453} %189 bti:254 LOAD.float.local.aligned {%454} %195 bti:254 ADD.float %455 %453 %454 ADD.float %456 %452 %455 MUL.int32 %457 %1106 %262 ADD.int32 %458 %54 %457 LOAD.float.local.aligned {%459} %458 bti:254 SUB.float %460 %1112 %445 MAD.float %461 %459 %1113 %460 MUL.int32 %462 %1106 %266 ADD.int32 %463 %54 %462 LOAD.float.local.aligned {%464} %463 bti:254 SUB.float %465 %461 %464 LOAD.float.local.aligned {%466} %155 bti:254 LOAD.float.local.aligned {%467} %268 bti:254 ADD.float %468 %466 %467 ADD.float %469 %465 %468 LOADI.float %1132 0.5 MUL.float %470 %456 %1132 MUL.float %471 %469 %1132 LOADI.float %1134 0 GE.float %1135 %470 %1134 SEL.float %472 %1135 %470 %1134 GE.float %1137 %471 %1134 SEL.float %473 %1137 %471 %1134 LOADI.uint32 %1138 4294967262 ADD.int32 %474 %141 %1138 MUL.int32 %475 %1106 %474 ADD.int32 %476 %51 %475 LOAD.float.local.aligned {%477} %476 bti:254 ADD.float %478 %453 %477 ADD.float %479 %454 %478 LOAD.float.local.aligned {%480} %234 bti:254 ADD.float %481 %480 %479 LOAD.float.local.aligned {%482} %150 bti:254 ADD.float %483 %466 %482 LOADI.uint32 %1146 71 ADD.int32 %484 %141 %1146 MUL.int32 %485 %1106 %484 ADD.int32 %486 %51 %485 LOAD.float.local.aligned {%487} %486 bti:254 ADD.float %488 %483 %487 ADD.float %489 %488 %467 LOADI.float %1150 0.25 MUL.float %490 %481 %1150 MUL.float %491 %489 %1150 SUB.float %492 %1112 %444 MAD.float %493 %1113 %445 %492 MUL.int32 %494 %1106 %158 ADD.int32 %495 %54 %494 LOAD.float.local.aligned {%496} %495 bti:254 SUB.float %497 %493 %496 MUL.int32 %498 %1106 %224 ADD.int32 %499 %54 %498 LOAD.float.local.aligned {%500} %499 bti:254 SUB.float %501 %1112 %500 MAD.float %502 %1113 %451 %501 SUB.float %503 %502 %459 MUL.int32 %504 %1106 %256 ADD.int32 %505 %54 %504 LOAD.float.local.aligned {%506} %505 bti:254 SUB.float %507 %1112 %506 MAD.float %508 %1113 %445 %507 SUB.float %509 %508 %459 MAD.float %510 %1113 %451 %492 MUL.int32 %511 %1106 %199 ADD.int32 %512 %54 %511 LOAD.float.local.aligned {%513} %512 bti:254 SUB.float %514 %510 %513 LOAD.float.local.aligned {%515} %373 bti:254 LOAD.float.local.aligned {%516} %304 bti:254 ADD.float %517 %515 %516 LOAD.float.local.aligned {%518} %345 bti:254 ADD.float %519 %517 %518 LOAD.float.local.aligned {%520 %521 %522} %298 bti:254 ADD.float %523 %520 %521 ADD.float %524 %523 %522 SUB.float %525 %519 %524 ABS.float %526 %525 LT.float %527 %526 %45 BRA<%527> -> label$23 LABEL $20 GT.float %528 %519 %524 IF !<%528> -> label$78 LABEL $21 LOADI.float %1181 0.5 MUL.float %529 %509 %1181 ADD.float %530 %490 %529 MOV.float %537 %530 LABEL $22 ELSE -> label$77 <**>label: 78 LOADI.float %1182 0.5 MUL.float %531 %497 %1182 ADD.float %532 %531 %490 MOV.float %537 %532 ENDIF -> label$77 BRA -> label$24 LABEL $23 ADD.float %533 %497 %509 LOADI.float %1183 0.25 MUL.float %534 %533 %1183 ADD.float %537 %490 %534 LABEL $24 LOADI.uint32 %1184 0 LOAD.float.local.aligned {%538} %294 bti:254 LOAD.float.local.aligned {%539} %314 bti:254 ADD.float %540 %538 %539 LOAD.float.local.aligned {%541} %383 bti:254 ADD.float %542 %540 %541 LOAD.float.local.aligned {%543 %544} %392 bti:254 ADD.float %545 %543 %544 LOAD.float.local.aligned {%546} %397 bti:254 ADD.float %547 %545 %546 SUB.float %548 %542 %547 ABS.float %549 %548 LT.float %550 %549 %45 IF !<%550> -> label$100 LABEL $25 GT.float %551 %542 %547 IF !<%551> -> label$80 LABEL $26 LOADI.float %1196 0.5 MUL.float %552 %514 %1196 MOV.float %557 %552 LABEL $27 ELSE -> label$79 <**>label: 80 LOADI.float %1197 0.5 MUL.float %553 %503 %1197 MOV.float %557 %553 ENDIF -> label$79 LABEL $28 ELSE -> label$99 <**>label: 100 ADD.float %554 %503 %514 LOADI.float %1198 0.25 MUL.float %557 %554 %1198 ENDIF -> label$99 LABEL $29 ADD.float %558 %557 %491 LOADI.float %1199 0 GE.float %1200 %537 %1199 SEL.float %559 %1200 %537 %1199 GE.float %1202 %558 %1199 SEL.float %560 %1202 %558 %1199 LOADI.float %1203 -0 SUB.float %561 %1203 %451 LOADI.float %1204 2 MAD.float %562 %459 %1204 %561 LOADI.uint32 %1205 4 MUL.int32 %563 %1205 %232 ADD.int32 %564 %54 %563 LOADI.uint32 %1206 0 LOAD.float.local.aligned {%565} %564 bti:254 SUB.float %566 %562 %565 ADD.float %567 %454 %480 ADD.float %568 %566 %567 MUL.int32 %569 %1205 %148 ADD.int32 %570 %54 %569 LOAD.float.local.aligned {%571} %570 bti:254 SUB.float %572 %1203 %571 MAD.float %573 %444 %1204 %572 SUB.float %574 %573 %445 ADD.float %575 %574 %483 LOADI.float %1213 0.5 MUL.float %576 %568 %1213 MUL.float %577 %575 %1213 GE.float %1216 %576 %1199 SEL.float %578 %1216 %576 %1199 GE.float %1218 %577 %1199 SEL.float %579 %1218 %577 %1199 SYNC.workgroup.local_read.local_write STORE.float.local.aligned %294 {%579} bti:254 LOAD.float.local.aligned {%580} %155 bti:254 STORE.float.local.aligned %304 {%580} bti:254 STORE.float.local.aligned %314 {%560 %473} bti:254 STORE.float.local.aligned %298 {%472 %559} bti:254 LOAD.float.local.aligned {%581} %195 bti:254 STORE.float.local.aligned %318 {%581 %578} bti:254 SYNC.workgroup.local_read.local_write LOADI.uint32 %1233 26 ADD.int32 %582 %61 %1233 LT.int32 %583 %582 %47 SEL.int32 %584 %583 %582 %47 ADD.int32 %585 %64 %1233 LT.int32 %586 %585 %47 SEL.int32 %587 %586 %585 %47 LOADI.uint32 %1235 4294967293 ADD.int32 %588 %136 %1235 ADD.int32 %589 %588 %61 ADD.int32 %590 %138 %1235 ADD.int32 %591 %590 %64 EQ.int32 %592 %50 %1206 BRA<%592> -> label$46 LABEL $30 LOADI.uint32 %1238 1 SHL.int32 %593 %48 %1238 GE.int32 %594 %589 %61 LT.int32 %595 %589 %584 AND.bool %596 %594 %595 IF !<%596> -> label$103 LABEL $31 LABEL $32 ELSE -> label$102 <**>label: 103 GE.int32 %597 %591 %64 LT.int32 %598 %591 %587 AND.bool %599 %597 %598 IF !<%599> -> label$82 LABEL $33 LABEL $34 ELSE -> label$81 <**>label: 82 LOADI.uint32 %1239 0 LOAD.float.local.aligned {%600} %294 bti:254 LOADI.float %1241 16383 MUL.float %601 %600 %1241 CVT.uint16.float %602 %601 MUL.int32 %603 %591 %47 ADD.int32 %604 %603 %589 LOADI.uint32 %1242 2 MUL.int32 %605 %1242 %604 ADD.int32 %606 %41 %605 SUB.uint32 %1243 %606 %41 STORE.int16.global.unaligned %1243 {%602} bti:2 LOAD.float.local.aligned {%607} %443 bti:254 MUL.float %608 %607 %1241 CVT.uint16.float %609 %608 ADD.int32 %610 %604 %48 MUL.int32 %611 %1242 %610 ADD.int32 %612 %41 %611 SUB.uint32 %1248 %612 %41 STORE.int16.global.unaligned %1248 {%609} bti:2 LOAD.float.local.aligned {%613} %298 bti:254 MUL.float %614 %613 %1241 CVT.uint16.float %615 %614 ADD.int32 %616 %604 %593 MUL.int32 %617 %1242 %616 ADD.int32 %618 %41 %617 SUB.uint32 %1253 %618 %41 STORE.int16.global.unaligned %1253 {%615} bti:2 ENDIF -> label$81 LABEL $35 LOADI.uint32 %1254 1 ADD.int32 %619 %591 %1254 GE.int32 %620 %619 %64 LT.int32 %621 %619 %587 AND.bool %622 %620 %621 IF !<%622> -> label$84 LABEL $36 LABEL $37 ELSE -> label$83 <**>label: 84 LOADI.uint32 %1255 108 ADD.int32 %623 %139 %1255 ADD.int32 %624 %137 %623 LOADI.uint32 %1256 4 MUL.int32 %625 %1256 %624 ADD.int32 %626 %52 %625 LOADI.uint32 %1257 0 LOAD.float.local.aligned {%627} %626 bti:254 LOADI.float %1259 16383 MUL.float %628 %627 %1259 CVT.uint16.float %629 %628 MUL.int32 %630 %619 %47 ADD.int32 %631 %630 %589 LOADI.uint32 %1260 2 MUL.int32 %632 %1260 %631 ADD.int32 %633 %41 %632 SUB.uint32 %1261 %633 %41 STORE.int16.global.unaligned %1261 {%629} bti:2 MUL.int32 %634 %1256 %624 ADD.int32 %635 %54 %634 LOAD.float.local.aligned {%636} %635 bti:254 MUL.float %637 %636 %1259 CVT.uint16.float %638 %637 ADD.int32 %639 %631 %48 MUL.int32 %640 %1260 %639 ADD.int32 %641 %41 %640 SUB.uint32 %1267 %641 %41 STORE.int16.global.unaligned %1267 {%638} bti:2 MUL.int32 %642 %1256 %624 ADD.int32 %643 %53 %642 LOAD.float.local.aligned {%644} %643 bti:254 MUL.float %645 %644 %1259 CVT.uint16.float %646 %645 ADD.int32 %647 %631 %593 MUL.int32 %648 %1260 %647 ADD.int32 %649 %41 %648 SUB.uint32 %1273 %649 %41 STORE.int16.global.unaligned %1273 {%646} bti:2 ENDIF -> label$83 ENDIF -> label$102 LABEL $38 LOADI.uint32 %1274 1 ADD.int32 %650 %589 %1274 GE.int32 %651 %650 %61 LT.int32 %652 %650 %584 AND.bool %653 %651 %652 LOADI.uint32 %1275 3 ADD.int32 %654 %136 %1275 IF !<%653> -> label$105 LABEL $39 LABEL $40 ELSE -> label$104 <**>label: 105 GE.int32 %655 %591 %64 LT.int32 %656 %591 %587 AND.bool %657 %655 %656 IF !<%657> -> label$86 LABEL $41 LABEL $42 ELSE -> label$85 <**>label: 86 ADD.int32 %658 %654 %140 LOADI.uint32 %1276 4 MUL.int32 %659 %1276 %658 ADD.int32 %660 %52 %659 LOADI.uint32 %1277 0 LOAD.float.local.aligned {%661} %660 bti:254 LOADI.float %1279 16383 MUL.float %662 %661 %1279 CVT.uint16.float %663 %662 MUL.int32 %664 %591 %47 ADD.int32 %665 %664 %650 LOADI.uint32 %1280 2 MUL.int32 %666 %1280 %665 ADD.int32 %667 %41 %666 SUB.uint32 %1281 %667 %41 STORE.int16.global.unaligned %1281 {%663} bti:2 MUL.int32 %668 %1276 %658 ADD.int32 %669 %54 %668 LOAD.float.local.aligned {%670} %669 bti:254 MUL.float %671 %670 %1279 CVT.uint16.float %672 %671 ADD.int32 %673 %665 %48 MUL.int32 %674 %1280 %673 ADD.int32 %675 %41 %674 SUB.uint32 %1287 %675 %41 STORE.int16.global.unaligned %1287 {%672} bti:2 MUL.int32 %676 %1276 %658 ADD.int32 %677 %53 %676 LOAD.float.local.aligned {%678} %677 bti:254 MUL.float %679 %678 %1279 CVT.uint16.float %680 %679 ADD.int32 %681 %665 %593 MUL.int32 %682 %1280 %681 ADD.int32 %683 %41 %682 SUB.uint32 %1293 %683 %41 STORE.int16.global.unaligned %1293 {%680} bti:2 ENDIF -> label$85 LABEL $43 LOADI.uint32 %1294 1 ADD.int32 %684 %591 %1294 GE.int32 %685 %684 %64 LT.int32 %686 %684 %587 AND.bool %687 %685 %686 IF !<%687> -> label$88 LABEL $44 LABEL $45 ELSE -> label$87 <**>label: 88 LOADI.uint32 %1295 108 ADD.int32 %688 %139 %1295 ADD.int32 %689 %654 %688 LOADI.uint32 %1296 4 MUL.int32 %690 %1296 %689 ADD.int32 %691 %52 %690 LOADI.uint32 %1297 0 LOAD.float.local.aligned {%692} %691 bti:254 LOADI.float %1299 16383 MUL.float %693 %692 %1299 CVT.uint16.float %694 %693 MUL.int32 %695 %684 %47 ADD.int32 %696 %695 %650 LOADI.uint32 %1300 2 MUL.int32 %697 %1300 %696 ADD.int32 %698 %41 %697 SUB.uint32 %1301 %698 %41 STORE.int16.global.unaligned %1301 {%694} bti:2 MUL.int32 %699 %1296 %689 ADD.int32 %700 %54 %699 LOAD.float.local.aligned {%701} %700 bti:254 MUL.float %702 %701 %1299 CVT.uint16.float %703 %702 ADD.int32 %704 %696 %48 MUL.int32 %705 %1300 %704 ADD.int32 %706 %41 %705 SUB.uint32 %1307 %706 %41 STORE.int16.global.unaligned %1307 {%703} bti:2 MUL.int32 %707 %1296 %689 ADD.int32 %708 %53 %707 LOAD.float.local.aligned {%709} %708 bti:254 MUL.float %710 %709 %1299 CVT.uint16.float %711 %710 ADD.int32 %712 %696 %593 MUL.int32 %713 %1300 %712 ADD.int32 %714 %41 %713 SUB.uint32 %1313 %714 %41 STORE.int16.global.unaligned %1313 {%711} bti:2 ENDIF -> label$87 ENDIF -> label$104 BRA -> label$62 LABEL $46 LOADI.uint32 %1314 1 SHL.int32 %715 %48 %1314 GE.int32 %716 %589 %61 LT.int32 %717 %589 %584 AND.bool %718 %716 %717 IF !<%718> -> label$107 LABEL $47 LABEL $48 ELSE -> label$106 <**>label: 107 GE.int32 %719 %591 %64 LT.int32 %720 %591 %587 AND.bool %721 %719 %720 IF !<%721> -> label$90 LABEL $49 LABEL $50 ELSE -> label$89 <**>label: 90 LOADI.uint32 %1315 0 LOAD.float.local.aligned {%722} %294 bti:254 MUL.int32 %723 %591 %47 ADD.int32 %724 %723 %589 LOADI.uint32 %1317 4 MUL.int32 %725 %1317 %724 ADD.int32 %726 %41 %725 SUB.uint32 %1318 %726 %41 STORE.float.global.aligned %1318 {%722} bti:2 LOAD.float.local.aligned {%727} %443 bti:254 ADD.int32 %728 %724 %48 MUL.int32 %729 %1317 %728 ADD.int32 %730 %41 %729 SUB.uint32 %1322 %730 %41 STORE.float.global.aligned %1322 {%727} bti:2 LOAD.float.local.aligned {%731} %298 bti:254 ADD.int32 %732 %724 %715 MUL.int32 %733 %1317 %732 ADD.int32 %734 %41 %733 SUB.uint32 %1326 %734 %41 STORE.float.global.aligned %1326 {%731} bti:2 ENDIF -> label$89 LABEL $51 LOADI.uint32 %1327 1 ADD.int32 %735 %591 %1327 GE.int32 %736 %735 %64 LT.int32 %737 %735 %587 AND.bool %738 %736 %737 IF !<%738> -> label$92 LABEL $52 LABEL $53 ELSE -> label$91 <**>label: 92 LOADI.uint32 %1328 108 ADD.int32 %739 %139 %1328 ADD.int32 %740 %137 %739 LOADI.uint32 %1329 4 MUL.int32 %741 %1329 %740 ADD.int32 %742 %52 %741 LOADI.uint32 %1330 0 LOAD.float.local.aligned {%743} %742 bti:254 MUL.int32 %744 %735 %47 ADD.int32 %745 %744 %589 MUL.int32 %746 %1329 %745 ADD.int32 %747 %41 %746 SUB.uint32 %1333 %747 %41 STORE.float.global.aligned %1333 {%743} bti:2 MUL.int32 %748 %1329 %740 ADD.int32 %749 %54 %748 LOAD.float.local.aligned {%750} %749 bti:254 ADD.int32 %751 %745 %48 MUL.int32 %752 %1329 %751 ADD.int32 %753 %41 %752 SUB.uint32 %1338 %753 %41 STORE.float.global.aligned %1338 {%750} bti:2 MUL.int32 %754 %1329 %740 ADD.int32 %755 %53 %754 LOAD.float.local.aligned {%756} %755 bti:254 ADD.int32 %757 %745 %715 MUL.int32 %758 %1329 %757 ADD.int32 %759 %41 %758 SUB.uint32 %1343 %759 %41 STORE.float.global.aligned %1343 {%756} bti:2 ENDIF -> label$91 ENDIF -> label$106 LABEL $54 LOADI.uint32 %1344 1 ADD.int32 %760 %589 %1344 GE.int32 %761 %760 %61 LT.int32 %762 %760 %584 AND.bool %763 %761 %762 LOADI.uint32 %1345 3 ADD.int32 %764 %136 %1345 IF !<%763> -> label$109 LABEL $55 LABEL $56 ELSE -> label$108 <**>label: 109 GE.int32 %765 %591 %64 LT.int32 %766 %591 %587 AND.bool %767 %765 %766 IF !<%767> -> label$94 LABEL $57 LABEL $58 ELSE -> label$93 <**>label: 94 ADD.int32 %768 %764 %140 LOADI.uint32 %1346 4 MUL.int32 %769 %1346 %768 ADD.int32 %770 %52 %769 LOADI.uint32 %1347 0 LOAD.float.local.aligned {%771} %770 bti:254 MUL.int32 %772 %591 %47 ADD.int32 %773 %772 %760 MUL.int32 %774 %1346 %773 ADD.int32 %775 %41 %774 SUB.uint32 %1350 %775 %41 STORE.float.global.aligned %1350 {%771} bti:2 MUL.int32 %776 %1346 %768 ADD.int32 %777 %54 %776 LOAD.float.local.aligned {%778} %777 bti:254 ADD.int32 %779 %773 %48 MUL.int32 %780 %1346 %779 ADD.int32 %781 %41 %780 SUB.uint32 %1355 %781 %41 STORE.float.global.aligned %1355 {%778} bti:2 MUL.int32 %782 %1346 %768 ADD.int32 %783 %53 %782 LOAD.float.local.aligned {%784} %783 bti:254 ADD.int32 %785 %773 %715 MUL.int32 %786 %1346 %785 ADD.int32 %787 %41 %786 SUB.uint32 %1360 %787 %41 STORE.float.global.aligned %1360 {%784} bti:2 ENDIF -> label$93 LABEL $59 LOADI.uint32 %1361 1 ADD.int32 %788 %591 %1361 GE.int32 %789 %788 %64 LT.int32 %790 %788 %587 AND.bool %791 %789 %790 IF !<%791> -> label$96 LABEL $60 LABEL $61 ELSE -> label$95 <**>label: 96 LOADI.uint32 %1362 108 ADD.int32 %792 %139 %1362 ADD.int32 %793 %764 %792 LOADI.uint32 %1363 4 MUL.int32 %794 %1363 %793 ADD.int32 %795 %52 %794 LOADI.uint32 %1364 0 LOAD.float.local.aligned {%796} %795 bti:254 MUL.int32 %797 %788 %47 ADD.int32 %798 %797 %760 MUL.int32 %799 %1363 %798 ADD.int32 %800 %41 %799 SUB.uint32 %1367 %800 %41 STORE.float.global.aligned %1367 {%796} bti:2 MUL.int32 %801 %1363 %793 ADD.int32 %802 %54 %801 LOAD.float.local.aligned {%803} %802 bti:254 ADD.int32 %804 %798 %48 MUL.int32 %805 %1363 %804 ADD.int32 %806 %41 %805 SUB.uint32 %1372 %806 %41 STORE.float.global.aligned %1372 {%803} bti:2 MUL.int32 %807 %1363 %793 ADD.int32 %808 %53 %807 LOAD.float.local.aligned {%809} %808 bti:254 ADD.int32 %810 %798 %715 MUL.int32 %811 %1363 %810 ADD.int32 %812 %41 %811 SUB.uint32 %1377 %812 %41 STORE.float.global.aligned %1377 {%809} bti:2 ENDIF -> label$95 ENDIF -> label$108 LABEL $62 LABEL $63 RET .end_function demosaicKernel's SELECTION IR begin: WARNING: not completed yet, welcome for the FIX! [0] L0: [2] CMP.le(16) arf : %23<8,8,1>:UW 0x0:UW [4](f0.1) IF(16) : 0:D [6] MOV(1) %51<0>:UD : 0x4:UD [8] MOV(1) %52<0>:UD : 0x1444:UD [10] MOV(1) %53<0>:UD : 0x2884:UD [12] MOV(1) %54<0>:UD : 0x3cc4:UD [14] L1: [16] SHL(16) %55<1>:D : %1<8,8,1>:D 4:D [18] ADD(16) %56<1>:D : %55<8,8,1>:D %0<8,8,1>:D [20] MUL(1) %57<0>:UD : %15<0,1,0>:UD 0x34:UW [22] SHR(1) %58<0>:UD : %57<0,1,0>:UD 0x5:UD [24] MUL(1) %59<0>:UD : %16<0,1,0>:UD 0x34:UW [26] SHR(1) %60<0>:UD : %59<0,1,0>:UD 0x5:UD [28] MUL(1) %61<0>:UD : %3<0,1,0>:UD 0x1a:UW [30] ADD(1) %62<0>:D : -%43<0,1,0>:D -2:D [32] ADD(1) %63<0>:D : %62<0,1,0>:D %61<0,1,0>:D [34] MUL(1) %64<0>:UD : %4<0,1,0>:UD 0x1a:UW [36] ADD(1) %65<0>:D : -%44<0,1,0>:D -2:D [38] ADD(1) %66<0>:D : %65<0,1,0>:D %64<0,1,0>:D [40] CMP.eq(16) arf : %49<0,1,0>:D 0:D [42](f67) IF(16) : 0:D [44] L2: [46] CMP.ge(16) arf : %56<8,8,1>:D 1296:D [48](f68) IF(16) : 0:D [50] L3: [52] SHL(1) %69<0>:D : %60<0,1,0>:D 1:D [54] ADD(1) %70<0>:D : %69<0,1,0>:D -2:D [56] SHL(1) %71<0>:D : %58<0,1,0>:D 1:D [58] ADD(1) %72<0>:D : %71<0,1,0>:D -2:D [60] MOV(16) %74<1>:F : %56<8,8,1>:F [62] L4: [64] MOV(1) %828<0>:UD : 0x24:UD [66] MATH(16) %75<1>:D : %74<8,8,1>:D %828<0,1,0>:D [68] ADD(16) %76<1>:D : %75<8,8,1>:D %63<0,1,0>:D [70] ADD(16) %77<1>:D : %76<8,8,1>:D 2:D [72] MATH(16) %78<1>:D : %74<8,8,1>:D %828<0,1,0>:D [74] ADD(16) %79<1>:D : %78<8,8,1>:D %66<0,1,0>:D [76] ADD(16) %80<1>:D : %79<8,8,1>:D 2:D [78] CMP.l(16) arf : %76<8,8,1>:D -2:D [80] ADD(16) %82<1>:D : -%76<8,8,1>:D -2:D [82](f81) SEL(16) %83<1>:D : %82<8,8,1>:D %77<8,8,1>:D [84] CMP.l(16) arf : %83<8,8,1>:D %58<0,1,0>:D [86] ADD(16) %85<1>:D : %72<0,1,0>:D -%83<8,8,1>:D [88](f84) SEL(16) %86<1>:D : %83<8,8,1>:D %85<8,8,1>:D [90] CMP.l(16) arf : %79<8,8,1>:D -2:D [92] ADD(16) %88<1>:D : -%79<8,8,1>:D -2:D [94](f87) SEL(16) %89<1>:D : %88<8,8,1>:D %80<8,8,1>:D [96] CMP.l(16) arf : %89<8,8,1>:D %60<0,1,0>:D [98] ADD(16) %91<1>:D : %70<0,1,0>:D -%89<8,8,1>:D [100](f90) SEL(16) %92<1>:D : %89<8,8,1>:D %91<8,8,1>:D [102] MUL(8) arf : %92<8,8,1>:D %46<0,1,0>:D [104] MACH(8) arf : %92<8,8,1>:D %46<0,1,0>:D [106] MOV(8) %93<1>:F : arf [108] MUL(8) arf : %92<8,8,1>:D %46<0,1,0>:D [110] MACH(8) arf : %92<8,8,1>:D %46<0,1,0>:D [112] MOV(8) %1381<1>:F : arf [114] MOV(8) %93<1>:F : %1381<8,8,1>:F [116] ADD(16) %94<1>:D : %93<8,8,1>:D %86<8,8,1>:D [118] MUL(16) %95<1>:UD : %94<8,8,1>:UD 0x2:UW [120] ADD(16) %96<1>:D : %42<0,1,0>:D %95<8,8,1>:D [122] ADD(16) %837<1>:UD : %96<8,8,1>:UD -%42<0,1,0>:UD [124] AND(16) %1379<1>:UD : %837<8,8,1>:UD 0xfffffffc:UD [126] UNTYPED_READ(16) %1378<1>:UD : %1379<8,8,1>:UD 0x3:UD [128] AND(16) %1380<1>:UD : %837<8,8,1>:UD 0x3:UD [130] SHL(16) %1380<1>:UD : %1380<8,8,1>:UD 0x3:UD [132] SHR(16) %1378<1>:UD : %1378<8,8,1>:UD %1380<8,8,1>:UD [134] MOV(16) %97<1>:UW : %1378<16,8,2>:UW [136] MOV(16) %98<1>:F : %97<8,8,1>:UW [138] MOV(1) %838<0>:F : 16383:F [140] MATH(16) %99<1>:F : %98<8,8,1>:F %838<0,1,0>:F [142] MUL(16) %100<1>:UD : %74<8,8,1>:UD 0x4:UW [144] ADD(16) %101<1>:D : %51<0,1,0>:D %100<8,8,1>:D [146] UNTYPED_WRITE(16) : %101<8,8,1>:UD %99<8,8,1>:UD 0xfe:UD [148] ADD(16) %74<1>:D : %74<8,8,1>:D 256:D [150] CMP.l(16) arf : %74<8,8,1>:D 1296:D [152](f103) WHILE(16) : 0:D [154] L5: [156] L110: [158] ENDIF(16) : 0:D [160] L6: [162] ELSE(16) : 0:D [164] L112: [166] CMP.ge(16) arf : %56<8,8,1>:D 1296:D [168](f104) IF(16) : 0:D [170] L7: [172] SHL(1) %105<0>:D : %60<0,1,0>:D 1:D [174] ADD(1) %106<0>:D : %105<0,1,0>:D -2:D [176] SHL(1) %107<0>:D : %58<0,1,0>:D 1:D [178] ADD(1) %108<0>:D : %107<0,1,0>:D -2:D [180] MOV(16) %110<1>:F : %56<8,8,1>:F [182] L8: [184] MOV(1) %849<0>:UD : 0x24:UD [186] MATH(16) %111<1>:D : %110<8,8,1>:D %849<0,1,0>:D [188] ADD(16) %112<1>:D : %111<8,8,1>:D %63<0,1,0>:D [190] MATH(16) %113<1>:D : %110<8,8,1>:D %849<0,1,0>:D [192] ADD(16) %114<1>:D : %113<8,8,1>:D %66<0,1,0>:D [194] CMP.l(16) arf : %112<8,8,1>:D 0:D [196] ADD(16) %116<1>:D : -%112<8,8,1>:D 0:D [198](f115) SEL(16) %117<1>:D : %116<8,8,1>:D %112<8,8,1>:D [200] CMP.l(16) arf : %117<8,8,1>:D %58<0,1,0>:D [202] ADD(16) %119<1>:D : %108<0,1,0>:D -%117<8,8,1>:D [204](f118) SEL(16) %120<1>:D : %117<8,8,1>:D %119<8,8,1>:D [206] CMP.l(16) arf : %114<8,8,1>:D 0:D [208] ADD(16) %122<1>:D : -%114<8,8,1>:D 0:D [210](f121) SEL(16) %123<1>:D : %122<8,8,1>:D %114<8,8,1>:D [212] CMP.l(16) arf : %123<8,8,1>:D %60<0,1,0>:D [214] ADD(16) %125<1>:D : %106<0,1,0>:D -%123<8,8,1>:D [216](f124) SEL(16) %126<1>:D : %123<8,8,1>:D %125<8,8,1>:D [218] MUL(8) arf : %126<8,8,1>:D %46<0,1,0>:D [220] MACH(8) arf : %126<8,8,1>:D %46<0,1,0>:D [222] MOV(8) %127<1>:F : arf [224] MUL(8) arf : %126<8,8,1>:D %46<0,1,0>:D [226] MACH(8) arf : %126<8,8,1>:D %46<0,1,0>:D [228] MOV(8) %1382<1>:F : arf [230] MOV(8) %127<1>:F : %1382<8,8,1>:F [232] ADD(16) %128<1>:D : %127<8,8,1>:D %120<8,8,1>:D [234] MUL(16) %129<1>:UD : %128<8,8,1>:UD 0x4:UW [236] ADD(16) %130<1>:D : %42<0,1,0>:D %129<8,8,1>:D [238] ADD(16) %856<1>:UD : %130<8,8,1>:UD -%42<0,1,0>:UD [240] UNTYPED_READ(16) %131<1>:UD : %856<8,8,1>:UD 0x3:UD [242] MUL(16) %132<1>:UD : %110<8,8,1>:UD 0x4:UW [244] ADD(16) %133<1>:D : %51<0,1,0>:D %132<8,8,1>:D [246] UNTYPED_WRITE(16) : %133<8,8,1>:UD %131<8,8,1>:UD 0xfe:UD [248] ADD(16) %110<1>:D : %110<8,8,1>:D 256:D [250] CMP.l(16) arf : %110<8,8,1>:D 1296:D [252](f135) WHILE(16) : 0:D [254] L101: [256] ENDIF(16) : 0:D [258] L111: [260] ENDIF(16) : 0:D [262] L64: [264] ENDIF(16) : 0:D [266] L9: [268] CMP.le(16) arf : %23<8,8,1>:UW 0x9:UW [270](f0.1) MOV(16) %23<1>:UW : 0xffff:UW [272] CMP.eq(16) arf : %23<8,8,1>:UW 0xffff:UW [274](f0.1) JMPI(1) : 0:D [276](f0.1) MOV(16) %23<1>:UW : 0x9:UW [278] BARRIER(16) %1390<1>:F : %1389<8,8,1>:UD [280] SHL(16) %136<1>:D : %0<8,8,1>:D 1:D [282] ADD(16) %137<1>:D : %136<8,8,1>:D 2:D [284] SHL(16) %138<1>:D : %1<8,8,1>:D 1:D [286] MOV(1) %865<0>:UD : 0x48:UD [288] MUL(16) %139<1>:D : %865<0,1,0>:D %1<8,8,1>:UD [290] ADD(16) %140<1>:D : %139<8,8,1>:D 72:D [292] ADD(16) %141<1>:D : %140<8,8,1>:D %137<8,8,1>:D [294] ADD(16) %142<1>:D : %140<8,8,1>:D %136<8,8,1>:D [296] MUL(16) %143<1>:UD : %142<8,8,1>:UD 0x4:UW [298] ADD(16) %144<1>:D : %51<0,1,0>:D %143<8,8,1>:D [300] UNTYPED_READ(16) %145<1>:UD %146<1>:UD %147<1>:UD : %144<8,8,1>:UD 0xfe:UD [302] ADD(16) %148<1>:D : %141<8,8,1>:D -1:D [304] MUL(16) %149<1>:UD : %148<8,8,1>:UD 0x4:UW [306] ADD(16) %150<1>:D : %51<0,1,0>:D %149<8,8,1>:D [308] MUL(16) %151<1>:F : %146<8,8,1>:F 1.26953:F [310] MOV(1) %873<0>:F : -0.140625:F [312] MAD(16) %152<1>:F : %151<8,8,1>:F %145<8,8,1>:F %873<0,1,0>:F [314] OR(16) %153<1>:D : %141<8,8,1>:D 1:D [316] MUL(16) %154<1>:UD : %153<8,8,1>:UD 0x4:UW [318] ADD(16) %155<1>:D : %51<0,1,0>:D %154<8,8,1>:D [320] UNTYPED_READ(16) %156<1>:UD : %155<8,8,1>:UD 0xfe:UD [322] MOV(1) %878<0>:F : -1.26953:F [324] MAD(16) %157<1>:F : %152<8,8,1>:F %156<8,8,1>:F %878<0,1,0>:F [326] ADD(16) %158<1>:D : %141<8,8,1>:D 2:D [328] MUL(16) %159<1>:UD : %158<8,8,1>:UD 0x4:UW [330] ADD(16) %160<1>:D : %51<0,1,0>:D %159<8,8,1>:D [332] UNTYPED_READ(16) %161<1>:UD : %160<8,8,1>:UD 0xfe:UD [334] MOV(1) %883<0>:F : 0.140625:F [336] MAD(16) %162<1>:F : %157<8,8,1>:F %161<8,8,1>:F %883<0,1,0>:F [338] MOV(16) %163<1>:F : (abs)%162<8,8,1>:F [340] MUL(16) %164<1>:UD : %141<8,8,1>:UD 0x4:UW [342] ADD(16) %165<1>:D : %51<0,1,0>:D %164<8,8,1>:D [344] MUL(16) %166<1>:F : %147<8,8,1>:F 1.26953:F [346] MAD(16) %167<1>:F : %166<8,8,1>:F %146<8,8,1>:F %873<0,1,0>:F [348] MAD(16) %168<1>:F : %167<8,8,1>:F %161<8,8,1>:F %878<0,1,0>:F [350] ADD(16) %169<1>:D : %141<8,8,1>:D 3:D [352] MUL(16) %170<1>:UD : %169<8,8,1>:UD 0x4:UW [354] ADD(16) %171<1>:D : %51<0,1,0>:D %170<8,8,1>:D [356] UNTYPED_READ(16) %172<1>:UD : %171<8,8,1>:UD 0xfe:UD [358] MAD(16) %173<1>:F : %168<8,8,1>:F %172<8,8,1>:F %883<0,1,0>:F [360] MOV(16) %174<1>:F : (abs)%173<8,8,1>:F [362] ADD(16) %175<1>:F : -%146<8,8,1>:F -0:F [364] MOV(1) %894<0>:F : 2:F [366] MAD(16) %176<1>:F : %175<8,8,1>:F %147<8,8,1>:F %894<0,1,0>:F [368] ADD(16) %177<1>:F : %176<8,8,1>:F -%156<8,8,1>:F [370] ADD(16) %179<1>:F : -%147<8,8,1>:F -0:F [372] MAD(16) %180<1>:F : %179<8,8,1>:F %156<8,8,1>:F %894<0,1,0>:F [374] ADD(16) %181<1>:F : %180<8,8,1>:F -%161<8,8,1>:F [376] ADD(16) %183<1>:D : %139<8,8,1>:D %137<8,8,1>:D [378] MUL(16) %184<1>:UD : %183<8,8,1>:UD 0x4:UW [380] ADD(16) %185<1>:D : %51<0,1,0>:D %184<8,8,1>:D [382] UNTYPED_READ(16) %186<1>:UD : %185<8,8,1>:UD 0xfe:UD [384] ADD(16) %187<1>:D : %141<8,8,1>:D -36:D [386] MUL(16) %188<1>:UD : %187<8,8,1>:UD 0x4:UW [388] ADD(16) %189<1>:D : %51<0,1,0>:D %188<8,8,1>:D [390] UNTYPED_READ(16) %190<1>:UD : %189<8,8,1>:UD 0xfe:UD [392] MUL(16) %191<1>:F : %190<8,8,1>:F 1.26953:F [394] MAD(16) %192<1>:F : %191<8,8,1>:F %186<8,8,1>:F %873<0,1,0>:F [396] ADD(16) %193<1>:D : %141<8,8,1>:D 36:D [398] MUL(16) %194<1>:UD : %193<8,8,1>:UD 0x4:UW [400] ADD(16) %195<1>:D : %51<0,1,0>:D %194<8,8,1>:D [402] UNTYPED_READ(16) %196<1>:UD %197<1>:UD : %195<8,8,1>:UD 0xfe:UD [404] MAD(16) %198<1>:F : %192<8,8,1>:F %196<8,8,1>:F %878<0,1,0>:F [406] ADD(16) %199<1>:D : %141<8,8,1>:D 72:D [408] MUL(16) %200<1>:UD : %199<8,8,1>:UD 0x4:UW [410] ADD(16) %201<1>:D : %51<0,1,0>:D %200<8,8,1>:D [412] UNTYPED_READ(16) %202<1>:UD : %201<8,8,1>:UD 0xfe:UD [414] MAD(16) %203<1>:F : %198<8,8,1>:F %202<8,8,1>:F %883<0,1,0>:F [416] MOV(16) %204<1>:F : (abs)%203<8,8,1>:F [418] MAD(16) %205<1>:F : %166<8,8,1>:F %190<8,8,1>:F %873<0,1,0>:F [420] MAD(16) %206<1>:F : %205<8,8,1>:F %202<8,8,1>:F %878<0,1,0>:F [422] ADD(16) %207<1>:D : %141<8,8,1>:D 108:D [424] MUL(16) %208<1>:UD : %207<8,8,1>:UD 0x4:UW [426] ADD(16) %209<1>:D : %51<0,1,0>:D %208<8,8,1>:D [428] UNTYPED_READ(16) %210<1>:UD : %209<8,8,1>:UD 0xfe:UD [430] MAD(16) %211<1>:F : %206<8,8,1>:F %210<8,8,1>:F %883<0,1,0>:F [432] MOV(16) %212<1>:F : (abs)%211<8,8,1>:F [434] ADD(16) %213<1>:F : -%190<8,8,1>:F -0:F [436] MAD(16) %214<1>:F : %213<8,8,1>:F %147<8,8,1>:F %894<0,1,0>:F [438] ADD(16) %215<1>:F : %214<8,8,1>:F -%196<8,8,1>:F [440] MAD(16) %217<1>:F : %179<8,8,1>:F %196<8,8,1>:F %894<0,1,0>:F [442] ADD(16) %218<1>:F : %217<8,8,1>:F -%202<8,8,1>:F [444] ADD(16) %220<1>:D : %141<8,8,1>:D 34:D [446] MUL(16) %221<1>:UD : %220<8,8,1>:UD 0x4:UW [448] ADD(16) %222<1>:D : %51<0,1,0>:D %221<8,8,1>:D [450] UNTYPED_READ(16) %223<1>:UD : %222<8,8,1>:UD 0xfe:UD [452] ADD(16) %224<1>:D : %141<8,8,1>:D 35:D [454] MUL(16) %225<1>:UD : %224<8,8,1>:UD 0x4:UW [456] ADD(16) %226<1>:D : %51<0,1,0>:D %225<8,8,1>:D [458] UNTYPED_READ(16) %227<1>:UD : %226<8,8,1>:UD 0xfe:UD [460] MUL(16) %228<1>:F : %227<8,8,1>:F 1.26953:F [462] MAD(16) %229<1>:F : %228<8,8,1>:F %223<8,8,1>:F %873<0,1,0>:F [464] ADD(16) %230<1>:D : %141<8,8,1>:D 37:D [466] MAD(16) %231<1>:F : %229<8,8,1>:F %197<8,8,1>:F %878<0,1,0>:F [468] ADD(16) %232<1>:D : %141<8,8,1>:D 38:D [470] MUL(16) %233<1>:UD : %232<8,8,1>:UD 0x4:UW [472] ADD(16) %234<1>:D : %51<0,1,0>:D %233<8,8,1>:D [474] UNTYPED_READ(16) %235<1>:UD %236<1>:UD : %234<8,8,1>:UD 0xfe:UD [476] MAD(16) %237<1>:F : %231<8,8,1>:F %235<8,8,1>:F %883<0,1,0>:F [478] MOV(16) %238<1>:F : (abs)%237<8,8,1>:F [480] MUL(16) %239<1>:F : %196<8,8,1>:F 1.26953:F [482] MAD(16) %240<1>:F : %239<8,8,1>:F %227<8,8,1>:F %873<0,1,0>:F [484] MAD(16) %241<1>:F : %240<8,8,1>:F %235<8,8,1>:F %878<0,1,0>:F [486] MAD(16) %242<1>:F : %241<8,8,1>:F %236<8,8,1>:F %883<0,1,0>:F [488] MOV(16) %243<1>:F : (abs)%242<8,8,1>:F [490] ADD(16) %244<1>:F : -%227<8,8,1>:F -0:F [492] MAD(16) %245<1>:F : %244<8,8,1>:F %196<8,8,1>:F %894<0,1,0>:F [494] ADD(16) %246<1>:F : %245<8,8,1>:F -%197<8,8,1>:F [496] ADD(16) %248<1>:F : -%196<8,8,1>:F -0:F [498] MAD(16) %249<1>:F : %248<8,8,1>:F %197<8,8,1>:F %894<0,1,0>:F [500] ADD(16) %250<1>:F : %249<8,8,1>:F -%235<8,8,1>:F [502] ADD(16) %252<1>:D : %153<8,8,1>:D -72:D [504] MUL(16) %253<1>:UD : %252<8,8,1>:UD 0x4:UW [506] ADD(16) %254<1>:D : %51<0,1,0>:D %253<8,8,1>:D [508] UNTYPED_READ(16) %255<1>:UD : %254<8,8,1>:UD 0xfe:UD [510] ADD(16) %256<1>:D : %153<8,8,1>:D -36:D [512] MUL(16) %257<1>:UD : %256<8,8,1>:UD 0x4:UW [514] ADD(16) %258<1>:D : %51<0,1,0>:D %257<8,8,1>:D [516] UNTYPED_READ(16) %259<1>:UD : %258<8,8,1>:UD 0xfe:UD [518] MUL(16) %260<1>:F : %259<8,8,1>:F 1.26953:F [520] MAD(16) %261<1>:F : %260<8,8,1>:F %255<8,8,1>:F %873<0,1,0>:F [522] ADD(16) %262<1>:D : %153<8,8,1>:D 36:D [524] MUL(16) %263<1>:UD : %262<8,8,1>:UD 0x4:UW [526] ADD(16) %264<1>:D : %51<0,1,0>:D %263<8,8,1>:D [528] MAD(16) %265<1>:F : %261<8,8,1>:F %197<8,8,1>:F %878<0,1,0>:F [530] ADD(16) %266<1>:D : %153<8,8,1>:D 72:D [532] MUL(16) %267<1>:UD : %266<8,8,1>:UD 0x4:UW [534] ADD(16) %268<1>:D : %51<0,1,0>:D %267<8,8,1>:D [536] UNTYPED_READ(16) %269<1>:UD : %268<8,8,1>:UD 0xfe:UD [538] MAD(16) %270<1>:F : %265<8,8,1>:F %269<8,8,1>:F %883<0,1,0>:F [540] MOV(16) %271<1>:F : (abs)%270<8,8,1>:F [542] MUL(16) %272<1>:F : %156<8,8,1>:F 1.26953:F [544] MAD(16) %273<1>:F : %272<8,8,1>:F %259<8,8,1>:F %873<0,1,0>:F [546] MAD(16) %274<1>:F : %273<8,8,1>:F %269<8,8,1>:F %878<0,1,0>:F [548] ADD(16) %275<1>:D : %153<8,8,1>:D 108:D [550] MUL(16) %276<1>:UD : %275<8,8,1>:UD 0x4:UW [552] ADD(16) %277<1>:D : %51<0,1,0>:D %276<8,8,1>:D [554] UNTYPED_READ(16) %278<1>:UD : %277<8,8,1>:UD 0xfe:UD [556] MAD(16) %279<1>:F : %274<8,8,1>:F %278<8,8,1>:F %883<0,1,0>:F [558] MOV(16) %280<1>:F : (abs)%279<8,8,1>:F [560] ADD(16) %281<1>:F : -%259<8,8,1>:F -0:F [562] MAD(16) %282<1>:F : %281<8,8,1>:F %156<8,8,1>:F %894<0,1,0>:F [564] ADD(16) %283<1>:F : %282<8,8,1>:F -%197<8,8,1>:F [566] ADD(16) %285<1>:F : -%156<8,8,1>:F -0:F [568] MAD(16) %286<1>:F : %285<8,8,1>:F %197<8,8,1>:F %894<0,1,0>:F [570] ADD(16) %287<1>:F : %286<8,8,1>:F -%269<8,8,1>:F [572] ADD(16) %289<1>:F : %163<8,8,1>:F %204<8,8,1>:F [574] CMP.l(16) arf : %289<8,8,1>:F 0.0488311:F [576] ADD(16) %291<1>:F : %163<8,8,1>:F (abs)%177<8,8,1>:F [578](f290) SEL(16) %292<1>:F : %163<8,8,1>:F %291<8,8,1>:F [580] MUL(16) %293<1>:UD : %141<8,8,1>:UD 0x4:UW [582] ADD(16) %294<1>:D : %52<0,1,0>:D %293<8,8,1>:D [584] ADD(16) %295<1>:F : (abs)%215<8,8,1>:F %204<8,8,1>:F [586](f290) SEL(16) %296<1>:F : %204<8,8,1>:F %295<8,8,1>:F [588] MUL(16) %297<1>:UD : %141<8,8,1>:UD 0x4:UW [590] ADD(16) %298<1>:D : %53<0,1,0>:D %297<8,8,1>:D [592] UNTYPED_WRITE(16) : %298<8,8,1>:UD %296<8,8,1>:UD 0xfe:UD [594] ADD(16) %299<1>:F : %174<8,8,1>:F %271<8,8,1>:F [596] CMP.l(16) arf : %299<8,8,1>:F 0.0488311:F [598] ADD(16) %301<1>:F : (abs)%181<8,8,1>:F %174<8,8,1>:F [600](f300) SEL(16) %302<1>:F : %174<8,8,1>:F %301<8,8,1>:F [602] MUL(16) %303<1>:UD : %153<8,8,1>:UD 0x4:UW [604] ADD(16) %304<1>:D : %52<0,1,0>:D %303<8,8,1>:D [606] UNTYPED_WRITE(16) : %294<8,8,1>:UD %292<8,8,1>:UD %302<8,8,1>:UD 0xfe:UD [608] ADD(16) %305<1>:F : (abs)%283<8,8,1>:F %271<8,8,1>:F [610](f300) SEL(16) %306<1>:F : %271<8,8,1>:F %305<8,8,1>:F [612] MUL(16) %307<1>:UD : %153<8,8,1>:UD 0x4:UW [614] ADD(16) %308<1>:D : %53<0,1,0>:D %307<8,8,1>:D [616] UNTYPED_WRITE(16) : %308<8,8,1>:UD %306<8,8,1>:UD 0xfe:UD [618] ADD(16) %309<1>:F : %212<8,8,1>:F %238<8,8,1>:F [620] CMP.l(16) arf : %309<8,8,1>:F 0.0488311:F [622] ADD(16) %311<1>:F : (abs)%246<8,8,1>:F %238<8,8,1>:F [624](f310) SEL(16) %312<1>:F : %238<8,8,1>:F %311<8,8,1>:F [626] MUL(16) %313<1>:UD : %193<8,8,1>:UD 0x4:UW [628] ADD(16) %314<1>:D : %52<0,1,0>:D %313<8,8,1>:D [630] ADD(16) %315<1>:F : (abs)%218<8,8,1>:F %212<8,8,1>:F [632](f310) SEL(16) %316<1>:F : %212<8,8,1>:F %315<8,8,1>:F [634] MUL(16) %317<1>:UD : %193<8,8,1>:UD 0x4:UW [636] ADD(16) %318<1>:D : %53<0,1,0>:D %317<8,8,1>:D [638] UNTYPED_WRITE(16) : %318<8,8,1>:UD %316<8,8,1>:UD 0xfe:UD [640] ADD(16) %319<1>:F : %243<8,8,1>:F %280<8,8,1>:F [642] CMP.l(16) arf : %319<8,8,1>:F 0.0488311:F [644] ADD(16) %321<1>:F : (abs)%250<8,8,1>:F %243<8,8,1>:F [646](f320) SEL(16) %322<1>:F : %243<8,8,1>:F %321<8,8,1>:F [648] UNTYPED_WRITE(16) : %314<8,8,1>:UD %312<8,8,1>:UD %322<8,8,1>:UD 0xfe:UD [650] ADD(16) %323<1>:F : (abs)%287<8,8,1>:F %280<8,8,1>:F [652](f320) SEL(16) %324<1>:F : %280<8,8,1>:F %323<8,8,1>:F [654] MUL(16) %325<1>:UD : %230<8,8,1>:UD 0x4:UW [656] ADD(16) %326<1>:D : %53<0,1,0>:D %325<8,8,1>:D [658] UNTYPED_WRITE(16) : %326<8,8,1>:UD %324<8,8,1>:UD 0xfe:UD [660] BARRIER(16) %1388<1>:F : %1387<8,8,1>:UD [662] MUL(16) %327<1>:UD : %148<8,8,1>:UD 0x4:UW [664] ADD(16) %328<1>:D : %52<0,1,0>:D %327<8,8,1>:D [666] UNTYPED_READ(16) %329<1>:UD %330<1>:UD %331<1>:UD %332<1>:UD : %328<8,8,1>:UD 0xfe:UD [668] ADD(16) %333<1>:F : %329<8,8,1>:F %330<8,8,1>:F [670] ADD(16) %334<1>:F : %333<8,8,1>:F %331<8,8,1>:F [672] ADD(16) %335<1>:F : %330<8,8,1>:F %331<8,8,1>:F [674] ADD(16) %336<1>:F : %335<8,8,1>:F %332<8,8,1>:F [676] MUL(16) %337<1>:UD : %224<8,8,1>:UD 0x4:UW [678] ADD(16) %338<1>:D : %52<0,1,0>:D %337<8,8,1>:D [680] UNTYPED_READ(16) %339<1>:UD %340<1>:UD %341<1>:UD %342<1>:UD : %338<8,8,1>:UD 0xfe:UD [682] ADD(16) %343<1>:F : %339<8,8,1>:F %340<8,8,1>:F [684] MUL(16) %344<1>:UD : %262<8,8,1>:UD 0x4:UW [686] ADD(16) %345<1>:D : %52<0,1,0>:D %344<8,8,1>:D [688] ADD(16) %346<1>:F : %343<8,8,1>:F %341<8,8,1>:F [690] ADD(16) %347<1>:F : %340<8,8,1>:F %341<8,8,1>:F [692] ADD(16) %348<1>:F : %347<8,8,1>:F %342<8,8,1>:F [694] MUL(16) %349<1>:UD : %187<8,8,1>:UD 0x4:UW [696] ADD(16) %350<1>:D : %53<0,1,0>:D %349<8,8,1>:D [698] UNTYPED_READ(16) %351<1>:UD %352<1>:UD : %350<8,8,1>:UD 0xfe:UD [700] UNTYPED_READ(16) %353<1>:UD : %298<8,8,1>:UD 0xfe:UD [702] ADD(16) %354<1>:F : %351<8,8,1>:F %353<8,8,1>:F [704] UNTYPED_READ(16) %355<1>:UD : %318<8,8,1>:UD 0xfe:UD [706] ADD(16) %356<1>:F : %354<8,8,1>:F %355<8,8,1>:F [708] ADD(16) %357<1>:F : %353<8,8,1>:F %355<8,8,1>:F [710] MUL(16) %358<1>:UD : %199<8,8,1>:UD 0x4:UW [712] ADD(16) %359<1>:D : %53<0,1,0>:D %358<8,8,1>:D [714] UNTYPED_READ(16) %360<1>:UD : %359<8,8,1>:UD 0xfe:UD [716] ADD(16) %361<1>:F : %357<8,8,1>:F %360<8,8,1>:F [718] UNTYPED_READ(16) %362<1>:UD : %308<8,8,1>:UD 0xfe:UD [720] ADD(16) %363<1>:F : %352<8,8,1>:F %362<8,8,1>:F [722] UNTYPED_READ(16) %364<1>:UD : %326<8,8,1>:UD 0xfe:UD [724] ADD(16) %365<1>:F : %363<8,8,1>:F %364<8,8,1>:F [726] ADD(16) %366<1>:F : %362<8,8,1>:F %364<8,8,1>:F [728] ADD(16) %367<1>:D : %141<8,8,1>:D 73:D [730] MUL(16) %368<1>:UD : %367<8,8,1>:UD 0x4:UW [732] ADD(16) %369<1>:D : %53<0,1,0>:D %368<8,8,1>:D [734] UNTYPED_READ(16) %370<1>:UD : %369<8,8,1>:UD 0xfe:UD [736] ADD(16) %371<1>:F : %366<8,8,1>:F %370<8,8,1>:F [738] BARRIER(16) %1386<1>:F : %1385<8,8,1>:UD [740] UNTYPED_WRITE(16) : %294<8,8,1>:UD %334<8,8,1>:UD %336<8,8,1>:UD 0xfe:UD [742] UNTYPED_WRITE(16) : %314<8,8,1>:UD %346<8,8,1>:UD %348<8,8,1>:UD 0xfe:UD [744] UNTYPED_WRITE(16) : %298<8,8,1>:UD %356<8,8,1>:UD %365<8,8,1>:UD 0xfe:UD [746] UNTYPED_WRITE(16) : %318<8,8,1>:UD %361<8,8,1>:UD %371<8,8,1>:UD 0xfe:UD [748] BARRIER(16) %1384<1>:F : %1383<8,8,1>:UD [750] MUL(16) %372<1>:UD : %256<8,8,1>:UD 0x4:UW [752] ADD(16) %373<1>:D : %52<0,1,0>:D %372<8,8,1>:D [754] UNTYPED_READ(16) %374<1>:UD : %373<8,8,1>:UD 0xfe:UD [756] UNTYPED_READ(16) %375<1>:UD : %304<8,8,1>:UD 0xfe:UD [758] ADD(16) %376<1>:F : %374<8,8,1>:F %375<8,8,1>:F [760] UNTYPED_READ(16) %377<1>:UD : %345<8,8,1>:UD 0xfe:UD [762] ADD(16) %378<1>:F : %376<8,8,1>:F %377<8,8,1>:F [764] UNTYPED_READ(16) %379<1>:UD : %294<8,8,1>:UD 0xfe:UD [766] UNTYPED_READ(16) %380<1>:UD : %314<8,8,1>:UD 0xfe:UD [768] ADD(16) %381<1>:F : %379<8,8,1>:F %380<8,8,1>:F [770] MUL(16) %382<1>:UD : %199<8,8,1>:UD 0x4:UW [772] ADD(16) %383<1>:D : %52<0,1,0>:D %382<8,8,1>:D [774] UNTYPED_READ(16) %384<1>:UD : %383<8,8,1>:UD 0xfe:UD [776] ADD(16) %385<1>:F : %381<8,8,1>:F %384<8,8,1>:F [778] UNTYPED_READ(16) %386<1>:UD %387<1>:UD %388<1>:UD : %298<8,8,1>:UD 0xfe:UD [780] ADD(16) %389<1>:F : %386<8,8,1>:F %387<8,8,1>:F [782] ADD(16) %390<1>:F : %389<8,8,1>:F %388<8,8,1>:F [784] MUL(16) %391<1>:UD : %224<8,8,1>:UD 0x4:UW [786] ADD(16) %392<1>:D : %53<0,1,0>:D %391<8,8,1>:D [788] UNTYPED_READ(16) %393<1>:UD %394<1>:UD : %392<8,8,1>:UD 0xfe:UD [790] ADD(16) %395<1>:F : %393<8,8,1>:F %394<8,8,1>:F [792] MUL(16) %396<1>:UD : %232<8,8,1>:UD 0x4:UW [794] ADD(16) %397<1>:D : %53<0,1,0>:D %396<8,8,1>:D [796] UNTYPED_READ(16) %398<1>:UD : %397<8,8,1>:UD 0xfe:UD [798] ADD(16) %399<1>:F : %395<8,8,1>:F %398<8,8,1>:F [800] UNTYPED_READ(16) %400<1>:UD : %165<8,8,1>:UD 0xfe:UD [802] UNTYPED_READ(16) %401<1>:UD : %160<8,8,1>:UD 0xfe:UD [804] ADD(16) %402<1>:F : %400<8,8,1>:F %401<8,8,1>:F [806] UNTYPED_READ(16) %403<1>:UD : %258<8,8,1>:UD 0xfe:UD [808] UNTYPED_READ(16) %404<1>:UD : %264<8,8,1>:UD 0xfe:UD [810] ADD(16) %405<1>:F : %403<8,8,1>:F %404<8,8,1>:F [812] ADD(16) %406<1>:F : %378<8,8,1>:F -%390<8,8,1>:F [814] CMP.l(16) arf : (abs)%406<8,8,1>:F %45<0,1,0>:F [816](f408) MOV(16) %23<1>:UW : 0xd:UW [818] L10: [820] CMP.le(16) arf : %23<8,8,1>:UW 0xa:UW [822](f0.1) JMPI(1) : 0:D [824](f0.1) IF(16) : 0:D [826] CMP.g(16) arf : %378<8,8,1>:F %390<8,8,1>:F [828] MUL(16) %410<1>:UD : %141<8,8,1>:UD 0x4:UW [830] ADD(16) %411<1>:D : %54<0,1,0>:D %410<8,8,1>:D [832] UNTYPED_WRITE(16) : %411<8,8,1>:UD %400<8,8,1>:UD 0xfe:UD [834](f409) IF(16) : 0:D [836] L11: [838] MUL(16) %412<1>:F : %402<8,8,1>:F 0.5:F [840] MUL(16) %413<1>:UD : %153<8,8,1>:UD 0x4:UW [842] ADD(16) %414<1>:D : %54<0,1,0>:D %413<8,8,1>:D [844] UNTYPED_WRITE(16) : %414<8,8,1>:UD %412<8,8,1>:UD 0xfe:UD [846] L12: [848] ELSE(16) : 0:D [850] L74: [852] MUL(16) %415<1>:F : %405<8,8,1>:F 0.5:F [854] MUL(16) %416<1>:UD : %153<8,8,1>:UD 0x4:UW [856] ADD(16) %417<1>:D : %54<0,1,0>:D %416<8,8,1>:D [858] UNTYPED_WRITE(16) : %417<8,8,1>:UD %415<8,8,1>:UD 0xfe:UD [860] L73: [862] ENDIF(16) : 0:D [864] MOV(16) %23<1>:UW : 0xe:UW [866] L72: [868] ENDIF(16) : 0:D [870] L13: [872] CMP.le(16) arf : %23<8,8,1>:UW 0xd:UW [874](f0.1) IF(16) : 0:D [876] MUL(16) %418<1>:UD : %141<8,8,1>:UD 0x4:UW [878] ADD(16) %419<1>:D : %54<0,1,0>:D %418<8,8,1>:D [880] ADD(16) %420<1>:F : %402<8,8,1>:F %405<8,8,1>:F [882] MUL(16) %421<1>:F : %420<8,8,1>:F 0.25:F [884] UNTYPED_WRITE(16) : %419<8,8,1>:UD %400<8,8,1>:UD %421<8,8,1>:UD 0xfe:UD [886] L114: [888] ENDIF(16) : 0:D [890] L14: [892] CMP.le(16) arf : %23<8,8,1>:UW 0xe:UW [894](f0.1) IF(16) : 0:D [896] UNTYPED_READ(16) %422<1>:UD : %226<8,8,1>:UD 0xfe:UD [898] ADD(16) %423<1>:F : %422<8,8,1>:F %404<8,8,1>:F [900] UNTYPED_READ(16) %424<1>:UD : %201<8,8,1>:UD 0xfe:UD [902] ADD(16) %425<1>:F : %400<8,8,1>:F %424<8,8,1>:F [904] ADD(16) %426<1>:F : %385<8,8,1>:F -%399<8,8,1>:F [906] CMP.l(16) arf : (abs)%426<8,8,1>:F %45<0,1,0>:F [908](f428) IF(16) : 0:D [910] L15: [912] CMP.g(16) arf : %385<8,8,1>:F %399<8,8,1>:F [914](f429) IF(16) : 0:D [916] L16: [918] MUL(16) %430<1>:F : %423<8,8,1>:F 0.5:F [920] MUL(16) %431<1>:UD : %193<8,8,1>:UD 0x4:UW [922] ADD(16) %432<1>:D : %54<0,1,0>:D %431<8,8,1>:D [924] UNTYPED_WRITE(16) : %432<8,8,1>:UD %430<8,8,1>:UD %404<8,8,1>:UD 0xfe:UD [926] MOV(16) %441<1>:F : %432<8,8,1>:F [928] L17: [930] ELSE(16) : 0:D [932] L76: [934] MUL(16) %433<1>:F : %425<8,8,1>:F 0.5:F [936] MUL(16) %434<1>:UD : %193<8,8,1>:UD 0x4:UW [938] ADD(16) %435<1>:D : %54<0,1,0>:D %434<8,8,1>:D [940] UNTYPED_WRITE(16) : %435<8,8,1>:UD %433<8,8,1>:UD %404<8,8,1>:UD 0xfe:UD [942] MOV(16) %441<1>:F : %435<8,8,1>:F [944] L75: [946] ENDIF(16) : 0:D [948] L18: [950] ELSE(16) : 0:D [952] L98: [954] ADD(16) %436<1>:F : %423<8,8,1>:F %425<8,8,1>:F [956] MUL(16) %437<1>:F : %436<8,8,1>:F 0.25:F [958] MUL(16) %438<1>:UD : %193<8,8,1>:UD 0x4:UW [960] ADD(16) %441<1>:D : %54<0,1,0>:D %438<8,8,1>:D [962] UNTYPED_WRITE(16) : %441<8,8,1>:UD %437<8,8,1>:UD %404<8,8,1>:UD 0xfe:UD [964] L97: [966] ENDIF(16) : 0:D [968] L70: [970] ENDIF(16) : 0:D [972] L19: [974] CMP.le(16) arf : %23<8,8,1>:UW 0x13:UW [976](f0.1) MOV(16) %23<1>:UW : 0xffff:UW [978] CMP.eq(16) arf : %23<8,8,1>:UW 0xffff:UW [980](f0.1) JMPI(1) : 0:D [982](f0.1) MOV(16) %23<1>:UW : 0x13:UW [984] BARRIER(16) %1392<1>:F : %1391<8,8,1>:UD [986] MUL(16) %442<1>:UD : %141<8,8,1>:UD 0x4:UW [988] ADD(16) %443<1>:D : %54<0,1,0>:D %442<8,8,1>:D [990] UNTYPED_READ(16) %444<1>:UD %445<1>:UD : %443<8,8,1>:UD 0xfe:UD [992] MUL(16) %446<1>:UD : %187<8,8,1>:UD 0x4:UW [994] ADD(16) %447<1>:D : %54<0,1,0>:D %446<8,8,1>:D [996] UNTYPED_READ(16) %448<1>:UD : %447<8,8,1>:UD 0xfe:UD [998] ADD(16) %449<1>:F : -%448<8,8,1>:F -0:F [1000] MOV(1) %1113<0>:F : 2:F [1002] MAD(16) %450<1>:F : %449<8,8,1>:F %444<8,8,1>:F %1113<0,1,0>:F [1004] UNTYPED_READ(16) %451<1>:UD : %441<8,8,1>:UD 0xfe:UD [1006] ADD(16) %452<1>:F : %450<8,8,1>:F -%451<8,8,1>:F [1008] UNTYPED_READ(16) %453<1>:UD : %189<8,8,1>:UD 0xfe:UD [1010] UNTYPED_READ(16) %454<1>:UD : %195<8,8,1>:UD 0xfe:UD [1012] ADD(16) %455<1>:F : %453<8,8,1>:F %454<8,8,1>:F [1014] ADD(16) %456<1>:F : %452<8,8,1>:F %455<8,8,1>:F [1016] MUL(16) %457<1>:UD : %262<8,8,1>:UD 0x4:UW [1018] ADD(16) %458<1>:D : %54<0,1,0>:D %457<8,8,1>:D [1020] UNTYPED_READ(16) %459<1>:UD : %458<8,8,1>:UD 0xfe:UD [1022] ADD(16) %460<1>:F : -%445<8,8,1>:F -0:F [1024] MAD(16) %461<1>:F : %460<8,8,1>:F %459<8,8,1>:F %1113<0,1,0>:F [1026] MUL(16) %462<1>:UD : %266<8,8,1>:UD 0x4:UW [1028] ADD(16) %463<1>:D : %54<0,1,0>:D %462<8,8,1>:D [1030] UNTYPED_READ(16) %464<1>:UD : %463<8,8,1>:UD 0xfe:UD [1032] ADD(16) %465<1>:F : %461<8,8,1>:F -%464<8,8,1>:F [1034] UNTYPED_READ(16) %466<1>:UD : %155<8,8,1>:UD 0xfe:UD [1036] UNTYPED_READ(16) %467<1>:UD : %268<8,8,1>:UD 0xfe:UD [1038] ADD(16) %468<1>:F : %466<8,8,1>:F %467<8,8,1>:F [1040] ADD(16) %469<1>:F : %465<8,8,1>:F %468<8,8,1>:F [1042] MUL(16) %470<1>:F : %456<8,8,1>:F 0.5:F [1044] MUL(16) %471<1>:F : %469<8,8,1>:F 0.5:F [1046] SEL_CMP(16) %472<1>:F : %470<8,8,1>:F 0:F [1048] SEL_CMP(16) %473<1>:F : %471<8,8,1>:F 0:F [1050] ADD(16) %474<1>:D : %141<8,8,1>:D -34:D [1052] MUL(16) %475<1>:UD : %474<8,8,1>:UD 0x4:UW [1054] ADD(16) %476<1>:D : %51<0,1,0>:D %475<8,8,1>:D [1056] UNTYPED_READ(16) %477<1>:UD : %476<8,8,1>:UD 0xfe:UD [1058] ADD(16) %478<1>:F : %453<8,8,1>:F %477<8,8,1>:F [1060] ADD(16) %479<1>:F : %454<8,8,1>:F %478<8,8,1>:F [1062] UNTYPED_READ(16) %480<1>:UD : %234<8,8,1>:UD 0xfe:UD [1064] ADD(16) %481<1>:F : %480<8,8,1>:F %479<8,8,1>:F [1066] UNTYPED_READ(16) %482<1>:UD : %150<8,8,1>:UD 0xfe:UD [1068] ADD(16) %483<1>:F : %466<8,8,1>:F %482<8,8,1>:F [1070] ADD(16) %484<1>:D : %141<8,8,1>:D 71:D [1072] MUL(16) %485<1>:UD : %484<8,8,1>:UD 0x4:UW [1074] ADD(16) %486<1>:D : %51<0,1,0>:D %485<8,8,1>:D [1076] UNTYPED_READ(16) %487<1>:UD : %486<8,8,1>:UD 0xfe:UD [1078] ADD(16) %488<1>:F : %483<8,8,1>:F %487<8,8,1>:F [1080] ADD(16) %489<1>:F : %488<8,8,1>:F %467<8,8,1>:F [1082] MUL(16) %490<1>:F : %481<8,8,1>:F 0.25:F [1084] MUL(16) %491<1>:F : %489<8,8,1>:F 0.25:F [1086] ADD(16) %492<1>:F : -%444<8,8,1>:F -0:F [1088] MAD(16) %493<1>:F : %492<8,8,1>:F %1113<0,1,0>:F %445<8,8,1>:F [1090] MUL(16) %494<1>:UD : %158<8,8,1>:UD 0x4:UW [1092] ADD(16) %495<1>:D : %54<0,1,0>:D %494<8,8,1>:D [1094] UNTYPED_READ(16) %496<1>:UD : %495<8,8,1>:UD 0xfe:UD [1096] ADD(16) %497<1>:F : %493<8,8,1>:F -%496<8,8,1>:F [1098] MUL(16) %498<1>:UD : %224<8,8,1>:UD 0x4:UW [1100] ADD(16) %499<1>:D : %54<0,1,0>:D %498<8,8,1>:D [1102] UNTYPED_READ(16) %500<1>:UD : %499<8,8,1>:UD 0xfe:UD [1104] ADD(16) %501<1>:F : -%500<8,8,1>:F -0:F [1106] MAD(16) %502<1>:F : %501<8,8,1>:F %1113<0,1,0>:F %451<8,8,1>:F [1108] ADD(16) %503<1>:F : %502<8,8,1>:F -%459<8,8,1>:F [1110] MUL(16) %504<1>:UD : %256<8,8,1>:UD 0x4:UW [1112] ADD(16) %505<1>:D : %54<0,1,0>:D %504<8,8,1>:D [1114] UNTYPED_READ(16) %506<1>:UD : %505<8,8,1>:UD 0xfe:UD [1116] ADD(16) %507<1>:F : -%506<8,8,1>:F -0:F [1118] MAD(16) %508<1>:F : %507<8,8,1>:F %1113<0,1,0>:F %445<8,8,1>:F [1120] ADD(16) %509<1>:F : %508<8,8,1>:F -%459<8,8,1>:F [1122] MAD(16) %510<1>:F : %492<8,8,1>:F %1113<0,1,0>:F %451<8,8,1>:F [1124] MUL(16) %511<1>:UD : %199<8,8,1>:UD 0x4:UW [1126] ADD(16) %512<1>:D : %54<0,1,0>:D %511<8,8,1>:D [1128] UNTYPED_READ(16) %513<1>:UD : %512<8,8,1>:UD 0xfe:UD [1130] ADD(16) %514<1>:F : %510<8,8,1>:F -%513<8,8,1>:F [1132] UNTYPED_READ(16) %515<1>:UD : %373<8,8,1>:UD 0xfe:UD [1134] UNTYPED_READ(16) %516<1>:UD : %304<8,8,1>:UD 0xfe:UD [1136] ADD(16) %517<1>:F : %515<8,8,1>:F %516<8,8,1>:F [1138] UNTYPED_READ(16) %518<1>:UD : %345<8,8,1>:UD 0xfe:UD [1140] ADD(16) %519<1>:F : %517<8,8,1>:F %518<8,8,1>:F [1142] UNTYPED_READ(16) %520<1>:UD %521<1>:UD %522<1>:UD : %298<8,8,1>:UD 0xfe:UD [1144] ADD(16) %523<1>:F : %520<8,8,1>:F %521<8,8,1>:F [1146] ADD(16) %524<1>:F : %523<8,8,1>:F %522<8,8,1>:F [1148] ADD(16) %525<1>:F : %519<8,8,1>:F -%524<8,8,1>:F [1150] CMP.l(16) arf : (abs)%525<8,8,1>:F %45<0,1,0>:F [1152](f527) MOV(16) %23<1>:UW : 0x17:UW [1154] L20: [1156] CMP.le(16) arf : %23<8,8,1>:UW 0x14:UW [1158](f0.1) JMPI(1) : 0:D [1160](f0.1) IF(16) : 0:D [1162] CMP.g(16) arf : %519<8,8,1>:F %524<8,8,1>:F [1164](f528) IF(16) : 0:D [1166] L21: [1168] MUL(16) %529<1>:F : %509<8,8,1>:F 0.5:F [1170] ADD(16) %530<1>:F : %490<8,8,1>:F %529<8,8,1>:F [1172] MOV(16) %537<1>:F : %530<8,8,1>:F [1174] L22: [1176] ELSE(16) : 0:D [1178] L78: [1180] MUL(16) %531<1>:F : %497<8,8,1>:F 0.5:F [1182] ADD(16) %532<1>:F : %531<8,8,1>:F %490<8,8,1>:F [1184] MOV(16) %537<1>:F : %532<8,8,1>:F [1186] L77: [1188] ENDIF(16) : 0:D [1190] MOV(16) %23<1>:UW : 0x18:UW [1192] L71: [1194] ENDIF(16) : 0:D [1196] L23: [1198] CMP.le(16) arf : %23<8,8,1>:UW 0x17:UW [1200](f0.1) IF(16) : 0:D [1202] ADD(16) %533<1>:F : %497<8,8,1>:F %509<8,8,1>:F [1204] MUL(16) %534<1>:F : %533<8,8,1>:F 0.25:F [1206] ADD(16) %537<1>:F : %490<8,8,1>:F %534<8,8,1>:F [1208] L115: [1210] ENDIF(16) : 0:D [1212] L24: [1214] CMP.le(16) arf : %23<8,8,1>:UW 0x18:UW [1216](f0.1) IF(16) : 0:D [1218] UNTYPED_READ(16) %538<1>:UD : %294<8,8,1>:UD 0xfe:UD [1220] UNTYPED_READ(16) %539<1>:UD : %314<8,8,1>:UD 0xfe:UD [1222] ADD(16) %540<1>:F : %538<8,8,1>:F %539<8,8,1>:F [1224] UNTYPED_READ(16) %541<1>:UD : %383<8,8,1>:UD 0xfe:UD [1226] ADD(16) %542<1>:F : %540<8,8,1>:F %541<8,8,1>:F [1228] UNTYPED_READ(16) %543<1>:UD %544<1>:UD : %392<8,8,1>:UD 0xfe:UD [1230] ADD(16) %545<1>:F : %543<8,8,1>:F %544<8,8,1>:F [1232] UNTYPED_READ(16) %546<1>:UD : %397<8,8,1>:UD 0xfe:UD [1234] ADD(16) %547<1>:F : %545<8,8,1>:F %546<8,8,1>:F [1236] ADD(16) %548<1>:F : %542<8,8,1>:F -%547<8,8,1>:F [1238] CMP.l(16) arf : (abs)%548<8,8,1>:F %45<0,1,0>:F [1240](f550) IF(16) : 0:D [1242] L25: [1244] CMP.g(16) arf : %542<8,8,1>:F %547<8,8,1>:F [1246](f551) IF(16) : 0:D [1248] L26: [1250] MUL(16) %552<1>:F : %514<8,8,1>:F 0.5:F [1252] MOV(16) %557<1>:F : %552<8,8,1>:F [1254] L27: [1256] ELSE(16) : 0:D [1258] L80: [1260] MUL(16) %553<1>:F : %503<8,8,1>:F 0.5:F [1262] MOV(16) %557<1>:F : %553<8,8,1>:F [1264] L79: [1266] ENDIF(16) : 0:D [1268] L28: [1270] ELSE(16) : 0:D [1272] L100: [1274] ADD(16) %554<1>:F : %503<8,8,1>:F %514<8,8,1>:F [1276] MUL(16) %557<1>:F : %554<8,8,1>:F 0.25:F [1278] L99: [1280] ENDIF(16) : 0:D [1282] L69: [1284] ENDIF(16) : 0:D [1286] L29: [1288] CMP.le(16) arf : %23<8,8,1>:UW 0x1d:UW [1290](f0.1) MOV(16) %23<1>:UW : 0xffff:UW [1292] CMP.eq(16) arf : %23<8,8,1>:UW 0xffff:UW [1294](f0.1) JMPI(1) : 0:D [1296](f0.1) MOV(16) %23<1>:UW : 0x1d:UW [1298] ADD(16) %558<1>:F : %557<8,8,1>:F %491<8,8,1>:F [1300] SEL_CMP(16) %559<1>:F : %537<8,8,1>:F 0:F [1302] SEL_CMP(16) %560<1>:F : %558<8,8,1>:F 0:F [1304] ADD(16) %561<1>:F : -%451<8,8,1>:F -0:F [1306] MOV(1) %1204<0>:F : 2:F [1308] MAD(16) %562<1>:F : %561<8,8,1>:F %459<8,8,1>:F %1204<0,1,0>:F [1310] MUL(16) %563<1>:UD : %232<8,8,1>:UD 0x4:UW [1312] ADD(16) %564<1>:D : %54<0,1,0>:D %563<8,8,1>:D [1314] UNTYPED_READ(16) %565<1>:UD : %564<8,8,1>:UD 0xfe:UD [1316] ADD(16) %566<1>:F : %562<8,8,1>:F -%565<8,8,1>:F [1318] ADD(16) %567<1>:F : %454<8,8,1>:F %480<8,8,1>:F [1320] ADD(16) %568<1>:F : %566<8,8,1>:F %567<8,8,1>:F [1322] MUL(16) %569<1>:UD : %148<8,8,1>:UD 0x4:UW [1324] ADD(16) %570<1>:D : %54<0,1,0>:D %569<8,8,1>:D [1326] UNTYPED_READ(16) %571<1>:UD : %570<8,8,1>:UD 0xfe:UD [1328] ADD(16) %572<1>:F : -%571<8,8,1>:F -0:F [1330] MAD(16) %573<1>:F : %572<8,8,1>:F %444<8,8,1>:F %1204<0,1,0>:F [1332] ADD(16) %574<1>:F : %573<8,8,1>:F -%445<8,8,1>:F [1334] ADD(16) %575<1>:F : %574<8,8,1>:F %483<8,8,1>:F [1336] MUL(16) %576<1>:F : %568<8,8,1>:F 0.5:F [1338] MUL(16) %577<1>:F : %575<8,8,1>:F 0.5:F [1340] SEL_CMP(16) %578<1>:F : %576<8,8,1>:F 0:F [1342] SEL_CMP(16) %579<1>:F : %577<8,8,1>:F 0:F [1344] BARRIER(16) %1396<1>:F : %1395<8,8,1>:UD [1346] UNTYPED_WRITE(16) : %294<8,8,1>:UD %579<8,8,1>:UD 0xfe:UD [1348] UNTYPED_READ(16) %580<1>:UD : %155<8,8,1>:UD 0xfe:UD [1350] UNTYPED_WRITE(16) : %304<8,8,1>:UD %580<8,8,1>:UD 0xfe:UD [1352] UNTYPED_WRITE(16) : %314<8,8,1>:UD %560<8,8,1>:UD %473<8,8,1>:UD 0xfe:UD [1354] UNTYPED_WRITE(16) : %298<8,8,1>:UD %472<8,8,1>:UD %559<8,8,1>:UD 0xfe:UD [1356] UNTYPED_READ(16) %581<1>:UD : %195<8,8,1>:UD 0xfe:UD [1358] UNTYPED_WRITE(16) : %318<8,8,1>:UD %581<8,8,1>:UD %578<8,8,1>:UD 0xfe:UD [1360] BARRIER(16) %1394<1>:F : %1393<8,8,1>:UD [1362] ADD(1) %582<0>:D : %61<0,1,0>:D 26:D [1364] SEL_CMP(1) %584<0>:D : %582<0,1,0>:D %47<0,1,0>:D [1366] ADD(1) %585<0>:D : %64<0,1,0>:D 26:D [1368] SEL_CMP(1) %587<0>:D : %585<0,1,0>:D %47<0,1,0>:D [1370] ADD(16) %588<1>:D : %136<8,8,1>:D -3:D [1372] ADD(16) %589<1>:D : %588<8,8,1>:D %61<0,1,0>:D [1374] ADD(16) %590<1>:D : %138<8,8,1>:D -3:D [1376] ADD(16) %591<1>:D : %590<8,8,1>:D %64<0,1,0>:D [1378] CMP.eq(16) arf : %50<0,1,0>:D 0:D [1380](f592) MOV(16) %23<1>:UW : 0x2e:UW [1382] L30: [1384] CMP.le(16) arf : %23<8,8,1>:UW 0x1e:UW [1386](f0.1) JMPI(1) : 0:D [1388](f0.1) IF(16) : 0:D [1390] SHL(1) %593<0>:D : %48<0,1,0>:D 1:D [1392] CMP.ge(16) arf : %589<8,8,1>:D %61<0,1,0>:D [1394] CMP.l(16) arf : %589<8,8,1>:D %584<0,1,0>:D [1396] AND(16) %596<1>:W : %594<8,8,1>:W %595<8,8,1>:W [1398](f596) IF(16) : 0:D [1400] L31: [1402] L32: [1404] ELSE(16) : 0:D [1406] L103: [1408] CMP.ge(16) arf : %591<8,8,1>:D %64<0,1,0>:D [1410] CMP.l(16) arf : %591<8,8,1>:D %587<0,1,0>:D [1412] AND(16) %599<1>:W : %597<8,8,1>:W %598<8,8,1>:W [1414](f599) IF(16) : 0:D [1416] L33: [1418] L34: [1420] ELSE(16) : 0:D [1422] L82: [1424] UNTYPED_READ(16) %600<1>:UD : %294<8,8,1>:UD 0xfe:UD [1426] MUL(16) %601<1>:F : %600<8,8,1>:F 16383:F [1428] MOV(16) %1403<2>:UW : %601<8,8,1>:F [1430] MOV(16) %602<1>:UW : %1403<16,8,2>:UW [1432] MUL(8) arf : %591<8,8,1>:D %47<0,1,0>:D [1434] MACH(8) arf : %591<8,8,1>:D %47<0,1,0>:D [1436] MOV(8) %603<1>:F : arf [1438] MUL(8) arf : %591<8,8,1>:D %47<0,1,0>:D [1440] MACH(8) arf : %591<8,8,1>:D %47<0,1,0>:D [1442] MOV(8) %1402<1>:F : arf [1444] MOV(8) %603<1>:F : %1402<8,8,1>:F [1446] ADD(16) %604<1>:D : %603<8,8,1>:D %589<8,8,1>:D [1448] MUL(16) %605<1>:UD : %604<8,8,1>:UD 0x2:UW [1450] ADD(16) %606<1>:D : %41<0,1,0>:D %605<8,8,1>:D [1452] ADD(16) %1243<1>:UD : %606<8,8,1>:UD -%41<0,1,0>:UD [1454] MOV(16) %1401<1>:UD : %602<8,8,1>:UW [1456] BYTE_SCATTER(16) : %1243<8,8,1>:UD %1401<8,8,1>:UD 0x2:UD [1458] UNTYPED_READ(16) %607<1>:UD : %443<8,8,1>:UD 0xfe:UD [1460] MUL(16) %608<1>:F : %607<8,8,1>:F 16383:F [1462] MOV(16) %1400<2>:UW : %608<8,8,1>:F [1464] MOV(16) %609<1>:UW : %1400<16,8,2>:UW [1466] ADD(16) %610<1>:D : %604<8,8,1>:D %48<0,1,0>:D [1468] MUL(16) %611<1>:UD : %610<8,8,1>:UD 0x2:UW [1470] ADD(16) %612<1>:D : %41<0,1,0>:D %611<8,8,1>:D [1472] ADD(16) %1248<1>:UD : %612<8,8,1>:UD -%41<0,1,0>:UD [1474] MOV(16) %1399<1>:UD : %609<8,8,1>:UW [1476] BYTE_SCATTER(16) : %1248<8,8,1>:UD %1399<8,8,1>:UD 0x2:UD [1478] UNTYPED_READ(16) %613<1>:UD : %298<8,8,1>:UD 0xfe:UD [1480] MUL(16) %614<1>:F : %613<8,8,1>:F 16383:F [1482] MOV(16) %1398<2>:UW : %614<8,8,1>:F [1484] MOV(16) %615<1>:UW : %1398<16,8,2>:UW [1486] ADD(16) %616<1>:D : %604<8,8,1>:D %593<0,1,0>:D [1488] MUL(16) %617<1>:UD : %616<8,8,1>:UD 0x2:UW [1490] ADD(16) %618<1>:D : %41<0,1,0>:D %617<8,8,1>:D [1492] ADD(16) %1253<1>:UD : %618<8,8,1>:UD -%41<0,1,0>:UD [1494] MOV(16) %1397<1>:UD : %615<8,8,1>:UW [1496] BYTE_SCATTER(16) : %1253<8,8,1>:UD %1397<8,8,1>:UD 0x2:UD [1498] L81: [1500] ENDIF(16) : 0:D [1502] L35: [1504] ADD(16) %619<1>:D : %591<8,8,1>:D 1:D [1506] CMP.ge(16) arf : %619<8,8,1>:D %64<0,1,0>:D [1508] CMP.l(16) arf : %619<8,8,1>:D %587<0,1,0>:D [1510] AND(16) %622<1>:W : %620<8,8,1>:W %621<8,8,1>:W [1512](f622) IF(16) : 0:D [1514] L36: [1516] L37: [1518] ELSE(16) : 0:D [1520] L84: [1522] ADD(16) %623<1>:D : %139<8,8,1>:D 108:D [1524] ADD(16) %624<1>:D : %137<8,8,1>:D %623<8,8,1>:D [1526] MUL(16) %625<1>:UD : %624<8,8,1>:UD 0x4:UW [1528] ADD(16) %626<1>:D : %52<0,1,0>:D %625<8,8,1>:D [1530] UNTYPED_READ(16) %627<1>:UD : %626<8,8,1>:UD 0xfe:UD [1532] MUL(16) %628<1>:F : %627<8,8,1>:F 16383:F [1534] MOV(16) %1410<2>:UW : %628<8,8,1>:F [1536] MOV(16) %629<1>:UW : %1410<16,8,2>:UW [1538] MUL(8) arf : %619<8,8,1>:D %47<0,1,0>:D [1540] MACH(8) arf : %619<8,8,1>:D %47<0,1,0>:D [1542] MOV(8) %630<1>:F : arf [1544] MUL(8) arf : %619<8,8,1>:D %47<0,1,0>:D [1546] MACH(8) arf : %619<8,8,1>:D %47<0,1,0>:D [1548] MOV(8) %1409<1>:F : arf [1550] MOV(8) %630<1>:F : %1409<8,8,1>:F [1552] ADD(16) %631<1>:D : %630<8,8,1>:D %589<8,8,1>:D [1554] MUL(16) %632<1>:UD : %631<8,8,1>:UD 0x2:UW [1556] ADD(16) %633<1>:D : %41<0,1,0>:D %632<8,8,1>:D [1558] ADD(16) %1261<1>:UD : %633<8,8,1>:UD -%41<0,1,0>:UD [1560] MOV(16) %1408<1>:UD : %629<8,8,1>:UW [1562] BYTE_SCATTER(16) : %1261<8,8,1>:UD %1408<8,8,1>:UD 0x2:UD [1564] MUL(16) %634<1>:UD : %624<8,8,1>:UD 0x4:UW [1566] ADD(16) %635<1>:D : %54<0,1,0>:D %634<8,8,1>:D [1568] UNTYPED_READ(16) %636<1>:UD : %635<8,8,1>:UD 0xfe:UD [1570] MUL(16) %637<1>:F : %636<8,8,1>:F 16383:F [1572] MOV(16) %1407<2>:UW : %637<8,8,1>:F [1574] MOV(16) %638<1>:UW : %1407<16,8,2>:UW [1576] ADD(16) %639<1>:D : %631<8,8,1>:D %48<0,1,0>:D [1578] MUL(16) %640<1>:UD : %639<8,8,1>:UD 0x2:UW [1580] ADD(16) %641<1>:D : %41<0,1,0>:D %640<8,8,1>:D [1582] ADD(16) %1267<1>:UD : %641<8,8,1>:UD -%41<0,1,0>:UD [1584] MOV(16) %1406<1>:UD : %638<8,8,1>:UW [1586] BYTE_SCATTER(16) : %1267<8,8,1>:UD %1406<8,8,1>:UD 0x2:UD [1588] MUL(16) %642<1>:UD : %624<8,8,1>:UD 0x4:UW [1590] ADD(16) %643<1>:D : %53<0,1,0>:D %642<8,8,1>:D [1592] UNTYPED_READ(16) %644<1>:UD : %643<8,8,1>:UD 0xfe:UD [1594] MUL(16) %645<1>:F : %644<8,8,1>:F 16383:F [1596] MOV(16) %1405<2>:UW : %645<8,8,1>:F [1598] MOV(16) %646<1>:UW : %1405<16,8,2>:UW [1600] ADD(16) %647<1>:D : %631<8,8,1>:D %593<0,1,0>:D [1602] MUL(16) %648<1>:UD : %647<8,8,1>:UD 0x2:UW [1604] ADD(16) %649<1>:D : %41<0,1,0>:D %648<8,8,1>:D [1606] ADD(16) %1273<1>:UD : %649<8,8,1>:UD -%41<0,1,0>:UD [1608] MOV(16) %1404<1>:UD : %646<8,8,1>:UW [1610] BYTE_SCATTER(16) : %1273<8,8,1>:UD %1404<8,8,1>:UD 0x2:UD [1612] L83: [1614] ENDIF(16) : 0:D [1616] L102: [1618] ENDIF(16) : 0:D [1620] L68: [1622] ENDIF(16) : 0:D [1624] L38: [1626] CMP.le(16) arf : %23<8,8,1>:UW 0x26:UW [1628](f0.1) JMPI(1) : 0:D [1630](f0.1) IF(16) : 0:D [1632] ADD(16) %650<1>:D : %589<8,8,1>:D 1:D [1634] CMP.ge(16) arf : %650<8,8,1>:D %61<0,1,0>:D [1636] CMP.l(16) arf : %650<8,8,1>:D %584<0,1,0>:D [1638] AND(16) %653<1>:W : %651<8,8,1>:W %652<8,8,1>:W [1640] ADD(16) %654<1>:D : %136<8,8,1>:D 3:D [1642](f653) IF(16) : 0:D [1644] L39: [1646] L40: [1648] ELSE(16) : 0:D [1650] L105: [1652] CMP.ge(16) arf : %591<8,8,1>:D %64<0,1,0>:D [1654] CMP.l(16) arf : %591<8,8,1>:D %587<0,1,0>:D [1656] AND(16) %657<1>:W : %655<8,8,1>:W %656<8,8,1>:W [1658](f657) IF(16) : 0:D [1660] L41: [1662] L42: [1664] ELSE(16) : 0:D [1666] L86: [1668] ADD(16) %658<1>:D : %654<8,8,1>:D %140<8,8,1>:D [1670] MUL(16) %659<1>:UD : %658<8,8,1>:UD 0x4:UW [1672] ADD(16) %660<1>:D : %52<0,1,0>:D %659<8,8,1>:D [1674] UNTYPED_READ(16) %661<1>:UD : %660<8,8,1>:UD 0xfe:UD [1676] MUL(16) %662<1>:F : %661<8,8,1>:F 16383:F [1678] MOV(16) %1417<2>:UW : %662<8,8,1>:F [1680] MOV(16) %663<1>:UW : %1417<16,8,2>:UW [1682] MUL(8) arf : %591<8,8,1>:D %47<0,1,0>:D [1684] MACH(8) arf : %591<8,8,1>:D %47<0,1,0>:D [1686] MOV(8) %664<1>:F : arf [1688] MUL(8) arf : %591<8,8,1>:D %47<0,1,0>:D [1690] MACH(8) arf : %591<8,8,1>:D %47<0,1,0>:D [1692] MOV(8) %1416<1>:F : arf [1694] MOV(8) %664<1>:F : %1416<8,8,1>:F [1696] ADD(16) %665<1>:D : %664<8,8,1>:D %650<8,8,1>:D [1698] MUL(16) %666<1>:UD : %665<8,8,1>:UD 0x2:UW [1700] ADD(16) %667<1>:D : %41<0,1,0>:D %666<8,8,1>:D [1702] ADD(16) %1281<1>:UD : %667<8,8,1>:UD -%41<0,1,0>:UD [1704] MOV(16) %1415<1>:UD : %663<8,8,1>:UW [1706] BYTE_SCATTER(16) : %1281<8,8,1>:UD %1415<8,8,1>:UD 0x2:UD [1708] MUL(16) %668<1>:UD : %658<8,8,1>:UD 0x4:UW [1710] ADD(16) %669<1>:D : %54<0,1,0>:D %668<8,8,1>:D [1712] UNTYPED_READ(16) %670<1>:UD : %669<8,8,1>:UD 0xfe:UD [1714] MUL(16) %671<1>:F : %670<8,8,1>:F 16383:F [1716] MOV(16) %1414<2>:UW : %671<8,8,1>:F [1718] MOV(16) %672<1>:UW : %1414<16,8,2>:UW [1720] ADD(16) %673<1>:D : %665<8,8,1>:D %48<0,1,0>:D [1722] MUL(16) %674<1>:UD : %673<8,8,1>:UD 0x2:UW [1724] ADD(16) %675<1>:D : %41<0,1,0>:D %674<8,8,1>:D [1726] ADD(16) %1287<1>:UD : %675<8,8,1>:UD -%41<0,1,0>:UD [1728] MOV(16) %1413<1>:UD : %672<8,8,1>:UW [1730] BYTE_SCATTER(16) : %1287<8,8,1>:UD %1413<8,8,1>:UD 0x2:UD [1732] MUL(16) %676<1>:UD : %658<8,8,1>:UD 0x4:UW [1734] ADD(16) %677<1>:D : %53<0,1,0>:D %676<8,8,1>:D [1736] UNTYPED_READ(16) %678<1>:UD : %677<8,8,1>:UD 0xfe:UD [1738] MUL(16) %679<1>:F : %678<8,8,1>:F 16383:F [1740] MOV(16) %1412<2>:UW : %679<8,8,1>:F [1742] MOV(16) %680<1>:UW : %1412<16,8,2>:UW [1744] ADD(16) %681<1>:D : %665<8,8,1>:D %593<0,1,0>:D [1746] MUL(16) %682<1>:UD : %681<8,8,1>:UD 0x2:UW [1748] ADD(16) %683<1>:D : %41<0,1,0>:D %682<8,8,1>:D [1750] ADD(16) %1293<1>:UD : %683<8,8,1>:UD -%41<0,1,0>:UD [1752] MOV(16) %1411<1>:UD : %680<8,8,1>:UW [1754] BYTE_SCATTER(16) : %1293<8,8,1>:UD %1411<8,8,1>:UD 0x2:UD [1756] L85: [1758] ENDIF(16) : 0:D [1760] L43: [1762] ADD(16) %684<1>:D : %591<8,8,1>:D 1:D [1764] CMP.ge(16) arf : %684<8,8,1>:D %64<0,1,0>:D [1766] CMP.l(16) arf : %684<8,8,1>:D %587<0,1,0>:D [1768] AND(16) %687<1>:W : %685<8,8,1>:W %686<8,8,1>:W [1770](f687) IF(16) : 0:D [1772] L44: [1774] L45: [1776] ELSE(16) : 0:D [1778] L88: [1780] ADD(16) %688<1>:D : %139<8,8,1>:D 108:D [1782] ADD(16) %689<1>:D : %654<8,8,1>:D %688<8,8,1>:D [1784] MUL(16) %690<1>:UD : %689<8,8,1>:UD 0x4:UW [1786] ADD(16) %691<1>:D : %52<0,1,0>:D %690<8,8,1>:D [1788] UNTYPED_READ(16) %692<1>:UD : %691<8,8,1>:UD 0xfe:UD [1790] MUL(16) %693<1>:F : %692<8,8,1>:F 16383:F [1792] MOV(16) %1424<2>:UW : %693<8,8,1>:F [1794] MOV(16) %694<1>:UW : %1424<16,8,2>:UW [1796] MUL(8) arf : %684<8,8,1>:D %47<0,1,0>:D [1798] MACH(8) arf : %684<8,8,1>:D %47<0,1,0>:D [1800] MOV(8) %695<1>:F : arf [1802] MUL(8) arf : %684<8,8,1>:D %47<0,1,0>:D [1804] MACH(8) arf : %684<8,8,1>:D %47<0,1,0>:D [1806] MOV(8) %1423<1>:F : arf [1808] MOV(8) %695<1>:F : %1423<8,8,1>:F [1810] ADD(16) %696<1>:D : %695<8,8,1>:D %650<8,8,1>:D [1812] MUL(16) %697<1>:UD : %696<8,8,1>:UD 0x2:UW [1814] ADD(16) %698<1>:D : %41<0,1,0>:D %697<8,8,1>:D [1816] ADD(16) %1301<1>:UD : %698<8,8,1>:UD -%41<0,1,0>:UD [1818] MOV(16) %1422<1>:UD : %694<8,8,1>:UW [1820] BYTE_SCATTER(16) : %1301<8,8,1>:UD %1422<8,8,1>:UD 0x2:UD [1822] MUL(16) %699<1>:UD : %689<8,8,1>:UD 0x4:UW [1824] ADD(16) %700<1>:D : %54<0,1,0>:D %699<8,8,1>:D [1826] UNTYPED_READ(16) %701<1>:UD : %700<8,8,1>:UD 0xfe:UD [1828] MUL(16) %702<1>:F : %701<8,8,1>:F 16383:F [1830] MOV(16) %1421<2>:UW : %702<8,8,1>:F [1832] MOV(16) %703<1>:UW : %1421<16,8,2>:UW [1834] ADD(16) %704<1>:D : %696<8,8,1>:D %48<0,1,0>:D [1836] MUL(16) %705<1>:UD : %704<8,8,1>:UD 0x2:UW [1838] ADD(16) %706<1>:D : %41<0,1,0>:D %705<8,8,1>:D [1840] ADD(16) %1307<1>:UD : %706<8,8,1>:UD -%41<0,1,0>:UD [1842] MOV(16) %1420<1>:UD : %703<8,8,1>:UW [1844] BYTE_SCATTER(16) : %1307<8,8,1>:UD %1420<8,8,1>:UD 0x2:UD [1846] MUL(16) %707<1>:UD : %689<8,8,1>:UD 0x4:UW [1848] ADD(16) %708<1>:D : %53<0,1,0>:D %707<8,8,1>:D [1850] UNTYPED_READ(16) %709<1>:UD : %708<8,8,1>:UD 0xfe:UD [1852] MUL(16) %710<1>:F : %709<8,8,1>:F 16383:F [1854] MOV(16) %1419<2>:UW : %710<8,8,1>:F [1856] MOV(16) %711<1>:UW : %1419<16,8,2>:UW [1858] ADD(16) %712<1>:D : %696<8,8,1>:D %593<0,1,0>:D [1860] MUL(16) %713<1>:UD : %712<8,8,1>:UD 0x2:UW [1862] ADD(16) %714<1>:D : %41<0,1,0>:D %713<8,8,1>:D [1864] ADD(16) %1313<1>:UD : %714<8,8,1>:UD -%41<0,1,0>:UD [1866] MOV(16) %1418<1>:UD : %711<8,8,1>:UW [1868] BYTE_SCATTER(16) : %1313<8,8,1>:UD %1418<8,8,1>:UD 0x2:UD [1870] L87: [1872] ENDIF(16) : 0:D [1874] L104: [1876] ENDIF(16) : 0:D [1878] MOV(16) %23<1>:UW : 0x3e:UW [1880] L67: [1882] ENDIF(16) : 0:D [1884] L46: [1886] CMP.le(16) arf : %23<8,8,1>:UW 0x2e:UW [1888](f0.1) JMPI(1) : 0:D [1890](f0.1) IF(16) : 0:D [1892] SHL(1) %715<0>:D : %48<0,1,0>:D 1:D [1894] CMP.ge(16) arf : %589<8,8,1>:D %61<0,1,0>:D [1896] CMP.l(16) arf : %589<8,8,1>:D %584<0,1,0>:D [1898] AND(16) %718<1>:W : %716<8,8,1>:W %717<8,8,1>:W [1900](f718) IF(16) : 0:D [1902] L47: [1904] L48: [1906] ELSE(16) : 0:D [1908] L107: [1910] CMP.ge(16) arf : %591<8,8,1>:D %64<0,1,0>:D [1912] CMP.l(16) arf : %591<8,8,1>:D %587<0,1,0>:D [1914] AND(16) %721<1>:W : %719<8,8,1>:W %720<8,8,1>:W [1916](f721) IF(16) : 0:D [1918] L49: [1920] L50: [1922] ELSE(16) : 0:D [1924] L90: [1926] UNTYPED_READ(16) %722<1>:UD : %294<8,8,1>:UD 0xfe:UD [1928] MUL(8) arf : %591<8,8,1>:D %47<0,1,0>:D [1930] MACH(8) arf : %591<8,8,1>:D %47<0,1,0>:D [1932] MOV(8) %723<1>:F : arf [1934] MUL(8) arf : %591<8,8,1>:D %47<0,1,0>:D [1936] MACH(8) arf : %591<8,8,1>:D %47<0,1,0>:D [1938] MOV(8) %1425<1>:F : arf [1940] MOV(8) %723<1>:F : %1425<8,8,1>:F [1942] ADD(16) %724<1>:D : %723<8,8,1>:D %589<8,8,1>:D [1944] MUL(16) %725<1>:UD : %724<8,8,1>:UD 0x4:UW [1946] ADD(16) %726<1>:D : %41<0,1,0>:D %725<8,8,1>:D [1948] ADD(16) %1318<1>:UD : %726<8,8,1>:UD -%41<0,1,0>:UD [1950] UNTYPED_WRITE(16) : %1318<8,8,1>:UD %722<8,8,1>:UD 0x2:UD [1952] UNTYPED_READ(16) %727<1>:UD : %443<8,8,1>:UD 0xfe:UD [1954] ADD(16) %728<1>:D : %724<8,8,1>:D %48<0,1,0>:D [1956] MUL(16) %729<1>:UD : %728<8,8,1>:UD 0x4:UW [1958] ADD(16) %730<1>:D : %41<0,1,0>:D %729<8,8,1>:D [1960] ADD(16) %1322<1>:UD : %730<8,8,1>:UD -%41<0,1,0>:UD [1962] UNTYPED_WRITE(16) : %1322<8,8,1>:UD %727<8,8,1>:UD 0x2:UD [1964] UNTYPED_READ(16) %731<1>:UD : %298<8,8,1>:UD 0xfe:UD [1966] ADD(16) %732<1>:D : %724<8,8,1>:D %715<0,1,0>:D [1968] MUL(16) %733<1>:UD : %732<8,8,1>:UD 0x4:UW [1970] ADD(16) %734<1>:D : %41<0,1,0>:D %733<8,8,1>:D [1972] ADD(16) %1326<1>:UD : %734<8,8,1>:UD -%41<0,1,0>:UD [1974] UNTYPED_WRITE(16) : %1326<8,8,1>:UD %731<8,8,1>:UD 0x2:UD [1976] L89: [1978] ENDIF(16) : 0:D [1980] L51: [1982] ADD(16) %735<1>:D : %591<8,8,1>:D 1:D [1984] CMP.ge(16) arf : %735<8,8,1>:D %64<0,1,0>:D [1986] CMP.l(16) arf : %735<8,8,1>:D %587<0,1,0>:D [1988] AND(16) %738<1>:W : %736<8,8,1>:W %737<8,8,1>:W [1990](f738) IF(16) : 0:D [1992] L52: [1994] L53: [1996] ELSE(16) : 0:D [1998] L92: [2000] ADD(16) %739<1>:D : %139<8,8,1>:D 108:D [2002] ADD(16) %740<1>:D : %137<8,8,1>:D %739<8,8,1>:D [2004] MUL(16) %741<1>:UD : %740<8,8,1>:UD 0x4:UW [2006] ADD(16) %742<1>:D : %52<0,1,0>:D %741<8,8,1>:D [2008] UNTYPED_READ(16) %743<1>:UD : %742<8,8,1>:UD 0xfe:UD [2010] MUL(8) arf : %735<8,8,1>:D %47<0,1,0>:D [2012] MACH(8) arf : %735<8,8,1>:D %47<0,1,0>:D [2014] MOV(8) %744<1>:F : arf [2016] MUL(8) arf : %735<8,8,1>:D %47<0,1,0>:D [2018] MACH(8) arf : %735<8,8,1>:D %47<0,1,0>:D [2020] MOV(8) %1426<1>:F : arf [2022] MOV(8) %744<1>:F : %1426<8,8,1>:F [2024] ADD(16) %745<1>:D : %744<8,8,1>:D %589<8,8,1>:D [2026] MUL(16) %746<1>:UD : %745<8,8,1>:UD 0x4:UW [2028] ADD(16) %747<1>:D : %41<0,1,0>:D %746<8,8,1>:D [2030] ADD(16) %1333<1>:UD : %747<8,8,1>:UD -%41<0,1,0>:UD [2032] UNTYPED_WRITE(16) : %1333<8,8,1>:UD %743<8,8,1>:UD 0x2:UD [2034] MUL(16) %748<1>:UD : %740<8,8,1>:UD 0x4:UW [2036] ADD(16) %749<1>:D : %54<0,1,0>:D %748<8,8,1>:D [2038] UNTYPED_READ(16) %750<1>:UD : %749<8,8,1>:UD 0xfe:UD [2040] ADD(16) %751<1>:D : %745<8,8,1>:D %48<0,1,0>:D [2042] MUL(16) %752<1>:UD : %751<8,8,1>:UD 0x4:UW [2044] ADD(16) %753<1>:D : %41<0,1,0>:D %752<8,8,1>:D [2046] ADD(16) %1338<1>:UD : %753<8,8,1>:UD -%41<0,1,0>:UD [2048] UNTYPED_WRITE(16) : %1338<8,8,1>:UD %750<8,8,1>:UD 0x2:UD [2050] MUL(16) %754<1>:UD : %740<8,8,1>:UD 0x4:UW [2052] ADD(16) %755<1>:D : %53<0,1,0>:D %754<8,8,1>:D [2054] UNTYPED_READ(16) %756<1>:UD : %755<8,8,1>:UD 0xfe:UD [2056] ADD(16) %757<1>:D : %745<8,8,1>:D %715<0,1,0>:D [2058] MUL(16) %758<1>:UD : %757<8,8,1>:UD 0x4:UW [2060] ADD(16) %759<1>:D : %41<0,1,0>:D %758<8,8,1>:D [2062] ADD(16) %1343<1>:UD : %759<8,8,1>:UD -%41<0,1,0>:UD [2064] UNTYPED_WRITE(16) : %1343<8,8,1>:UD %756<8,8,1>:UD 0x2:UD [2066] L91: [2068] ENDIF(16) : 0:D [2070] L106: [2072] ENDIF(16) : 0:D [2074] L66: [2076] ENDIF(16) : 0:D [2078] L54: [2080] CMP.le(16) arf : %23<8,8,1>:UW 0x36:UW [2082](f0.1) JMPI(1) : 0:D [2084](f0.1) IF(16) : 0:D [2086] ADD(16) %760<1>:D : %589<8,8,1>:D 1:D [2088] CMP.ge(16) arf : %760<8,8,1>:D %61<0,1,0>:D [2090] CMP.l(16) arf : %760<8,8,1>:D %584<0,1,0>:D [2092] AND(16) %763<1>:W : %761<8,8,1>:W %762<8,8,1>:W [2094] ADD(16) %764<1>:D : %136<8,8,1>:D 3:D [2096](f763) IF(16) : 0:D [2098] L55: [2100] L56: [2102] ELSE(16) : 0:D [2104] L109: [2106] CMP.ge(16) arf : %591<8,8,1>:D %64<0,1,0>:D [2108] CMP.l(16) arf : %591<8,8,1>:D %587<0,1,0>:D [2110] AND(16) %767<1>:W : %765<8,8,1>:W %766<8,8,1>:W [2112](f767) IF(16) : 0:D [2114] L57: [2116] L58: [2118] ELSE(16) : 0:D [2120] L94: [2122] ADD(16) %768<1>:D : %764<8,8,1>:D %140<8,8,1>:D [2124] MUL(16) %769<1>:UD : %768<8,8,1>:UD 0x4:UW [2126] ADD(16) %770<1>:D : %52<0,1,0>:D %769<8,8,1>:D [2128] UNTYPED_READ(16) %771<1>:UD : %770<8,8,1>:UD 0xfe:UD [2130] MUL(8) arf : %591<8,8,1>:D %47<0,1,0>:D [2132] MACH(8) arf : %591<8,8,1>:D %47<0,1,0>:D [2134] MOV(8) %772<1>:F : arf [2136] MUL(8) arf : %591<8,8,1>:D %47<0,1,0>:D [2138] MACH(8) arf : %591<8,8,1>:D %47<0,1,0>:D [2140] MOV(8) %1427<1>:F : arf [2142] MOV(8) %772<1>:F : %1427<8,8,1>:F [2144] ADD(16) %773<1>:D : %772<8,8,1>:D %760<8,8,1>:D [2146] MUL(16) %774<1>:UD : %773<8,8,1>:UD 0x4:UW [2148] ADD(16) %775<1>:D : %41<0,1,0>:D %774<8,8,1>:D [2150] ADD(16) %1350<1>:UD : %775<8,8,1>:UD -%41<0,1,0>:UD [2152] UNTYPED_WRITE(16) : %1350<8,8,1>:UD %771<8,8,1>:UD 0x2:UD [2154] MUL(16) %776<1>:UD : %768<8,8,1>:UD 0x4:UW [2156] ADD(16) %777<1>:D : %54<0,1,0>:D %776<8,8,1>:D [2158] UNTYPED_READ(16) %778<1>:UD : %777<8,8,1>:UD 0xfe:UD [2160] ADD(16) %779<1>:D : %773<8,8,1>:D %48<0,1,0>:D [2162] MUL(16) %780<1>:UD : %779<8,8,1>:UD 0x4:UW [2164] ADD(16) %781<1>:D : %41<0,1,0>:D %780<8,8,1>:D [2166] ADD(16) %1355<1>:UD : %781<8,8,1>:UD -%41<0,1,0>:UD [2168] UNTYPED_WRITE(16) : %1355<8,8,1>:UD %778<8,8,1>:UD 0x2:UD [2170] MUL(16) %782<1>:UD : %768<8,8,1>:UD 0x4:UW [2172] ADD(16) %783<1>:D : %53<0,1,0>:D %782<8,8,1>:D [2174] UNTYPED_READ(16) %784<1>:UD : %783<8,8,1>:UD 0xfe:UD [2176] ADD(16) %785<1>:D : %773<8,8,1>:D %715<0,1,0>:D [2178] MUL(16) %786<1>:UD : %785<8,8,1>:UD 0x4:UW [2180] ADD(16) %787<1>:D : %41<0,1,0>:D %786<8,8,1>:D [2182] ADD(16) %1360<1>:UD : %787<8,8,1>:UD -%41<0,1,0>:UD [2184] UNTYPED_WRITE(16) : %1360<8,8,1>:UD %784<8,8,1>:UD 0x2:UD [2186] L93: [2188] ENDIF(16) : 0:D [2190] L59: [2192] ADD(16) %788<1>:D : %591<8,8,1>:D 1:D [2194] CMP.ge(16) arf : %788<8,8,1>:D %64<0,1,0>:D [2196] CMP.l(16) arf : %788<8,8,1>:D %587<0,1,0>:D [2198] AND(16) %791<1>:W : %789<8,8,1>:W %790<8,8,1>:W [2200](f791) IF(16) : 0:D [2202] L60: [2204] L61: [2206] ELSE(16) : 0:D [2208] L96: [2210] ADD(16) %792<1>:D : %139<8,8,1>:D 108:D [2212] ADD(16) %793<1>:D : %764<8,8,1>:D %792<8,8,1>:D [2214] MUL(16) %794<1>:UD : %793<8,8,1>:UD 0x4:UW [2216] ADD(16) %795<1>:D : %52<0,1,0>:D %794<8,8,1>:D [2218] UNTYPED_READ(16) %796<1>:UD : %795<8,8,1>:UD 0xfe:UD [2220] MUL(8) arf : %788<8,8,1>:D %47<0,1,0>:D [2222] MACH(8) arf : %788<8,8,1>:D %47<0,1,0>:D [2224] MOV(8) %797<1>:F : arf [2226] MUL(8) arf : %788<8,8,1>:D %47<0,1,0>:D [2228] MACH(8) arf : %788<8,8,1>:D %47<0,1,0>:D [2230] MOV(8) %1428<1>:F : arf [2232] MOV(8) %797<1>:F : %1428<8,8,1>:F [2234] ADD(16) %798<1>:D : %797<8,8,1>:D %760<8,8,1>:D [2236] MUL(16) %799<1>:UD : %798<8,8,1>:UD 0x4:UW [2238] ADD(16) %800<1>:D : %41<0,1,0>:D %799<8,8,1>:D [2240] ADD(16) %1367<1>:UD : %800<8,8,1>:UD -%41<0,1,0>:UD [2242] UNTYPED_WRITE(16) : %1367<8,8,1>:UD %796<8,8,1>:UD 0x2:UD [2244] MUL(16) %801<1>:UD : %793<8,8,1>:UD 0x4:UW [2246] ADD(16) %802<1>:D : %54<0,1,0>:D %801<8,8,1>:D [2248] UNTYPED_READ(16) %803<1>:UD : %802<8,8,1>:UD 0xfe:UD [2250] ADD(16) %804<1>:D : %798<8,8,1>:D %48<0,1,0>:D [2252] MUL(16) %805<1>:UD : %804<8,8,1>:UD 0x4:UW [2254] ADD(16) %806<1>:D : %41<0,1,0>:D %805<8,8,1>:D [2256] ADD(16) %1372<1>:UD : %806<8,8,1>:UD -%41<0,1,0>:UD [2258] UNTYPED_WRITE(16) : %1372<8,8,1>:UD %803<8,8,1>:UD 0x2:UD [2260] MUL(16) %807<1>:UD : %793<8,8,1>:UD 0x4:UW [2262] ADD(16) %808<1>:D : %53<0,1,0>:D %807<8,8,1>:D [2264] UNTYPED_READ(16) %809<1>:UD : %808<8,8,1>:UD 0xfe:UD [2266] ADD(16) %810<1>:D : %798<8,8,1>:D %715<0,1,0>:D [2268] MUL(16) %811<1>:UD : %810<8,8,1>:UD 0x4:UW [2270] ADD(16) %812<1>:D : %41<0,1,0>:D %811<8,8,1>:D [2272] ADD(16) %1377<1>:UD : %812<8,8,1>:UD -%41<0,1,0>:UD [2274] UNTYPED_WRITE(16) : %1377<8,8,1>:UD %809<8,8,1>:UD 0x2:UD [2276] L95: [2278] ENDIF(16) : 0:D [2280] L108: [2282] ENDIF(16) : 0:D [2284] L65: [2286] ENDIF(16) : 0:D [2288](f0.1) L62: [2290] CMP.le(16) arf : %23<8,8,1>:UW 0x3e:UW [2292](f0.1) L63: [2294](f0.1) EOT(16) : demosaicKernel's SELECTION IR end. demosaicKernel's SELECTION IR begin: WARNING: not completed yet, welcome for the FIX! [0] L0: [2] CMP.le(8) arf : %23<8,8,1>:UW 0x0:UW [4](f0.1) IF(8) : 0:D [6] MOV(1) %51<0>:UD : 0x4:UD [8] MOV(1) %52<0>:UD : 0x1444:UD [10] MOV(1) %53<0>:UD : 0x2884:UD [12] MOV(1) %54<0>:UD : 0x3cc4:UD [14] L1: [16] SHL(8) %55<1>:D : %1<8,8,1>:D 4:D [18] ADD(8) %56<1>:D : %55<8,8,1>:D %0<8,8,1>:D [20] MUL(1) %57<0>:UD : %15<0,1,0>:UD 0x34:UW [22] SHR(1) %58<0>:UD : %57<0,1,0>:UD 0x5:UD [24] MUL(1) %59<0>:UD : %16<0,1,0>:UD 0x34:UW [26] SHR(1) %60<0>:UD : %59<0,1,0>:UD 0x5:UD [28] MUL(1) %61<0>:UD : %3<0,1,0>:UD 0x1a:UW [30] ADD(1) %62<0>:D : -%43<0,1,0>:D -2:D [32] ADD(1) %63<0>:D : %62<0,1,0>:D %61<0,1,0>:D [34] MUL(1) %64<0>:UD : %4<0,1,0>:UD 0x1a:UW [36] ADD(1) %65<0>:D : -%44<0,1,0>:D -2:D [38] ADD(1) %66<0>:D : %65<0,1,0>:D %64<0,1,0>:D [40] CMP.eq(8) arf : %49<0,1,0>:D 0:D [42](f67) IF(8) : 0:D [44] L2: [46] CMP.ge(8) arf : %56<8,8,1>:D 1296:D [48](f68) IF(8) : 0:D [50] L3: [52] SHL(1) %69<0>:D : %60<0,1,0>:D 1:D [54] ADD(1) %70<0>:D : %69<0,1,0>:D -2:D [56] SHL(1) %71<0>:D : %58<0,1,0>:D 1:D [58] ADD(1) %72<0>:D : %71<0,1,0>:D -2:D [60] MOV(8) %74<1>:F : %56<8,8,1>:F [62] L4: [64] MOV(1) %828<0>:UD : 0x24:UD [66] MATH(8) %75<1>:D : %74<8,8,1>:D %828<0,1,0>:D [68] ADD(8) %76<1>:D : %75<8,8,1>:D %63<0,1,0>:D [70] ADD(8) %77<1>:D : %76<8,8,1>:D 2:D [72] MATH(8) %78<1>:D : %74<8,8,1>:D %828<0,1,0>:D [74] ADD(8) %79<1>:D : %78<8,8,1>:D %66<0,1,0>:D [76] ADD(8) %80<1>:D : %79<8,8,1>:D 2:D [78] CMP.l(8) arf : %76<8,8,1>:D -2:D [80] ADD(8) %82<1>:D : -%76<8,8,1>:D -2:D [82](f81) SEL(8) %83<1>:D : %82<8,8,1>:D %77<8,8,1>:D [84] CMP.l(8) arf : %83<8,8,1>:D %58<0,1,0>:D [86] ADD(8) %85<1>:D : %72<0,1,0>:D -%83<8,8,1>:D [88](f84) SEL(8) %86<1>:D : %83<8,8,1>:D %85<8,8,1>:D [90] CMP.l(8) arf : %79<8,8,1>:D -2:D [92] ADD(8) %88<1>:D : -%79<8,8,1>:D -2:D [94](f87) SEL(8) %89<1>:D : %88<8,8,1>:D %80<8,8,1>:D [96] CMP.l(8) arf : %89<8,8,1>:D %60<0,1,0>:D [98] ADD(8) %91<1>:D : %70<0,1,0>:D -%89<8,8,1>:D [100](f90) SEL(8) %92<1>:D : %89<8,8,1>:D %91<8,8,1>:D [102] MUL(8) arf : %92<8,8,1>:D %46<0,1,0>:D [104] MACH(8) arf : %92<8,8,1>:D %46<0,1,0>:D [106] MOV(8) %93<1>:F : arf [108] ADD(8) %94<1>:D : %93<8,8,1>:D %86<8,8,1>:D [110] MUL(8) %95<1>:UD : %94<8,8,1>:UD 0x2:UW [112] ADD(8) %96<1>:D : %42<0,1,0>:D %95<8,8,1>:D [114] ADD(8) %837<1>:UD : %96<8,8,1>:UD -%42<0,1,0>:UD [116] AND(8) %1379<1>:UD : %837<8,8,1>:UD 0xfffffffc:UD [118] UNTYPED_READ(8) %1378<1>:UD : %1379<8,8,1>:UD 0x3:UD [120] AND(8) %1380<1>:UD : %837<8,8,1>:UD 0x3:UD [122] SHL(8) %1380<1>:UD : %1380<8,8,1>:UD 0x3:UD [124] SHR(8) %1378<1>:UD : %1378<8,8,1>:UD %1380<8,8,1>:UD [126] MOV(8) %97<1>:UW : %1378<16,8,2>:UW [128] MOV(8) %98<1>:F : %97<8,8,1>:UW [130] MOV(1) %838<0>:F : 16383:F [132] MATH(8) %99<1>:F : %98<8,8,1>:F %838<0,1,0>:F [134] MUL(8) %100<1>:UD : %74<8,8,1>:UD 0x4:UW [136] ADD(8) %101<1>:D : %51<0,1,0>:D %100<8,8,1>:D [138] UNTYPED_WRITE(8) : %101<8,8,1>:UD %99<8,8,1>:UD 0xfe:UD [140] ADD(8) %74<1>:D : %74<8,8,1>:D 256:D [142] CMP.l(8) arf : %74<8,8,1>:D 1296:D [144](f103) WHILE(8) : 0:D [146] L5: [148] L110: [150] ENDIF(8) : 0:D [152] L6: [154] ELSE(8) : 0:D [156] L112: [158] CMP.ge(8) arf : %56<8,8,1>:D 1296:D [160](f104) IF(8) : 0:D [162] L7: [164] SHL(1) %105<0>:D : %60<0,1,0>:D 1:D [166] ADD(1) %106<0>:D : %105<0,1,0>:D -2:D [168] SHL(1) %107<0>:D : %58<0,1,0>:D 1:D [170] ADD(1) %108<0>:D : %107<0,1,0>:D -2:D [172] MOV(8) %110<1>:F : %56<8,8,1>:F [174] L8: [176] MOV(1) %849<0>:UD : 0x24:UD [178] MATH(8) %111<1>:D : %110<8,8,1>:D %849<0,1,0>:D [180] ADD(8) %112<1>:D : %111<8,8,1>:D %63<0,1,0>:D [182] MATH(8) %113<1>:D : %110<8,8,1>:D %849<0,1,0>:D [184] ADD(8) %114<1>:D : %113<8,8,1>:D %66<0,1,0>:D [186] CMP.l(8) arf : %112<8,8,1>:D 0:D [188] ADD(8) %116<1>:D : -%112<8,8,1>:D 0:D [190](f115) SEL(8) %117<1>:D : %116<8,8,1>:D %112<8,8,1>:D [192] CMP.l(8) arf : %117<8,8,1>:D %58<0,1,0>:D [194] ADD(8) %119<1>:D : %108<0,1,0>:D -%117<8,8,1>:D [196](f118) SEL(8) %120<1>:D : %117<8,8,1>:D %119<8,8,1>:D [198] CMP.l(8) arf : %114<8,8,1>:D 0:D [200] ADD(8) %122<1>:D : -%114<8,8,1>:D 0:D [202](f121) SEL(8) %123<1>:D : %122<8,8,1>:D %114<8,8,1>:D [204] CMP.l(8) arf : %123<8,8,1>:D %60<0,1,0>:D [206] ADD(8) %125<1>:D : %106<0,1,0>:D -%123<8,8,1>:D [208](f124) SEL(8) %126<1>:D : %123<8,8,1>:D %125<8,8,1>:D [210] MUL(8) arf : %126<8,8,1>:D %46<0,1,0>:D [212] MACH(8) arf : %126<8,8,1>:D %46<0,1,0>:D [214] MOV(8) %127<1>:F : arf [216] ADD(8) %128<1>:D : %127<8,8,1>:D %120<8,8,1>:D [218] MUL(8) %129<1>:UD : %128<8,8,1>:UD 0x4:UW [220] ADD(8) %130<1>:D : %42<0,1,0>:D %129<8,8,1>:D [222] ADD(8) %856<1>:UD : %130<8,8,1>:UD -%42<0,1,0>:UD [224] UNTYPED_READ(8) %131<1>:UD : %856<8,8,1>:UD 0x3:UD [226] MUL(8) %132<1>:UD : %110<8,8,1>:UD 0x4:UW [228] ADD(8) %133<1>:D : %51<0,1,0>:D %132<8,8,1>:D [230] UNTYPED_WRITE(8) : %133<8,8,1>:UD %131<8,8,1>:UD 0xfe:UD [232] ADD(8) %110<1>:D : %110<8,8,1>:D 256:D [234] CMP.l(8) arf : %110<8,8,1>:D 1296:D [236](f135) WHILE(8) : 0:D [238] L101: [240] ENDIF(8) : 0:D [242] L111: [244] ENDIF(8) : 0:D [246] L64: [248] ENDIF(8) : 0:D [250] L9: [252] CMP.le(8) arf : %23<8,8,1>:UW 0x9:UW [254](f0.1) MOV(8) %23<1>:UW : 0xffff:UW [256] CMP.eq(8) arf : %23<8,8,1>:UW 0xffff:UW [258](f0.1) JMPI(1) : 0:D [260](f0.1) MOV(8) %23<1>:UW : 0x9:UW [262] BARRIER(8) %1388<1>:F : %1387<8,8,1>:UD [264] SHL(8) %136<1>:D : %0<8,8,1>:D 1:D [266] ADD(8) %137<1>:D : %136<8,8,1>:D 2:D [268] SHL(8) %138<1>:D : %1<8,8,1>:D 1:D [270] MOV(1) %865<0>:UD : 0x48:UD [272] MUL(8) %139<1>:D : %865<0,1,0>:D %1<8,8,1>:UD [274] ADD(8) %140<1>:D : %139<8,8,1>:D 72:D [276] ADD(8) %141<1>:D : %140<8,8,1>:D %137<8,8,1>:D [278] ADD(8) %142<1>:D : %140<8,8,1>:D %136<8,8,1>:D [280] MUL(8) %143<1>:UD : %142<8,8,1>:UD 0x4:UW [282] ADD(8) %144<1>:D : %51<0,1,0>:D %143<8,8,1>:D [284] UNTYPED_READ(8) %145<1>:UD %146<1>:UD %147<1>:UD : %144<8,8,1>:UD 0xfe:UD [286] ADD(8) %148<1>:D : %141<8,8,1>:D -1:D [288] MUL(8) %149<1>:UD : %148<8,8,1>:UD 0x4:UW [290] ADD(8) %150<1>:D : %51<0,1,0>:D %149<8,8,1>:D [292] MUL(8) %151<1>:F : %146<8,8,1>:F 1.26953:F [294] MOV(1) %873<0>:F : -0.140625:F [296] MAD(8) %152<1>:F : %151<8,8,1>:F %145<8,8,1>:F %873<0,1,0>:F [298] OR(8) %153<1>:D : %141<8,8,1>:D 1:D [300] MUL(8) %154<1>:UD : %153<8,8,1>:UD 0x4:UW [302] ADD(8) %155<1>:D : %51<0,1,0>:D %154<8,8,1>:D [304] UNTYPED_READ(8) %156<1>:UD : %155<8,8,1>:UD 0xfe:UD [306] MOV(1) %878<0>:F : -1.26953:F [308] MAD(8) %157<1>:F : %152<8,8,1>:F %156<8,8,1>:F %878<0,1,0>:F [310] ADD(8) %158<1>:D : %141<8,8,1>:D 2:D [312] MUL(8) %159<1>:UD : %158<8,8,1>:UD 0x4:UW [314] ADD(8) %160<1>:D : %51<0,1,0>:D %159<8,8,1>:D [316] UNTYPED_READ(8) %161<1>:UD : %160<8,8,1>:UD 0xfe:UD [318] MOV(1) %883<0>:F : 0.140625:F [320] MAD(8) %162<1>:F : %157<8,8,1>:F %161<8,8,1>:F %883<0,1,0>:F [322] MOV(8) %163<1>:F : (abs)%162<8,8,1>:F [324] MUL(8) %164<1>:UD : %141<8,8,1>:UD 0x4:UW [326] ADD(8) %165<1>:D : %51<0,1,0>:D %164<8,8,1>:D [328] MUL(8) %166<1>:F : %147<8,8,1>:F 1.26953:F [330] MAD(8) %167<1>:F : %166<8,8,1>:F %146<8,8,1>:F %873<0,1,0>:F [332] MAD(8) %168<1>:F : %167<8,8,1>:F %161<8,8,1>:F %878<0,1,0>:F [334] ADD(8) %169<1>:D : %141<8,8,1>:D 3:D [336] MUL(8) %170<1>:UD : %169<8,8,1>:UD 0x4:UW [338] ADD(8) %171<1>:D : %51<0,1,0>:D %170<8,8,1>:D [340] UNTYPED_READ(8) %172<1>:UD : %171<8,8,1>:UD 0xfe:UD [342] MAD(8) %173<1>:F : %168<8,8,1>:F %172<8,8,1>:F %883<0,1,0>:F [344] MOV(8) %174<1>:F : (abs)%173<8,8,1>:F [346] ADD(8) %175<1>:F : -%146<8,8,1>:F -0:F [348] MOV(1) %894<0>:F : 2:F [350] MAD(8) %176<1>:F : %175<8,8,1>:F %147<8,8,1>:F %894<0,1,0>:F [352] ADD(8) %177<1>:F : %176<8,8,1>:F -%156<8,8,1>:F [354] ADD(8) %179<1>:F : -%147<8,8,1>:F -0:F [356] MAD(8) %180<1>:F : %179<8,8,1>:F %156<8,8,1>:F %894<0,1,0>:F [358] ADD(8) %181<1>:F : %180<8,8,1>:F -%161<8,8,1>:F [360] ADD(8) %183<1>:D : %139<8,8,1>:D %137<8,8,1>:D [362] MUL(8) %184<1>:UD : %183<8,8,1>:UD 0x4:UW [364] ADD(8) %185<1>:D : %51<0,1,0>:D %184<8,8,1>:D [366] UNTYPED_READ(8) %186<1>:UD : %185<8,8,1>:UD 0xfe:UD [368] ADD(8) %187<1>:D : %141<8,8,1>:D -36:D [370] MUL(8) %188<1>:UD : %187<8,8,1>:UD 0x4:UW [372] ADD(8) %189<1>:D : %51<0,1,0>:D %188<8,8,1>:D [374] UNTYPED_READ(8) %190<1>:UD : %189<8,8,1>:UD 0xfe:UD [376] MUL(8) %191<1>:F : %190<8,8,1>:F 1.26953:F [378] MAD(8) %192<1>:F : %191<8,8,1>:F %186<8,8,1>:F %873<0,1,0>:F [380] ADD(8) %193<1>:D : %141<8,8,1>:D 36:D [382] MUL(8) %194<1>:UD : %193<8,8,1>:UD 0x4:UW [384] ADD(8) %195<1>:D : %51<0,1,0>:D %194<8,8,1>:D [386] UNTYPED_READ(8) %196<1>:UD %197<1>:UD : %195<8,8,1>:UD 0xfe:UD [388] MAD(8) %198<1>:F : %192<8,8,1>:F %196<8,8,1>:F %878<0,1,0>:F [390] ADD(8) %199<1>:D : %141<8,8,1>:D 72:D [392] MUL(8) %200<1>:UD : %199<8,8,1>:UD 0x4:UW [394] ADD(8) %201<1>:D : %51<0,1,0>:D %200<8,8,1>:D [396] UNTYPED_READ(8) %202<1>:UD : %201<8,8,1>:UD 0xfe:UD [398] MAD(8) %203<1>:F : %198<8,8,1>:F %202<8,8,1>:F %883<0,1,0>:F [400] MOV(8) %204<1>:F : (abs)%203<8,8,1>:F [402] MAD(8) %205<1>:F : %166<8,8,1>:F %190<8,8,1>:F %873<0,1,0>:F [404] MAD(8) %206<1>:F : %205<8,8,1>:F %202<8,8,1>:F %878<0,1,0>:F [406] ADD(8) %207<1>:D : %141<8,8,1>:D 108:D [408] MUL(8) %208<1>:UD : %207<8,8,1>:UD 0x4:UW [410] ADD(8) %209<1>:D : %51<0,1,0>:D %208<8,8,1>:D [412] UNTYPED_READ(8) %210<1>:UD : %209<8,8,1>:UD 0xfe:UD [414] MAD(8) %211<1>:F : %206<8,8,1>:F %210<8,8,1>:F %883<0,1,0>:F [416] MOV(8) %212<1>:F : (abs)%211<8,8,1>:F [418] ADD(8) %213<1>:F : -%190<8,8,1>:F -0:F [420] MAD(8) %214<1>:F : %213<8,8,1>:F %147<8,8,1>:F %894<0,1,0>:F [422] ADD(8) %215<1>:F : %214<8,8,1>:F -%196<8,8,1>:F [424] MAD(8) %217<1>:F : %179<8,8,1>:F %196<8,8,1>:F %894<0,1,0>:F [426] ADD(8) %218<1>:F : %217<8,8,1>:F -%202<8,8,1>:F [428] ADD(8) %220<1>:D : %141<8,8,1>:D 34:D [430] MUL(8) %221<1>:UD : %220<8,8,1>:UD 0x4:UW [432] ADD(8) %222<1>:D : %51<0,1,0>:D %221<8,8,1>:D [434] UNTYPED_READ(8) %223<1>:UD : %222<8,8,1>:UD 0xfe:UD [436] ADD(8) %224<1>:D : %141<8,8,1>:D 35:D [438] MUL(8) %225<1>:UD : %224<8,8,1>:UD 0x4:UW [440] ADD(8) %226<1>:D : %51<0,1,0>:D %225<8,8,1>:D [442] UNTYPED_READ(8) %227<1>:UD : %226<8,8,1>:UD 0xfe:UD [444] MUL(8) %228<1>:F : %227<8,8,1>:F 1.26953:F [446] MAD(8) %229<1>:F : %228<8,8,1>:F %223<8,8,1>:F %873<0,1,0>:F [448] ADD(8) %230<1>:D : %141<8,8,1>:D 37:D [450] MAD(8) %231<1>:F : %229<8,8,1>:F %197<8,8,1>:F %878<0,1,0>:F [452] ADD(8) %232<1>:D : %141<8,8,1>:D 38:D [454] MUL(8) %233<1>:UD : %232<8,8,1>:UD 0x4:UW [456] ADD(8) %234<1>:D : %51<0,1,0>:D %233<8,8,1>:D [458] UNTYPED_READ(8) %235<1>:UD %236<1>:UD : %234<8,8,1>:UD 0xfe:UD [460] MAD(8) %237<1>:F : %231<8,8,1>:F %235<8,8,1>:F %883<0,1,0>:F [462] MOV(8) %238<1>:F : (abs)%237<8,8,1>:F [464] MUL(8) %239<1>:F : %196<8,8,1>:F 1.26953:F [466] MAD(8) %240<1>:F : %239<8,8,1>:F %227<8,8,1>:F %873<0,1,0>:F [468] MAD(8) %241<1>:F : %240<8,8,1>:F %235<8,8,1>:F %878<0,1,0>:F [470] MAD(8) %242<1>:F : %241<8,8,1>:F %236<8,8,1>:F %883<0,1,0>:F [472] MOV(8) %243<1>:F : (abs)%242<8,8,1>:F [474] ADD(8) %244<1>:F : -%227<8,8,1>:F -0:F [476] MAD(8) %245<1>:F : %244<8,8,1>:F %196<8,8,1>:F %894<0,1,0>:F [478] ADD(8) %246<1>:F : %245<8,8,1>:F -%197<8,8,1>:F [480] ADD(8) %248<1>:F : -%196<8,8,1>:F -0:F [482] MAD(8) %249<1>:F : %248<8,8,1>:F %197<8,8,1>:F %894<0,1,0>:F [484] ADD(8) %250<1>:F : %249<8,8,1>:F -%235<8,8,1>:F [486] ADD(8) %252<1>:D : %153<8,8,1>:D -72:D [488] MUL(8) %253<1>:UD : %252<8,8,1>:UD 0x4:UW [490] ADD(8) %254<1>:D : %51<0,1,0>:D %253<8,8,1>:D [492] UNTYPED_READ(8) %255<1>:UD : %254<8,8,1>:UD 0xfe:UD [494] ADD(8) %256<1>:D : %153<8,8,1>:D -36:D [496] MUL(8) %257<1>:UD : %256<8,8,1>:UD 0x4:UW [498] ADD(8) %258<1>:D : %51<0,1,0>:D %257<8,8,1>:D [500] UNTYPED_READ(8) %259<1>:UD : %258<8,8,1>:UD 0xfe:UD [502] MUL(8) %260<1>:F : %259<8,8,1>:F 1.26953:F [504] MAD(8) %261<1>:F : %260<8,8,1>:F %255<8,8,1>:F %873<0,1,0>:F [506] ADD(8) %262<1>:D : %153<8,8,1>:D 36:D [508] MUL(8) %263<1>:UD : %262<8,8,1>:UD 0x4:UW [510] ADD(8) %264<1>:D : %51<0,1,0>:D %263<8,8,1>:D [512] MAD(8) %265<1>:F : %261<8,8,1>:F %197<8,8,1>:F %878<0,1,0>:F [514] ADD(8) %266<1>:D : %153<8,8,1>:D 72:D [516] MUL(8) %267<1>:UD : %266<8,8,1>:UD 0x4:UW [518] ADD(8) %268<1>:D : %51<0,1,0>:D %267<8,8,1>:D [520] UNTYPED_READ(8) %269<1>:UD : %268<8,8,1>:UD 0xfe:UD [522] MAD(8) %270<1>:F : %265<8,8,1>:F %269<8,8,1>:F %883<0,1,0>:F [524] MOV(8) %271<1>:F : (abs)%270<8,8,1>:F [526] MUL(8) %272<1>:F : %156<8,8,1>:F 1.26953:F [528] MAD(8) %273<1>:F : %272<8,8,1>:F %259<8,8,1>:F %873<0,1,0>:F [530] MAD(8) %274<1>:F : %273<8,8,1>:F %269<8,8,1>:F %878<0,1,0>:F [532] ADD(8) %275<1>:D : %153<8,8,1>:D 108:D [534] MUL(8) %276<1>:UD : %275<8,8,1>:UD 0x4:UW [536] ADD(8) %277<1>:D : %51<0,1,0>:D %276<8,8,1>:D [538] UNTYPED_READ(8) %278<1>:UD : %277<8,8,1>:UD 0xfe:UD [540] MAD(8) %279<1>:F : %274<8,8,1>:F %278<8,8,1>:F %883<0,1,0>:F [542] MOV(8) %280<1>:F : (abs)%279<8,8,1>:F [544] ADD(8) %281<1>:F : -%259<8,8,1>:F -0:F [546] MAD(8) %282<1>:F : %281<8,8,1>:F %156<8,8,1>:F %894<0,1,0>:F [548] ADD(8) %283<1>:F : %282<8,8,1>:F -%197<8,8,1>:F [550] ADD(8) %285<1>:F : -%156<8,8,1>:F -0:F [552] MAD(8) %286<1>:F : %285<8,8,1>:F %197<8,8,1>:F %894<0,1,0>:F [554] ADD(8) %287<1>:F : %286<8,8,1>:F -%269<8,8,1>:F [556] ADD(8) %289<1>:F : %163<8,8,1>:F %204<8,8,1>:F [558] CMP.l(8) arf : %289<8,8,1>:F 0.0488311:F [560] ADD(8) %291<1>:F : %163<8,8,1>:F (abs)%177<8,8,1>:F [562](f290) SEL(8) %292<1>:F : %163<8,8,1>:F %291<8,8,1>:F [564] MUL(8) %293<1>:UD : %141<8,8,1>:UD 0x4:UW [566] ADD(8) %294<1>:D : %52<0,1,0>:D %293<8,8,1>:D [568] ADD(8) %295<1>:F : (abs)%215<8,8,1>:F %204<8,8,1>:F [570](f290) SEL(8) %296<1>:F : %204<8,8,1>:F %295<8,8,1>:F [572] MUL(8) %297<1>:UD : %141<8,8,1>:UD 0x4:UW [574] ADD(8) %298<1>:D : %53<0,1,0>:D %297<8,8,1>:D [576] UNTYPED_WRITE(8) : %298<8,8,1>:UD %296<8,8,1>:UD 0xfe:UD [578] ADD(8) %299<1>:F : %174<8,8,1>:F %271<8,8,1>:F [580] CMP.l(8) arf : %299<8,8,1>:F 0.0488311:F [582] ADD(8) %301<1>:F : (abs)%181<8,8,1>:F %174<8,8,1>:F [584](f300) SEL(8) %302<1>:F : %174<8,8,1>:F %301<8,8,1>:F [586] MUL(8) %303<1>:UD : %153<8,8,1>:UD 0x4:UW [588] ADD(8) %304<1>:D : %52<0,1,0>:D %303<8,8,1>:D [590] UNTYPED_WRITE(8) : %294<8,8,1>:UD %292<8,8,1>:UD %302<8,8,1>:UD 0xfe:UD [592] ADD(8) %305<1>:F : (abs)%283<8,8,1>:F %271<8,8,1>:F [594](f300) SEL(8) %306<1>:F : %271<8,8,1>:F %305<8,8,1>:F [596] MUL(8) %307<1>:UD : %153<8,8,1>:UD 0x4:UW [598] ADD(8) %308<1>:D : %53<0,1,0>:D %307<8,8,1>:D [600] UNTYPED_WRITE(8) : %308<8,8,1>:UD %306<8,8,1>:UD 0xfe:UD [602] ADD(8) %309<1>:F : %212<8,8,1>:F %238<8,8,1>:F [604] CMP.l(8) arf : %309<8,8,1>:F 0.0488311:F [606] ADD(8) %311<1>:F : (abs)%246<8,8,1>:F %238<8,8,1>:F [608](f310) SEL(8) %312<1>:F : %238<8,8,1>:F %311<8,8,1>:F [610] MUL(8) %313<1>:UD : %193<8,8,1>:UD 0x4:UW [612] ADD(8) %314<1>:D : %52<0,1,0>:D %313<8,8,1>:D [614] ADD(8) %315<1>:F : (abs)%218<8,8,1>:F %212<8,8,1>:F [616](f310) SEL(8) %316<1>:F : %212<8,8,1>:F %315<8,8,1>:F [618] MUL(8) %317<1>:UD : %193<8,8,1>:UD 0x4:UW [620] ADD(8) %318<1>:D : %53<0,1,0>:D %317<8,8,1>:D [622] UNTYPED_WRITE(8) : %318<8,8,1>:UD %316<8,8,1>:UD 0xfe:UD [624] ADD(8) %319<1>:F : %243<8,8,1>:F %280<8,8,1>:F [626] CMP.l(8) arf : %319<8,8,1>:F 0.0488311:F [628] ADD(8) %321<1>:F : (abs)%250<8,8,1>:F %243<8,8,1>:F [630](f320) SEL(8) %322<1>:F : %243<8,8,1>:F %321<8,8,1>:F [632] UNTYPED_WRITE(8) : %314<8,8,1>:UD %312<8,8,1>:UD %322<8,8,1>:UD 0xfe:UD [634] ADD(8) %323<1>:F : (abs)%287<8,8,1>:F %280<8,8,1>:F [636](f320) SEL(8) %324<1>:F : %280<8,8,1>:F %323<8,8,1>:F [638] MUL(8) %325<1>:UD : %230<8,8,1>:UD 0x4:UW [640] ADD(8) %326<1>:D : %53<0,1,0>:D %325<8,8,1>:D [642] UNTYPED_WRITE(8) : %326<8,8,1>:UD %324<8,8,1>:UD 0xfe:UD [644] BARRIER(8) %1386<1>:F : %1385<8,8,1>:UD [646] MUL(8) %327<1>:UD : %148<8,8,1>:UD 0x4:UW [648] ADD(8) %328<1>:D : %52<0,1,0>:D %327<8,8,1>:D [650] UNTYPED_READ(8) %329<1>:UD %330<1>:UD %331<1>:UD %332<1>:UD : %328<8,8,1>:UD 0xfe:UD [652] ADD(8) %333<1>:F : %329<8,8,1>:F %330<8,8,1>:F [654] ADD(8) %334<1>:F : %333<8,8,1>:F %331<8,8,1>:F [656] ADD(8) %335<1>:F : %330<8,8,1>:F %331<8,8,1>:F [658] ADD(8) %336<1>:F : %335<8,8,1>:F %332<8,8,1>:F [660] MUL(8) %337<1>:UD : %224<8,8,1>:UD 0x4:UW [662] ADD(8) %338<1>:D : %52<0,1,0>:D %337<8,8,1>:D [664] UNTYPED_READ(8) %339<1>:UD %340<1>:UD %341<1>:UD %342<1>:UD : %338<8,8,1>:UD 0xfe:UD [666] ADD(8) %343<1>:F : %339<8,8,1>:F %340<8,8,1>:F [668] MUL(8) %344<1>:UD : %262<8,8,1>:UD 0x4:UW [670] ADD(8) %345<1>:D : %52<0,1,0>:D %344<8,8,1>:D [672] ADD(8) %346<1>:F : %343<8,8,1>:F %341<8,8,1>:F [674] ADD(8) %347<1>:F : %340<8,8,1>:F %341<8,8,1>:F [676] ADD(8) %348<1>:F : %347<8,8,1>:F %342<8,8,1>:F [678] MUL(8) %349<1>:UD : %187<8,8,1>:UD 0x4:UW [680] ADD(8) %350<1>:D : %53<0,1,0>:D %349<8,8,1>:D [682] UNTYPED_READ(8) %351<1>:UD %352<1>:UD : %350<8,8,1>:UD 0xfe:UD [684] UNTYPED_READ(8) %353<1>:UD : %298<8,8,1>:UD 0xfe:UD [686] ADD(8) %354<1>:F : %351<8,8,1>:F %353<8,8,1>:F [688] UNTYPED_READ(8) %355<1>:UD : %318<8,8,1>:UD 0xfe:UD [690] ADD(8) %356<1>:F : %354<8,8,1>:F %355<8,8,1>:F [692] ADD(8) %357<1>:F : %353<8,8,1>:F %355<8,8,1>:F [694] MUL(8) %358<1>:UD : %199<8,8,1>:UD 0x4:UW [696] ADD(8) %359<1>:D : %53<0,1,0>:D %358<8,8,1>:D [698] UNTYPED_READ(8) %360<1>:UD : %359<8,8,1>:UD 0xfe:UD [700] ADD(8) %361<1>:F : %357<8,8,1>:F %360<8,8,1>:F [702] UNTYPED_READ(8) %362<1>:UD : %308<8,8,1>:UD 0xfe:UD [704] ADD(8) %363<1>:F : %352<8,8,1>:F %362<8,8,1>:F [706] UNTYPED_READ(8) %364<1>:UD : %326<8,8,1>:UD 0xfe:UD [708] ADD(8) %365<1>:F : %363<8,8,1>:F %364<8,8,1>:F [710] ADD(8) %366<1>:F : %362<8,8,1>:F %364<8,8,1>:F [712] ADD(8) %367<1>:D : %141<8,8,1>:D 73:D [714] MUL(8) %368<1>:UD : %367<8,8,1>:UD 0x4:UW [716] ADD(8) %369<1>:D : %53<0,1,0>:D %368<8,8,1>:D [718] UNTYPED_READ(8) %370<1>:UD : %369<8,8,1>:UD 0xfe:UD [720] ADD(8) %371<1>:F : %366<8,8,1>:F %370<8,8,1>:F [722] BARRIER(8) %1384<1>:F : %1383<8,8,1>:UD [724] UNTYPED_WRITE(8) : %294<8,8,1>:UD %334<8,8,1>:UD %336<8,8,1>:UD 0xfe:UD [726] UNTYPED_WRITE(8) : %314<8,8,1>:UD %346<8,8,1>:UD %348<8,8,1>:UD 0xfe:UD [728] UNTYPED_WRITE(8) : %298<8,8,1>:UD %356<8,8,1>:UD %365<8,8,1>:UD 0xfe:UD [730] UNTYPED_WRITE(8) : %318<8,8,1>:UD %361<8,8,1>:UD %371<8,8,1>:UD 0xfe:UD [732] BARRIER(8) %1382<1>:F : %1381<8,8,1>:UD [734] MUL(8) %372<1>:UD : %256<8,8,1>:UD 0x4:UW [736] ADD(8) %373<1>:D : %52<0,1,0>:D %372<8,8,1>:D [738] UNTYPED_READ(8) %374<1>:UD : %373<8,8,1>:UD 0xfe:UD [740] UNTYPED_READ(8) %375<1>:UD : %304<8,8,1>:UD 0xfe:UD [742] ADD(8) %376<1>:F : %374<8,8,1>:F %375<8,8,1>:F [744] UNTYPED_READ(8) %377<1>:UD : %345<8,8,1>:UD 0xfe:UD [746] ADD(8) %378<1>:F : %376<8,8,1>:F %377<8,8,1>:F [748] UNTYPED_READ(8) %379<1>:UD : %294<8,8,1>:UD 0xfe:UD [750] UNTYPED_READ(8) %380<1>:UD : %314<8,8,1>:UD 0xfe:UD [752] ADD(8) %381<1>:F : %379<8,8,1>:F %380<8,8,1>:F [754] MUL(8) %382<1>:UD : %199<8,8,1>:UD 0x4:UW [756] ADD(8) %383<1>:D : %52<0,1,0>:D %382<8,8,1>:D [758] UNTYPED_READ(8) %384<1>:UD : %383<8,8,1>:UD 0xfe:UD [760] ADD(8) %385<1>:F : %381<8,8,1>:F %384<8,8,1>:F [762] UNTYPED_READ(8) %386<1>:UD %387<1>:UD %388<1>:UD : %298<8,8,1>:UD 0xfe:UD [764] ADD(8) %389<1>:F : %386<8,8,1>:F %387<8,8,1>:F [766] ADD(8) %390<1>:F : %389<8,8,1>:F %388<8,8,1>:F [768] MUL(8) %391<1>:UD : %224<8,8,1>:UD 0x4:UW [770] ADD(8) %392<1>:D : %53<0,1,0>:D %391<8,8,1>:D [772] UNTYPED_READ(8) %393<1>:UD %394<1>:UD : %392<8,8,1>:UD 0xfe:UD [774] ADD(8) %395<1>:F : %393<8,8,1>:F %394<8,8,1>:F [776] MUL(8) %396<1>:UD : %232<8,8,1>:UD 0x4:UW [778] ADD(8) %397<1>:D : %53<0,1,0>:D %396<8,8,1>:D [780] UNTYPED_READ(8) %398<1>:UD : %397<8,8,1>:UD 0xfe:UD [782] ADD(8) %399<1>:F : %395<8,8,1>:F %398<8,8,1>:F [784] UNTYPED_READ(8) %400<1>:UD : %165<8,8,1>:UD 0xfe:UD [786] UNTYPED_READ(8) %401<1>:UD : %160<8,8,1>:UD 0xfe:UD [788] ADD(8) %402<1>:F : %400<8,8,1>:F %401<8,8,1>:F [790] UNTYPED_READ(8) %403<1>:UD : %258<8,8,1>:UD 0xfe:UD [792] UNTYPED_READ(8) %404<1>:UD : %264<8,8,1>:UD 0xfe:UD [794] ADD(8) %405<1>:F : %403<8,8,1>:F %404<8,8,1>:F [796] ADD(8) %406<1>:F : %378<8,8,1>:F -%390<8,8,1>:F [798] CMP.l(8) arf : (abs)%406<8,8,1>:F %45<0,1,0>:F [800](f408) MOV(8) %23<1>:UW : 0xd:UW [802] L10: [804] CMP.le(8) arf : %23<8,8,1>:UW 0xa:UW [806](f0.1) JMPI(1) : 0:D [808](f0.1) IF(8) : 0:D [810] CMP.g(8) arf : %378<8,8,1>:F %390<8,8,1>:F [812] MUL(8) %410<1>:UD : %141<8,8,1>:UD 0x4:UW [814] ADD(8) %411<1>:D : %54<0,1,0>:D %410<8,8,1>:D [816] UNTYPED_WRITE(8) : %411<8,8,1>:UD %400<8,8,1>:UD 0xfe:UD [818](f409) IF(8) : 0:D [820] L11: [822] MUL(8) %412<1>:F : %402<8,8,1>:F 0.5:F [824] MUL(8) %413<1>:UD : %153<8,8,1>:UD 0x4:UW [826] ADD(8) %414<1>:D : %54<0,1,0>:D %413<8,8,1>:D [828] UNTYPED_WRITE(8) : %414<8,8,1>:UD %412<8,8,1>:UD 0xfe:UD [830] L12: [832] ELSE(8) : 0:D [834] L74: [836] MUL(8) %415<1>:F : %405<8,8,1>:F 0.5:F [838] MUL(8) %416<1>:UD : %153<8,8,1>:UD 0x4:UW [840] ADD(8) %417<1>:D : %54<0,1,0>:D %416<8,8,1>:D [842] UNTYPED_WRITE(8) : %417<8,8,1>:UD %415<8,8,1>:UD 0xfe:UD [844] L73: [846] ENDIF(8) : 0:D [848] MOV(8) %23<1>:UW : 0xe:UW [850] L72: [852] ENDIF(8) : 0:D [854] L13: [856] CMP.le(8) arf : %23<8,8,1>:UW 0xd:UW [858](f0.1) IF(8) : 0:D [860] MUL(8) %418<1>:UD : %141<8,8,1>:UD 0x4:UW [862] ADD(8) %419<1>:D : %54<0,1,0>:D %418<8,8,1>:D [864] ADD(8) %420<1>:F : %402<8,8,1>:F %405<8,8,1>:F [866] MUL(8) %421<1>:F : %420<8,8,1>:F 0.25:F [868] UNTYPED_WRITE(8) : %419<8,8,1>:UD %400<8,8,1>:UD %421<8,8,1>:UD 0xfe:UD [870] L114: [872] ENDIF(8) : 0:D [874] L14: [876] CMP.le(8) arf : %23<8,8,1>:UW 0xe:UW [878](f0.1) IF(8) : 0:D [880] UNTYPED_READ(8) %422<1>:UD : %226<8,8,1>:UD 0xfe:UD [882] ADD(8) %423<1>:F : %422<8,8,1>:F %404<8,8,1>:F [884] UNTYPED_READ(8) %424<1>:UD : %201<8,8,1>:UD 0xfe:UD [886] ADD(8) %425<1>:F : %400<8,8,1>:F %424<8,8,1>:F [888] ADD(8) %426<1>:F : %385<8,8,1>:F -%399<8,8,1>:F [890] CMP.l(8) arf : (abs)%426<8,8,1>:F %45<0,1,0>:F [892](f428) IF(8) : 0:D [894] L15: [896] CMP.g(8) arf : %385<8,8,1>:F %399<8,8,1>:F [898](f429) IF(8) : 0:D [900] L16: [902] MUL(8) %430<1>:F : %423<8,8,1>:F 0.5:F [904] MUL(8) %431<1>:UD : %193<8,8,1>:UD 0x4:UW [906] ADD(8) %432<1>:D : %54<0,1,0>:D %431<8,8,1>:D [908] UNTYPED_WRITE(8) : %432<8,8,1>:UD %430<8,8,1>:UD %404<8,8,1>:UD 0xfe:UD [910] MOV(8) %441<1>:F : %432<8,8,1>:F [912] L17: [914] ELSE(8) : 0:D [916] L76: [918] MUL(8) %433<1>:F : %425<8,8,1>:F 0.5:F [920] MUL(8) %434<1>:UD : %193<8,8,1>:UD 0x4:UW [922] ADD(8) %435<1>:D : %54<0,1,0>:D %434<8,8,1>:D [924] UNTYPED_WRITE(8) : %435<8,8,1>:UD %433<8,8,1>:UD %404<8,8,1>:UD 0xfe:UD [926] MOV(8) %441<1>:F : %435<8,8,1>:F [928] L75: [930] ENDIF(8) : 0:D [932] L18: [934] ELSE(8) : 0:D [936] L98: [938] ADD(8) %436<1>:F : %423<8,8,1>:F %425<8,8,1>:F [940] MUL(8) %437<1>:F : %436<8,8,1>:F 0.25:F [942] MUL(8) %438<1>:UD : %193<8,8,1>:UD 0x4:UW [944] ADD(8) %441<1>:D : %54<0,1,0>:D %438<8,8,1>:D [946] UNTYPED_WRITE(8) : %441<8,8,1>:UD %437<8,8,1>:UD %404<8,8,1>:UD 0xfe:UD [948] L97: [950] ENDIF(8) : 0:D [952] L70: [954] ENDIF(8) : 0:D [956] L19: [958] CMP.le(8) arf : %23<8,8,1>:UW 0x13:UW [960](f0.1) MOV(8) %23<1>:UW : 0xffff:UW [962] CMP.eq(8) arf : %23<8,8,1>:UW 0xffff:UW [964](f0.1) JMPI(1) : 0:D [966](f0.1) MOV(8) %23<1>:UW : 0x13:UW [968] BARRIER(8) %1390<1>:F : %1389<8,8,1>:UD [970] MUL(8) %442<1>:UD : %141<8,8,1>:UD 0x4:UW [972] ADD(8) %443<1>:D : %54<0,1,0>:D %442<8,8,1>:D [974] UNTYPED_READ(8) %444<1>:UD %445<1>:UD : %443<8,8,1>:UD 0xfe:UD [976] MUL(8) %446<1>:UD : %187<8,8,1>:UD 0x4:UW [978] ADD(8) %447<1>:D : %54<0,1,0>:D %446<8,8,1>:D [980] UNTYPED_READ(8) %448<1>:UD : %447<8,8,1>:UD 0xfe:UD [982] ADD(8) %449<1>:F : -%448<8,8,1>:F -0:F [984] MOV(1) %1113<0>:F : 2:F [986] MAD(8) %450<1>:F : %449<8,8,1>:F %444<8,8,1>:F %1113<0,1,0>:F [988] UNTYPED_READ(8) %451<1>:UD : %441<8,8,1>:UD 0xfe:UD [990] ADD(8) %452<1>:F : %450<8,8,1>:F -%451<8,8,1>:F [992] UNTYPED_READ(8) %453<1>:UD : %189<8,8,1>:UD 0xfe:UD [994] UNTYPED_READ(8) %454<1>:UD : %195<8,8,1>:UD 0xfe:UD [996] ADD(8) %455<1>:F : %453<8,8,1>:F %454<8,8,1>:F [998] ADD(8) %456<1>:F : %452<8,8,1>:F %455<8,8,1>:F [1000] MUL(8) %457<1>:UD : %262<8,8,1>:UD 0x4:UW [1002] ADD(8) %458<1>:D : %54<0,1,0>:D %457<8,8,1>:D [1004] UNTYPED_READ(8) %459<1>:UD : %458<8,8,1>:UD 0xfe:UD [1006] ADD(8) %460<1>:F : -%445<8,8,1>:F -0:F [1008] MAD(8) %461<1>:F : %460<8,8,1>:F %459<8,8,1>:F %1113<0,1,0>:F [1010] MUL(8) %462<1>:UD : %266<8,8,1>:UD 0x4:UW [1012] ADD(8) %463<1>:D : %54<0,1,0>:D %462<8,8,1>:D [1014] UNTYPED_READ(8) %464<1>:UD : %463<8,8,1>:UD 0xfe:UD [1016] ADD(8) %465<1>:F : %461<8,8,1>:F -%464<8,8,1>:F [1018] UNTYPED_READ(8) %466<1>:UD : %155<8,8,1>:UD 0xfe:UD [1020] UNTYPED_READ(8) %467<1>:UD : %268<8,8,1>:UD 0xfe:UD [1022] ADD(8) %468<1>:F : %466<8,8,1>:F %467<8,8,1>:F [1024] ADD(8) %469<1>:F : %465<8,8,1>:F %468<8,8,1>:F [1026] MUL(8) %470<1>:F : %456<8,8,1>:F 0.5:F [1028] MUL(8) %471<1>:F : %469<8,8,1>:F 0.5:F [1030] SEL_CMP(8) %472<1>:F : %470<8,8,1>:F 0:F [1032] SEL_CMP(8) %473<1>:F : %471<8,8,1>:F 0:F [1034] ADD(8) %474<1>:D : %141<8,8,1>:D -34:D [1036] MUL(8) %475<1>:UD : %474<8,8,1>:UD 0x4:UW [1038] ADD(8) %476<1>:D : %51<0,1,0>:D %475<8,8,1>:D [1040] UNTYPED_READ(8) %477<1>:UD : %476<8,8,1>:UD 0xfe:UD [1042] ADD(8) %478<1>:F : %453<8,8,1>:F %477<8,8,1>:F [1044] ADD(8) %479<1>:F : %454<8,8,1>:F %478<8,8,1>:F [1046] UNTYPED_READ(8) %480<1>:UD : %234<8,8,1>:UD 0xfe:UD [1048] ADD(8) %481<1>:F : %480<8,8,1>:F %479<8,8,1>:F [1050] UNTYPED_READ(8) %482<1>:UD : %150<8,8,1>:UD 0xfe:UD [1052] ADD(8) %483<1>:F : %466<8,8,1>:F %482<8,8,1>:F [1054] ADD(8) %484<1>:D : %141<8,8,1>:D 71:D [1056] MUL(8) %485<1>:UD : %484<8,8,1>:UD 0x4:UW [1058] ADD(8) %486<1>:D : %51<0,1,0>:D %485<8,8,1>:D [1060] UNTYPED_READ(8) %487<1>:UD : %486<8,8,1>:UD 0xfe:UD [1062] ADD(8) %488<1>:F : %483<8,8,1>:F %487<8,8,1>:F [1064] ADD(8) %489<1>:F : %488<8,8,1>:F %467<8,8,1>:F [1066] MUL(8) %490<1>:F : %481<8,8,1>:F 0.25:F [1068] MUL(8) %491<1>:F : %489<8,8,1>:F 0.25:F [1070] ADD(8) %492<1>:F : -%444<8,8,1>:F -0:F [1072] MAD(8) %493<1>:F : %492<8,8,1>:F %1113<0,1,0>:F %445<8,8,1>:F [1074] MUL(8) %494<1>:UD : %158<8,8,1>:UD 0x4:UW [1076] ADD(8) %495<1>:D : %54<0,1,0>:D %494<8,8,1>:D [1078] UNTYPED_READ(8) %496<1>:UD : %495<8,8,1>:UD 0xfe:UD [1080] ADD(8) %497<1>:F : %493<8,8,1>:F -%496<8,8,1>:F [1082] MUL(8) %498<1>:UD : %224<8,8,1>:UD 0x4:UW [1084] ADD(8) %499<1>:D : %54<0,1,0>:D %498<8,8,1>:D [1086] UNTYPED_READ(8) %500<1>:UD : %499<8,8,1>:UD 0xfe:UD [1088] ADD(8) %501<1>:F : -%500<8,8,1>:F -0:F [1090] MAD(8) %502<1>:F : %501<8,8,1>:F %1113<0,1,0>:F %451<8,8,1>:F [1092] ADD(8) %503<1>:F : %502<8,8,1>:F -%459<8,8,1>:F [1094] MUL(8) %504<1>:UD : %256<8,8,1>:UD 0x4:UW [1096] ADD(8) %505<1>:D : %54<0,1,0>:D %504<8,8,1>:D [1098] UNTYPED_READ(8) %506<1>:UD : %505<8,8,1>:UD 0xfe:UD [1100] ADD(8) %507<1>:F : -%506<8,8,1>:F -0:F [1102] MAD(8) %508<1>:F : %507<8,8,1>:F %1113<0,1,0>:F %445<8,8,1>:F [1104] ADD(8) %509<1>:F : %508<8,8,1>:F -%459<8,8,1>:F [1106] MAD(8) %510<1>:F : %492<8,8,1>:F %1113<0,1,0>:F %451<8,8,1>:F [1108] MUL(8) %511<1>:UD : %199<8,8,1>:UD 0x4:UW [1110] ADD(8) %512<1>:D : %54<0,1,0>:D %511<8,8,1>:D [1112] UNTYPED_READ(8) %513<1>:UD : %512<8,8,1>:UD 0xfe:UD [1114] ADD(8) %514<1>:F : %510<8,8,1>:F -%513<8,8,1>:F [1116] UNTYPED_READ(8) %515<1>:UD : %373<8,8,1>:UD 0xfe:UD [1118] UNTYPED_READ(8) %516<1>:UD : %304<8,8,1>:UD 0xfe:UD [1120] ADD(8) %517<1>:F : %515<8,8,1>:F %516<8,8,1>:F [1122] UNTYPED_READ(8) %518<1>:UD : %345<8,8,1>:UD 0xfe:UD [1124] ADD(8) %519<1>:F : %517<8,8,1>:F %518<8,8,1>:F [1126] UNTYPED_READ(8) %520<1>:UD %521<1>:UD %522<1>:UD : %298<8,8,1>:UD 0xfe:UD [1128] ADD(8) %523<1>:F : %520<8,8,1>:F %521<8,8,1>:F [1130] ADD(8) %524<1>:F : %523<8,8,1>:F %522<8,8,1>:F [1132] ADD(8) %525<1>:F : %519<8,8,1>:F -%524<8,8,1>:F [1134] CMP.l(8) arf : (abs)%525<8,8,1>:F %45<0,1,0>:F [1136](f527) MOV(8) %23<1>:UW : 0x17:UW [1138] L20: [1140] CMP.le(8) arf : %23<8,8,1>:UW 0x14:UW [1142](f0.1) JMPI(1) : 0:D [1144](f0.1) IF(8) : 0:D [1146] CMP.g(8) arf : %519<8,8,1>:F %524<8,8,1>:F [1148](f528) IF(8) : 0:D [1150] L21: [1152] MUL(8) %529<1>:F : %509<8,8,1>:F 0.5:F [1154] ADD(8) %530<1>:F : %490<8,8,1>:F %529<8,8,1>:F [1156] MOV(8) %537<1>:F : %530<8,8,1>:F [1158] L22: [1160] ELSE(8) : 0:D [1162] L78: [1164] MUL(8) %531<1>:F : %497<8,8,1>:F 0.5:F [1166] ADD(8) %532<1>:F : %531<8,8,1>:F %490<8,8,1>:F [1168] MOV(8) %537<1>:F : %532<8,8,1>:F [1170] L77: [1172] ENDIF(8) : 0:D [1174] MOV(8) %23<1>:UW : 0x18:UW [1176] L71: [1178] ENDIF(8) : 0:D [1180] L23: [1182] CMP.le(8) arf : %23<8,8,1>:UW 0x17:UW [1184](f0.1) IF(8) : 0:D [1186] ADD(8) %533<1>:F : %497<8,8,1>:F %509<8,8,1>:F [1188] MUL(8) %534<1>:F : %533<8,8,1>:F 0.25:F [1190] ADD(8) %537<1>:F : %490<8,8,1>:F %534<8,8,1>:F [1192] L115: [1194] ENDIF(8) : 0:D [1196] L24: [1198] CMP.le(8) arf : %23<8,8,1>:UW 0x18:UW [1200](f0.1) IF(8) : 0:D [1202] UNTYPED_READ(8) %538<1>:UD : %294<8,8,1>:UD 0xfe:UD [1204] UNTYPED_READ(8) %539<1>:UD : %314<8,8,1>:UD 0xfe:UD [1206] ADD(8) %540<1>:F : %538<8,8,1>:F %539<8,8,1>:F [1208] UNTYPED_READ(8) %541<1>:UD : %383<8,8,1>:UD 0xfe:UD [1210] ADD(8) %542<1>:F : %540<8,8,1>:F %541<8,8,1>:F [1212] UNTYPED_READ(8) %543<1>:UD %544<1>:UD : %392<8,8,1>:UD 0xfe:UD [1214] ADD(8) %545<1>:F : %543<8,8,1>:F %544<8,8,1>:F [1216] UNTYPED_READ(8) %546<1>:UD : %397<8,8,1>:UD 0xfe:UD [1218] ADD(8) %547<1>:F : %545<8,8,1>:F %546<8,8,1>:F [1220] ADD(8) %548<1>:F : %542<8,8,1>:F -%547<8,8,1>:F [1222] CMP.l(8) arf : (abs)%548<8,8,1>:F %45<0,1,0>:F [1224](f550) IF(8) : 0:D [1226] L25: [1228] CMP.g(8) arf : %542<8,8,1>:F %547<8,8,1>:F [1230](f551) IF(8) : 0:D [1232] L26: [1234] MUL(8) %552<1>:F : %514<8,8,1>:F 0.5:F [1236] MOV(8) %557<1>:F : %552<8,8,1>:F [1238] L27: [1240] ELSE(8) : 0:D [1242] L80: [1244] MUL(8) %553<1>:F : %503<8,8,1>:F 0.5:F [1246] MOV(8) %557<1>:F : %553<8,8,1>:F [1248] L79: [1250] ENDIF(8) : 0:D [1252] L28: [1254] ELSE(8) : 0:D [1256] L100: [1258] ADD(8) %554<1>:F : %503<8,8,1>:F %514<8,8,1>:F [1260] MUL(8) %557<1>:F : %554<8,8,1>:F 0.25:F [1262] L99: [1264] ENDIF(8) : 0:D [1266] L69: [1268] ENDIF(8) : 0:D [1270] L29: [1272] CMP.le(8) arf : %23<8,8,1>:UW 0x1d:UW [1274](f0.1) MOV(8) %23<1>:UW : 0xffff:UW [1276] CMP.eq(8) arf : %23<8,8,1>:UW 0xffff:UW [1278](f0.1) JMPI(1) : 0:D [1280](f0.1) MOV(8) %23<1>:UW : 0x1d:UW [1282] ADD(8) %558<1>:F : %557<8,8,1>:F %491<8,8,1>:F [1284] SEL_CMP(8) %559<1>:F : %537<8,8,1>:F 0:F [1286] SEL_CMP(8) %560<1>:F : %558<8,8,1>:F 0:F [1288] ADD(8) %561<1>:F : -%451<8,8,1>:F -0:F [1290] MOV(1) %1204<0>:F : 2:F [1292] MAD(8) %562<1>:F : %561<8,8,1>:F %459<8,8,1>:F %1204<0,1,0>:F [1294] MUL(8) %563<1>:UD : %232<8,8,1>:UD 0x4:UW [1296] ADD(8) %564<1>:D : %54<0,1,0>:D %563<8,8,1>:D [1298] UNTYPED_READ(8) %565<1>:UD : %564<8,8,1>:UD 0xfe:UD [1300] ADD(8) %566<1>:F : %562<8,8,1>:F -%565<8,8,1>:F [1302] ADD(8) %567<1>:F : %454<8,8,1>:F %480<8,8,1>:F [1304] ADD(8) %568<1>:F : %566<8,8,1>:F %567<8,8,1>:F [1306] MUL(8) %569<1>:UD : %148<8,8,1>:UD 0x4:UW [1308] ADD(8) %570<1>:D : %54<0,1,0>:D %569<8,8,1>:D [1310] UNTYPED_READ(8) %571<1>:UD : %570<8,8,1>:UD 0xfe:UD [1312] ADD(8) %572<1>:F : -%571<8,8,1>:F -0:F [1314] MAD(8) %573<1>:F : %572<8,8,1>:F %444<8,8,1>:F %1204<0,1,0>:F [1316] ADD(8) %574<1>:F : %573<8,8,1>:F -%445<8,8,1>:F [1318] ADD(8) %575<1>:F : %574<8,8,1>:F %483<8,8,1>:F [1320] MUL(8) %576<1>:F : %568<8,8,1>:F 0.5:F [1322] MUL(8) %577<1>:F : %575<8,8,1>:F 0.5:F [1324] SEL_CMP(8) %578<1>:F : %576<8,8,1>:F 0:F [1326] SEL_CMP(8) %579<1>:F : %577<8,8,1>:F 0:F [1328] BARRIER(8) %1394<1>:F : %1393<8,8,1>:UD [1330] UNTYPED_WRITE(8) : %294<8,8,1>:UD %579<8,8,1>:UD 0xfe:UD [1332] UNTYPED_READ(8) %580<1>:UD : %155<8,8,1>:UD 0xfe:UD [1334] UNTYPED_WRITE(8) : %304<8,8,1>:UD %580<8,8,1>:UD 0xfe:UD [1336] UNTYPED_WRITE(8) : %314<8,8,1>:UD %560<8,8,1>:UD %473<8,8,1>:UD 0xfe:UD [1338] UNTYPED_WRITE(8) : %298<8,8,1>:UD %472<8,8,1>:UD %559<8,8,1>:UD 0xfe:UD [1340] UNTYPED_READ(8) %581<1>:UD : %195<8,8,1>:UD 0xfe:UD [1342] UNTYPED_WRITE(8) : %318<8,8,1>:UD %581<8,8,1>:UD %578<8,8,1>:UD 0xfe:UD [1344] BARRIER(8) %1392<1>:F : %1391<8,8,1>:UD [1346] ADD(1) %582<0>:D : %61<0,1,0>:D 26:D [1348] SEL_CMP(1) %584<0>:D : %582<0,1,0>:D %47<0,1,0>:D [1350] ADD(1) %585<0>:D : %64<0,1,0>:D 26:D [1352] SEL_CMP(1) %587<0>:D : %585<0,1,0>:D %47<0,1,0>:D [1354] ADD(8) %588<1>:D : %136<8,8,1>:D -3:D [1356] ADD(8) %589<1>:D : %588<8,8,1>:D %61<0,1,0>:D [1358] ADD(8) %590<1>:D : %138<8,8,1>:D -3:D [1360] ADD(8) %591<1>:D : %590<8,8,1>:D %64<0,1,0>:D [1362] CMP.eq(8) arf : %50<0,1,0>:D 0:D [1364](f592) MOV(8) %23<1>:UW : 0x2e:UW [1366] L30: [1368] CMP.le(8) arf : %23<8,8,1>:UW 0x1e:UW [1370](f0.1) JMPI(1) : 0:D [1372](f0.1) IF(8) : 0:D [1374] SHL(1) %593<0>:D : %48<0,1,0>:D 1:D [1376] CMP.ge(8) arf : %589<8,8,1>:D %61<0,1,0>:D [1378] CMP.l(8) arf : %589<8,8,1>:D %584<0,1,0>:D [1380] AND(8) %596<1>:W : %594<8,8,1>:W %595<8,8,1>:W [1382](f596) IF(8) : 0:D [1384] L31: [1386] L32: [1388] ELSE(8) : 0:D [1390] L103: [1392] CMP.ge(8) arf : %591<8,8,1>:D %64<0,1,0>:D [1394] CMP.l(8) arf : %591<8,8,1>:D %587<0,1,0>:D [1396] AND(8) %599<1>:W : %597<8,8,1>:W %598<8,8,1>:W [1398](f599) IF(8) : 0:D [1400] L33: [1402] L34: [1404] ELSE(8) : 0:D [1406] L82: [1408] UNTYPED_READ(8) %600<1>:UD : %294<8,8,1>:UD 0xfe:UD [1410] MUL(8) %601<1>:F : %600<8,8,1>:F 16383:F [1412] MOV(8) %1400<2>:UW : %601<8,8,1>:F [1414] MOV(8) %602<1>:UW : %1400<16,8,2>:UW [1416] MUL(8) arf : %591<8,8,1>:D %47<0,1,0>:D [1418] MACH(8) arf : %591<8,8,1>:D %47<0,1,0>:D [1420] MOV(8) %603<1>:F : arf [1422] ADD(8) %604<1>:D : %603<8,8,1>:D %589<8,8,1>:D [1424] MUL(8) %605<1>:UD : %604<8,8,1>:UD 0x2:UW [1426] ADD(8) %606<1>:D : %41<0,1,0>:D %605<8,8,1>:D [1428] ADD(8) %1243<1>:UD : %606<8,8,1>:UD -%41<0,1,0>:UD [1430] MOV(8) %1399<1>:UD : %602<8,8,1>:UW [1432] BYTE_SCATTER(8) : %1243<8,8,1>:UD %1399<8,8,1>:UD 0x2:UD [1434] UNTYPED_READ(8) %607<1>:UD : %443<8,8,1>:UD 0xfe:UD [1436] MUL(8) %608<1>:F : %607<8,8,1>:F 16383:F [1438] MOV(8) %1398<2>:UW : %608<8,8,1>:F [1440] MOV(8) %609<1>:UW : %1398<16,8,2>:UW [1442] ADD(8) %610<1>:D : %604<8,8,1>:D %48<0,1,0>:D [1444] MUL(8) %611<1>:UD : %610<8,8,1>:UD 0x2:UW [1446] ADD(8) %612<1>:D : %41<0,1,0>:D %611<8,8,1>:D [1448] ADD(8) %1248<1>:UD : %612<8,8,1>:UD -%41<0,1,0>:UD [1450] MOV(8) %1397<1>:UD : %609<8,8,1>:UW [1452] BYTE_SCATTER(8) : %1248<8,8,1>:UD %1397<8,8,1>:UD 0x2:UD [1454] UNTYPED_READ(8) %613<1>:UD : %298<8,8,1>:UD 0xfe:UD [1456] MUL(8) %614<1>:F : %613<8,8,1>:F 16383:F [1458] MOV(8) %1396<2>:UW : %614<8,8,1>:F [1460] MOV(8) %615<1>:UW : %1396<16,8,2>:UW [1462] ADD(8) %616<1>:D : %604<8,8,1>:D %593<0,1,0>:D [1464] MUL(8) %617<1>:UD : %616<8,8,1>:UD 0x2:UW [1466] ADD(8) %618<1>:D : %41<0,1,0>:D %617<8,8,1>:D [1468] ADD(8) %1253<1>:UD : %618<8,8,1>:UD -%41<0,1,0>:UD [1470] MOV(8) %1395<1>:UD : %615<8,8,1>:UW [1472] BYTE_SCATTER(8) : %1253<8,8,1>:UD %1395<8,8,1>:UD 0x2:UD [1474] L81: [1476] ENDIF(8) : 0:D [1478] L35: [1480] ADD(8) %619<1>:D : %591<8,8,1>:D 1:D [1482] CMP.ge(8) arf : %619<8,8,1>:D %64<0,1,0>:D [1484] CMP.l(8) arf : %619<8,8,1>:D %587<0,1,0>:D [1486] AND(8) %622<1>:W : %620<8,8,1>:W %621<8,8,1>:W [1488](f622) IF(8) : 0:D [1490] L36: [1492] L37: [1494] ELSE(8) : 0:D [1496] L84: [1498] ADD(8) %623<1>:D : %139<8,8,1>:D 108:D [1500] ADD(8) %624<1>:D : %137<8,8,1>:D %623<8,8,1>:D [1502] MUL(8) %625<1>:UD : %624<8,8,1>:UD 0x4:UW [1504] ADD(8) %626<1>:D : %52<0,1,0>:D %625<8,8,1>:D [1506] UNTYPED_READ(8) %627<1>:UD : %626<8,8,1>:UD 0xfe:UD [1508] MUL(8) %628<1>:F : %627<8,8,1>:F 16383:F [1510] MOV(8) %1406<2>:UW : %628<8,8,1>:F [1512] MOV(8) %629<1>:UW : %1406<16,8,2>:UW [1514] MUL(8) arf : %619<8,8,1>:D %47<0,1,0>:D [1516] MACH(8) arf : %619<8,8,1>:D %47<0,1,0>:D [1518] MOV(8) %630<1>:F : arf [1520] ADD(8) %631<1>:D : %630<8,8,1>:D %589<8,8,1>:D [1522] MUL(8) %632<1>:UD : %631<8,8,1>:UD 0x2:UW [1524] ADD(8) %633<1>:D : %41<0,1,0>:D %632<8,8,1>:D [1526] ADD(8) %1261<1>:UD : %633<8,8,1>:UD -%41<0,1,0>:UD [1528] MOV(8) %1405<1>:UD : %629<8,8,1>:UW [1530] BYTE_SCATTER(8) : %1261<8,8,1>:UD %1405<8,8,1>:UD 0x2:UD [1532] MUL(8) %634<1>:UD : %624<8,8,1>:UD 0x4:UW [1534] ADD(8) %635<1>:D : %54<0,1,0>:D %634<8,8,1>:D [1536] UNTYPED_READ(8) %636<1>:UD : %635<8,8,1>:UD 0xfe:UD [1538] MUL(8) %637<1>:F : %636<8,8,1>:F 16383:F [1540] MOV(8) %1404<2>:UW : %637<8,8,1>:F [1542] MOV(8) %638<1>:UW : %1404<16,8,2>:UW [1544] ADD(8) %639<1>:D : %631<8,8,1>:D %48<0,1,0>:D [1546] MUL(8) %640<1>:UD : %639<8,8,1>:UD 0x2:UW [1548] ADD(8) %641<1>:D : %41<0,1,0>:D %640<8,8,1>:D [1550] ADD(8) %1267<1>:UD : %641<8,8,1>:UD -%41<0,1,0>:UD [1552] MOV(8) %1403<1>:UD : %638<8,8,1>:UW [1554] BYTE_SCATTER(8) : %1267<8,8,1>:UD %1403<8,8,1>:UD 0x2:UD [1556] MUL(8) %642<1>:UD : %624<8,8,1>:UD 0x4:UW [1558] ADD(8) %643<1>:D : %53<0,1,0>:D %642<8,8,1>:D [1560] UNTYPED_READ(8) %644<1>:UD : %643<8,8,1>:UD 0xfe:UD [1562] MUL(8) %645<1>:F : %644<8,8,1>:F 16383:F [1564] MOV(8) %1402<2>:UW : %645<8,8,1>:F [1566] MOV(8) %646<1>:UW : %1402<16,8,2>:UW [1568] ADD(8) %647<1>:D : %631<8,8,1>:D %593<0,1,0>:D [1570] MUL(8) %648<1>:UD : %647<8,8,1>:UD 0x2:UW [1572] ADD(8) %649<1>:D : %41<0,1,0>:D %648<8,8,1>:D [1574] ADD(8) %1273<1>:UD : %649<8,8,1>:UD -%41<0,1,0>:UD [1576] MOV(8) %1401<1>:UD : %646<8,8,1>:UW [1578] BYTE_SCATTER(8) : %1273<8,8,1>:UD %1401<8,8,1>:UD 0x2:UD [1580] L83: [1582] ENDIF(8) : 0:D [1584] L102: [1586] ENDIF(8) : 0:D [1588] L68: [1590] ENDIF(8) : 0:D [1592] L38: [1594] CMP.le(8) arf : %23<8,8,1>:UW 0x26:UW [1596](f0.1) JMPI(1) : 0:D [1598](f0.1) IF(8) : 0:D [1600] ADD(8) %650<1>:D : %589<8,8,1>:D 1:D [1602] CMP.ge(8) arf : %650<8,8,1>:D %61<0,1,0>:D [1604] CMP.l(8) arf : %650<8,8,1>:D %584<0,1,0>:D [1606] AND(8) %653<1>:W : %651<8,8,1>:W %652<8,8,1>:W [1608] ADD(8) %654<1>:D : %136<8,8,1>:D 3:D [1610](f653) IF(8) : 0:D [1612] L39: [1614] L40: [1616] ELSE(8) : 0:D [1618] L105: [1620] CMP.ge(8) arf : %591<8,8,1>:D %64<0,1,0>:D [1622] CMP.l(8) arf : %591<8,8,1>:D %587<0,1,0>:D [1624] AND(8) %657<1>:W : %655<8,8,1>:W %656<8,8,1>:W [1626](f657) IF(8) : 0:D [1628] L41: [1630] L42: [1632] ELSE(8) : 0:D [1634] L86: [1636] ADD(8) %658<1>:D : %654<8,8,1>:D %140<8,8,1>:D [1638] MUL(8) %659<1>:UD : %658<8,8,1>:UD 0x4:UW [1640] ADD(8) %660<1>:D : %52<0,1,0>:D %659<8,8,1>:D [1642] UNTYPED_READ(8) %661<1>:UD : %660<8,8,1>:UD 0xfe:UD [1644] MUL(8) %662<1>:F : %661<8,8,1>:F 16383:F [1646] MOV(8) %1412<2>:UW : %662<8,8,1>:F [1648] MOV(8) %663<1>:UW : %1412<16,8,2>:UW [1650] MUL(8) arf : %591<8,8,1>:D %47<0,1,0>:D [1652] MACH(8) arf : %591<8,8,1>:D %47<0,1,0>:D [1654] MOV(8) %664<1>:F : arf [1656] ADD(8) %665<1>:D : %664<8,8,1>:D %650<8,8,1>:D [1658] MUL(8) %666<1>:UD : %665<8,8,1>:UD 0x2:UW [1660] ADD(8) %667<1>:D : %41<0,1,0>:D %666<8,8,1>:D [1662] ADD(8) %1281<1>:UD : %667<8,8,1>:UD -%41<0,1,0>:UD [1664] MOV(8) %1411<1>:UD : %663<8,8,1>:UW [1666] BYTE_SCATTER(8) : %1281<8,8,1>:UD %1411<8,8,1>:UD 0x2:UD [1668] MUL(8) %668<1>:UD : %658<8,8,1>:UD 0x4:UW [1670] ADD(8) %669<1>:D : %54<0,1,0>:D %668<8,8,1>:D [1672] UNTYPED_READ(8) %670<1>:UD : %669<8,8,1>:UD 0xfe:UD [1674] MUL(8) %671<1>:F : %670<8,8,1>:F 16383:F [1676] MOV(8) %1410<2>:UW : %671<8,8,1>:F [1678] MOV(8) %672<1>:UW : %1410<16,8,2>:UW [1680] ADD(8) %673<1>:D : %665<8,8,1>:D %48<0,1,0>:D [1682] MUL(8) %674<1>:UD : %673<8,8,1>:UD 0x2:UW [1684] ADD(8) %675<1>:D : %41<0,1,0>:D %674<8,8,1>:D [1686] ADD(8) %1287<1>:UD : %675<8,8,1>:UD -%41<0,1,0>:UD [1688] MOV(8) %1409<1>:UD : %672<8,8,1>:UW [1690] BYTE_SCATTER(8) : %1287<8,8,1>:UD %1409<8,8,1>:UD 0x2:UD [1692] MUL(8) %676<1>:UD : %658<8,8,1>:UD 0x4:UW [1694] ADD(8) %677<1>:D : %53<0,1,0>:D %676<8,8,1>:D [1696] UNTYPED_READ(8) %678<1>:UD : %677<8,8,1>:UD 0xfe:UD [1698] MUL(8) %679<1>:F : %678<8,8,1>:F 16383:F [1700] MOV(8) %1408<2>:UW : %679<8,8,1>:F [1702] MOV(8) %680<1>:UW : %1408<16,8,2>:UW [1704] ADD(8) %681<1>:D : %665<8,8,1>:D %593<0,1,0>:D [1706] MUL(8) %682<1>:UD : %681<8,8,1>:UD 0x2:UW [1708] ADD(8) %683<1>:D : %41<0,1,0>:D %682<8,8,1>:D [1710] ADD(8) %1293<1>:UD : %683<8,8,1>:UD -%41<0,1,0>:UD [1712] MOV(8) %1407<1>:UD : %680<8,8,1>:UW [1714] BYTE_SCATTER(8) : %1293<8,8,1>:UD %1407<8,8,1>:UD 0x2:UD [1716] L85: [1718] ENDIF(8) : 0:D [1720] L43: [1722] ADD(8) %684<1>:D : %591<8,8,1>:D 1:D [1724] CMP.ge(8) arf : %684<8,8,1>:D %64<0,1,0>:D [1726] CMP.l(8) arf : %684<8,8,1>:D %587<0,1,0>:D [1728] AND(8) %687<1>:W : %685<8,8,1>:W %686<8,8,1>:W [1730](f687) IF(8) : 0:D [1732] L44: [1734] L45: [1736] ELSE(8) : 0:D [1738] L88: [1740] ADD(8) %688<1>:D : %139<8,8,1>:D 108:D [1742] ADD(8) %689<1>:D : %654<8,8,1>:D %688<8,8,1>:D [1744] MUL(8) %690<1>:UD : %689<8,8,1>:UD 0x4:UW [1746] ADD(8) %691<1>:D : %52<0,1,0>:D %690<8,8,1>:D [1748] UNTYPED_READ(8) %692<1>:UD : %691<8,8,1>:UD 0xfe:UD [1750] MUL(8) %693<1>:F : %692<8,8,1>:F 16383:F [1752] MOV(8) %1418<2>:UW : %693<8,8,1>:F [1754] MOV(8) %694<1>:UW : %1418<16,8,2>:UW [1756] MUL(8) arf : %684<8,8,1>:D %47<0,1,0>:D [1758] MACH(8) arf : %684<8,8,1>:D %47<0,1,0>:D [1760] MOV(8) %695<1>:F : arf [1762] ADD(8) %696<1>:D : %695<8,8,1>:D %650<8,8,1>:D [1764] MUL(8) %697<1>:UD : %696<8,8,1>:UD 0x2:UW [1766] ADD(8) %698<1>:D : %41<0,1,0>:D %697<8,8,1>:D [1768] ADD(8) %1301<1>:UD : %698<8,8,1>:UD -%41<0,1,0>:UD [1770] MOV(8) %1417<1>:UD : %694<8,8,1>:UW [1772] BYTE_SCATTER(8) : %1301<8,8,1>:UD %1417<8,8,1>:UD 0x2:UD [1774] MUL(8) %699<1>:UD : %689<8,8,1>:UD 0x4:UW [1776] ADD(8) %700<1>:D : %54<0,1,0>:D %699<8,8,1>:D [1778] UNTYPED_READ(8) %701<1>:UD : %700<8,8,1>:UD 0xfe:UD [1780] MUL(8) %702<1>:F : %701<8,8,1>:F 16383:F [1782] MOV(8) %1416<2>:UW : %702<8,8,1>:F [1784] MOV(8) %703<1>:UW : %1416<16,8,2>:UW [1786] ADD(8) %704<1>:D : %696<8,8,1>:D %48<0,1,0>:D [1788] MUL(8) %705<1>:UD : %704<8,8,1>:UD 0x2:UW [1790] ADD(8) %706<1>:D : %41<0,1,0>:D %705<8,8,1>:D [1792] ADD(8) %1307<1>:UD : %706<8,8,1>:UD -%41<0,1,0>:UD [1794] MOV(8) %1415<1>:UD : %703<8,8,1>:UW [1796] BYTE_SCATTER(8) : %1307<8,8,1>:UD %1415<8,8,1>:UD 0x2:UD [1798] MUL(8) %707<1>:UD : %689<8,8,1>:UD 0x4:UW [1800] ADD(8) %708<1>:D : %53<0,1,0>:D %707<8,8,1>:D [1802] UNTYPED_READ(8) %709<1>:UD : %708<8,8,1>:UD 0xfe:UD [1804] MUL(8) %710<1>:F : %709<8,8,1>:F 16383:F [1806] MOV(8) %1414<2>:UW : %710<8,8,1>:F [1808] MOV(8) %711<1>:UW : %1414<16,8,2>:UW [1810] ADD(8) %712<1>:D : %696<8,8,1>:D %593<0,1,0>:D [1812] MUL(8) %713<1>:UD : %712<8,8,1>:UD 0x2:UW [1814] ADD(8) %714<1>:D : %41<0,1,0>:D %713<8,8,1>:D [1816] ADD(8) %1313<1>:UD : %714<8,8,1>:UD -%41<0,1,0>:UD [1818] MOV(8) %1413<1>:UD : %711<8,8,1>:UW [1820] BYTE_SCATTER(8) : %1313<8,8,1>:UD %1413<8,8,1>:UD 0x2:UD [1822] L87: [1824] ENDIF(8) : 0:D [1826] L104: [1828] ENDIF(8) : 0:D [1830] MOV(8) %23<1>:UW : 0x3e:UW [1832] L67: [1834] ENDIF(8) : 0:D [1836] L46: [1838] CMP.le(8) arf : %23<8,8,1>:UW 0x2e:UW [1840](f0.1) JMPI(1) : 0:D [1842](f0.1) IF(8) : 0:D [1844] SHL(1) %715<0>:D : %48<0,1,0>:D 1:D [1846] CMP.ge(8) arf : %589<8,8,1>:D %61<0,1,0>:D [1848] CMP.l(8) arf : %589<8,8,1>:D %584<0,1,0>:D [1850] AND(8) %718<1>:W : %716<8,8,1>:W %717<8,8,1>:W [1852](f718) IF(8) : 0:D [1854] L47: [1856] L48: [1858] ELSE(8) : 0:D [1860] L107: [1862] CMP.ge(8) arf : %591<8,8,1>:D %64<0,1,0>:D [1864] CMP.l(8) arf : %591<8,8,1>:D %587<0,1,0>:D [1866] AND(8) %721<1>:W : %719<8,8,1>:W %720<8,8,1>:W [1868](f721) IF(8) : 0:D [1870] L49: [1872] L50: [1874] ELSE(8) : 0:D [1876] L90: [1878] UNTYPED_READ(8) %722<1>:UD : %294<8,8,1>:UD 0xfe:UD [1880] MUL(8) arf : %591<8,8,1>:D %47<0,1,0>:D [1882] MACH(8) arf : %591<8,8,1>:D %47<0,1,0>:D [1884] MOV(8) %723<1>:F : arf [1886] ADD(8) %724<1>:D : %723<8,8,1>:D %589<8,8,1>:D [1888] MUL(8) %725<1>:UD : %724<8,8,1>:UD 0x4:UW [1890] ADD(8) %726<1>:D : %41<0,1,0>:D %725<8,8,1>:D [1892] ADD(8) %1318<1>:UD : %726<8,8,1>:UD -%41<0,1,0>:UD [1894] UNTYPED_WRITE(8) : %1318<8,8,1>:UD %722<8,8,1>:UD 0x2:UD [1896] UNTYPED_READ(8) %727<1>:UD : %443<8,8,1>:UD 0xfe:UD [1898] ADD(8) %728<1>:D : %724<8,8,1>:D %48<0,1,0>:D [1900] MUL(8) %729<1>:UD : %728<8,8,1>:UD 0x4:UW [1902] ADD(8) %730<1>:D : %41<0,1,0>:D %729<8,8,1>:D [1904] ADD(8) %1322<1>:UD : %730<8,8,1>:UD -%41<0,1,0>:UD [1906] UNTYPED_WRITE(8) : %1322<8,8,1>:UD %727<8,8,1>:UD 0x2:UD [1908] UNTYPED_READ(8) %731<1>:UD : %298<8,8,1>:UD 0xfe:UD [1910] ADD(8) %732<1>:D : %724<8,8,1>:D %715<0,1,0>:D [1912] MUL(8) %733<1>:UD : %732<8,8,1>:UD 0x4:UW [1914] ADD(8) %734<1>:D : %41<0,1,0>:D %733<8,8,1>:D [1916] ADD(8) %1326<1>:UD : %734<8,8,1>:UD -%41<0,1,0>:UD [1918] UNTYPED_WRITE(8) : %1326<8,8,1>:UD %731<8,8,1>:UD 0x2:UD [1920] L89: [1922] ENDIF(8) : 0:D [1924] L51: [1926] ADD(8) %735<1>:D : %591<8,8,1>:D 1:D [1928] CMP.ge(8) arf : %735<8,8,1>:D %64<0,1,0>:D [1930] CMP.l(8) arf : %735<8,8,1>:D %587<0,1,0>:D [1932] AND(8) %738<1>:W : %736<8,8,1>:W %737<8,8,1>:W [1934](f738) IF(8) : 0:D [1936] L52: [1938] L53: [1940] ELSE(8) : 0:D [1942] L92: [1944] ADD(8) %739<1>:D : %139<8,8,1>:D 108:D [1946] ADD(8) %740<1>:D : %137<8,8,1>:D %739<8,8,1>:D [1948] MUL(8) %741<1>:UD : %740<8,8,1>:UD 0x4:UW [1950] ADD(8) %742<1>:D : %52<0,1,0>:D %741<8,8,1>:D [1952] UNTYPED_READ(8) %743<1>:UD : %742<8,8,1>:UD 0xfe:UD [1954] MUL(8) arf : %735<8,8,1>:D %47<0,1,0>:D [1956] MACH(8) arf : %735<8,8,1>:D %47<0,1,0>:D [1958] MOV(8) %744<1>:F : arf [1960] ADD(8) %745<1>:D : %744<8,8,1>:D %589<8,8,1>:D [1962] MUL(8) %746<1>:UD : %745<8,8,1>:UD 0x4:UW [1964] ADD(8) %747<1>:D : %41<0,1,0>:D %746<8,8,1>:D [1966] ADD(8) %1333<1>:UD : %747<8,8,1>:UD -%41<0,1,0>:UD [1968] UNTYPED_WRITE(8) : %1333<8,8,1>:UD %743<8,8,1>:UD 0x2:UD [1970] MUL(8) %748<1>:UD : %740<8,8,1>:UD 0x4:UW [1972] ADD(8) %749<1>:D : %54<0,1,0>:D %748<8,8,1>:D [1974] UNTYPED_READ(8) %750<1>:UD : %749<8,8,1>:UD 0xfe:UD [1976] ADD(8) %751<1>:D : %745<8,8,1>:D %48<0,1,0>:D [1978] MUL(8) %752<1>:UD : %751<8,8,1>:UD 0x4:UW [1980] ADD(8) %753<1>:D : %41<0,1,0>:D %752<8,8,1>:D [1982] ADD(8) %1338<1>:UD : %753<8,8,1>:UD -%41<0,1,0>:UD [1984] UNTYPED_WRITE(8) : %1338<8,8,1>:UD %750<8,8,1>:UD 0x2:UD [1986] MUL(8) %754<1>:UD : %740<8,8,1>:UD 0x4:UW [1988] ADD(8) %755<1>:D : %53<0,1,0>:D %754<8,8,1>:D [1990] UNTYPED_READ(8) %756<1>:UD : %755<8,8,1>:UD 0xfe:UD [1992] ADD(8) %757<1>:D : %745<8,8,1>:D %715<0,1,0>:D [1994] MUL(8) %758<1>:UD : %757<8,8,1>:UD 0x4:UW [1996] ADD(8) %759<1>:D : %41<0,1,0>:D %758<8,8,1>:D [1998] ADD(8) %1343<1>:UD : %759<8,8,1>:UD -%41<0,1,0>:UD [2000] UNTYPED_WRITE(8) : %1343<8,8,1>:UD %756<8,8,1>:UD 0x2:UD [2002] L91: [2004] ENDIF(8) : 0:D [2006] L106: [2008] ENDIF(8) : 0:D [2010] L66: [2012] ENDIF(8) : 0:D [2014] L54: [2016] CMP.le(8) arf : %23<8,8,1>:UW 0x36:UW [2018](f0.1) JMPI(1) : 0:D [2020](f0.1) IF(8) : 0:D [2022] ADD(8) %760<1>:D : %589<8,8,1>:D 1:D [2024] CMP.ge(8) arf : %760<8,8,1>:D %61<0,1,0>:D [2026] CMP.l(8) arf : %760<8,8,1>:D %584<0,1,0>:D [2028] AND(8) %763<1>:W : %761<8,8,1>:W %762<8,8,1>:W [2030] ADD(8) %764<1>:D : %136<8,8,1>:D 3:D [2032](f763) IF(8) : 0:D [2034] L55: [2036] L56: [2038] ELSE(8) : 0:D [2040] L109: [2042] CMP.ge(8) arf : %591<8,8,1>:D %64<0,1,0>:D [2044] CMP.l(8) arf : %591<8,8,1>:D %587<0,1,0>:D [2046] AND(8) %767<1>:W : %765<8,8,1>:W %766<8,8,1>:W [2048](f767) IF(8) : 0:D [2050] L57: [2052] L58: [2054] ELSE(8) : 0:D [2056] L94: [2058] ADD(8) %768<1>:D : %764<8,8,1>:D %140<8,8,1>:D [2060] MUL(8) %769<1>:UD : %768<8,8,1>:UD 0x4:UW [2062] ADD(8) %770<1>:D : %52<0,1,0>:D %769<8,8,1>:D [2064] UNTYPED_READ(8) %771<1>:UD : %770<8,8,1>:UD 0xfe:UD [2066] MUL(8) arf : %591<8,8,1>:D %47<0,1,0>:D [2068] MACH(8) arf : %591<8,8,1>:D %47<0,1,0>:D [2070] MOV(8) %772<1>:F : arf [2072] ADD(8) %773<1>:D : %772<8,8,1>:D %760<8,8,1>:D [2074] MUL(8) %774<1>:UD : %773<8,8,1>:UD 0x4:UW [2076] ADD(8) %775<1>:D : %41<0,1,0>:D %774<8,8,1>:D [2078] ADD(8) %1350<1>:UD : %775<8,8,1>:UD -%41<0,1,0>:UD [2080] UNTYPED_WRITE(8) : %1350<8,8,1>:UD %771<8,8,1>:UD 0x2:UD [2082] MUL(8) %776<1>:UD : %768<8,8,1>:UD 0x4:UW [2084] ADD(8) %777<1>:D : %54<0,1,0>:D %776<8,8,1>:D [2086] UNTYPED_READ(8) %778<1>:UD : %777<8,8,1>:UD 0xfe:UD [2088] ADD(8) %779<1>:D : %773<8,8,1>:D %48<0,1,0>:D [2090] MUL(8) %780<1>:UD : %779<8,8,1>:UD 0x4:UW [2092] ADD(8) %781<1>:D : %41<0,1,0>:D %780<8,8,1>:D [2094] ADD(8) %1355<1>:UD : %781<8,8,1>:UD -%41<0,1,0>:UD [2096] UNTYPED_WRITE(8) : %1355<8,8,1>:UD %778<8,8,1>:UD 0x2:UD [2098] MUL(8) %782<1>:UD : %768<8,8,1>:UD 0x4:UW [2100] ADD(8) %783<1>:D : %53<0,1,0>:D %782<8,8,1>:D [2102] UNTYPED_READ(8) %784<1>:UD : %783<8,8,1>:UD 0xfe:UD [2104] ADD(8) %785<1>:D : %773<8,8,1>:D %715<0,1,0>:D [2106] MUL(8) %786<1>:UD : %785<8,8,1>:UD 0x4:UW [2108] ADD(8) %787<1>:D : %41<0,1,0>:D %786<8,8,1>:D [2110] ADD(8) %1360<1>:UD : %787<8,8,1>:UD -%41<0,1,0>:UD [2112] UNTYPED_WRITE(8) : %1360<8,8,1>:UD %784<8,8,1>:UD 0x2:UD [2114] L93: [2116] ENDIF(8) : 0:D [2118] L59: [2120] ADD(8) %788<1>:D : %591<8,8,1>:D 1:D [2122] CMP.ge(8) arf : %788<8,8,1>:D %64<0,1,0>:D [2124] CMP.l(8) arf : %788<8,8,1>:D %587<0,1,0>:D [2126] AND(8) %791<1>:W : %789<8,8,1>:W %790<8,8,1>:W [2128](f791) IF(8) : 0:D [2130] L60: [2132] L61: [2134] ELSE(8) : 0:D [2136] L96: [2138] ADD(8) %792<1>:D : %139<8,8,1>:D 108:D [2140] ADD(8) %793<1>:D : %764<8,8,1>:D %792<8,8,1>:D [2142] MUL(8) %794<1>:UD : %793<8,8,1>:UD 0x4:UW [2144] ADD(8) %795<1>:D : %52<0,1,0>:D %794<8,8,1>:D [2146] UNTYPED_READ(8) %796<1>:UD : %795<8,8,1>:UD 0xfe:UD [2148] MUL(8) arf : %788<8,8,1>:D %47<0,1,0>:D [2150] MACH(8) arf : %788<8,8,1>:D %47<0,1,0>:D [2152] MOV(8) %797<1>:F : arf [2154] ADD(8) %798<1>:D : %797<8,8,1>:D %760<8,8,1>:D [2156] MUL(8) %799<1>:UD : %798<8,8,1>:UD 0x4:UW [2158] ADD(8) %800<1>:D : %41<0,1,0>:D %799<8,8,1>:D [2160] ADD(8) %1367<1>:UD : %800<8,8,1>:UD -%41<0,1,0>:UD [2162] UNTYPED_WRITE(8) : %1367<8,8,1>:UD %796<8,8,1>:UD 0x2:UD [2164] MUL(8) %801<1>:UD : %793<8,8,1>:UD 0x4:UW [2166] ADD(8) %802<1>:D : %54<0,1,0>:D %801<8,8,1>:D [2168] UNTYPED_READ(8) %803<1>:UD : %802<8,8,1>:UD 0xfe:UD [2170] ADD(8) %804<1>:D : %798<8,8,1>:D %48<0,1,0>:D [2172] MUL(8) %805<1>:UD : %804<8,8,1>:UD 0x4:UW [2174] ADD(8) %806<1>:D : %41<0,1,0>:D %805<8,8,1>:D [2176] ADD(8) %1372<1>:UD : %806<8,8,1>:UD -%41<0,1,0>:UD [2178] UNTYPED_WRITE(8) : %1372<8,8,1>:UD %803<8,8,1>:UD 0x2:UD [2180] MUL(8) %807<1>:UD : %793<8,8,1>:UD 0x4:UW [2182] ADD(8) %808<1>:D : %53<0,1,0>:D %807<8,8,1>:D [2184] UNTYPED_READ(8) %809<1>:UD : %808<8,8,1>:UD 0xfe:UD [2186] ADD(8) %810<1>:D : %798<8,8,1>:D %715<0,1,0>:D [2188] MUL(8) %811<1>:UD : %810<8,8,1>:UD 0x4:UW [2190] ADD(8) %812<1>:D : %41<0,1,0>:D %811<8,8,1>:D [2192] ADD(8) %1377<1>:UD : %812<8,8,1>:UD -%41<0,1,0>:UD [2194] UNTYPED_WRITE(8) : %1377<8,8,1>:UD %809<8,8,1>:UD 0x2:UD [2196] L95: [2198] ENDIF(8) : 0:D [2200] L108: [2202] ENDIF(8) : 0:D [2204] L65: [2206] ENDIF(8) : 0:D [2208](f0.1) L62: [2210] CMP.le(8) arf : %23<8,8,1>:UW 0x3e:UW [2212](f0.1) L63: [2214](f0.1) EOT(8) : demosaicKernel's SELECTION IR end. built demosaic kernel 0 CL kernel source: //----------------------------------------------------------------------------- #define CLIP_MIN 1.f #define EPS_ZERO 0.001f float3 rgbToHsv_Hr( const float3 rgb, const float fRange ); float3 hsvToRgb( float3 hsv ); //----------------------------------------------------------------------------- float3 rgbToHsv_Hr( const float3 rgb, const float fRange ) { float minOrig, maxOrig, delta; float minClip, maxClip; float h, s, v; float3 rgbClip; // values clamped to 0..1 rgbClip = min( rgb, CLIP_MIN ); // max & min of original values minOrig = min( min( rgb.x, rgb.y ), rgb.z ); maxOrig = max( max( rgb.x, rgb.y ), rgb.z ); // max & min of clipped values minClip = min( min( rgbClip.x, rgbClip.y ), rgbClip.z ); maxClip = max( max( rgbClip.x, rgbClip.y ), rgbClip.z ); // calculate V v = ( maxOrig - 1.f ) * fRange; v = v * v + 1.f; delta = maxClip - minClip; if ( maxClip > EPS_ZERO ) s = delta / maxClip; else { s = 0.f; h = 0.f; return (float3)( h, s, v ); } if ( fabs( delta ) <= EPS_ZERO ) { h = 0.f; s = 0.f; } else if ( rgbClip.x == maxClip ) h = 6.f + ( rgbClip.y - rgbClip.z ) / delta; // between yellow & magenta else if ( rgbClip.y == maxClip ) h = 2.f + ( rgbClip.z - rgbClip.x ) / delta; // between cyan & yellow else h = 4.f + ( rgbClip.x - rgbClip.y ) / delta; // between magenta & cyan // h *= 60.f; // degrees // hue will be from [0..6) if ( h < 0.f ) h += 6.f; if ( h >= 6.f ) h -= 6.f; return (float3)( h, s, v ); } //----------------------------------------------------------------------------- float3 hsvToRgb( float3 hsv ) { int i; float f, p, q, t; float r, g, b; // if s == 0 // if ( hsv.y < EPS_ZERO ) if ( hsv.y == 0.f ) { // achromatic (grey) - V return (float3)( hsv.z ); } // hsv.x /= 60.f; // integer part of hue puts us in sector 0 to 5 i = (int)floor( hsv.x ); // factorial part of h f = hsv.x - i; p = hsv.z * ( 1.f - hsv.y ); q = hsv.z * ( 1.f - hsv.y * f ); t = hsv.z * ( 1.f - hsv.y * ( 1.f - f ) ); switch ( i ) { case 0: r = hsv.z; g = t; b = p; break; case 1: r = q; g = hsv.z; b = p; break; case 2: r = p; g = hsv.z; b = t; break; case 3: r = p; g = q; b = hsv.z; break; case 4: r = t; g = p; b = hsv.z; break; default: case 5: r = hsv.z; g = p; b = q; break; } return (float3)( r, g, b ); } //----------------------------------------------------------------------------- __kernel void highlights_Planar( __global float * pDst, __global float const * pSrc, uint nRowPixels, uint nPlanePixels, const float fRange ) { float3 rgb, hsv; int2 pos = (int2)( get_global_id(0), get_global_id(1) ); rgb.x = pSrc[pos.x + pos.y * nRowPixels]; rgb.y = pSrc[pos.x + pos.y * nRowPixels + nPlanePixels]; rgb.z = pSrc[pos.x + pos.y * nRowPixels + 2 * nPlanePixels]; // if all components are below the threshold then do nothing if ( rgb.x <= CLIP_MIN && rgb.y <= CLIP_MIN && rgb.z <= CLIP_MIN ) { // copy into the destination image pDst[pos.x + pos.y * nRowPixels] = rgb.x; pDst[pos.x + pos.y * nRowPixels + nPlanePixels] = rgb.y; pDst[pos.x + pos.y * nRowPixels + 2 * nPlanePixels] = rgb.z; return; } // convert to HSV using our special highlight RGB to HSV conversion hsv = rgbToHsv_Hr( rgb, fRange ); // convert back to RGB rgb = hsvToRgb( hsv ); // store to the destination image pDst[pos.x + pos.y * nRowPixels] = rgb.x; pDst[pos.x + pos.y * nRowPixels + nPlanePixels] = rgb.y; pDst[pos.x + pos.y * nRowPixels + 2 * nPlanePixels] = rgb.z; } //----------------------------------------------------------------------------- __kernel void highlights_Chunky( __global float4 * pDst, __global float4 const * pSrc, uint nRowPixels, uint nPlanePixels, const float fRange ) { int2 pos = (int2)( get_global_id(0), get_global_id(1) ); // read the original color float4 clr = pSrc[pos.x + pos.y * nRowPixels / 4]; float3 rgb, hsv; rgb = clr.xyz; // if all components are below the threshold then do nothing if ( rgb.x <= CLIP_MIN && rgb.y <= CLIP_MIN && rgb.z <= CLIP_MIN ) { // copy into the destination image pDst[pos.x + pos.y * nRowPixels / 4] = clr; return; } // convert to HSV using our special highlight RGB to HSV conversion hsv = rgbToHsv_Hr( rgb, fRange ); // convert back to RGB rgb = hsvToRgb( hsv ); // store to the destination image clr.xyz = rgb; pDst[pos.x + pos.y * nRowPixels / 4] = clr; } //----------------------------------------------------------------------------- __constant sampler_t imageSampler = CLK_NORMALIZED_COORDS_FALSE | CLK_ADDRESS_CLAMP | CLK_FILTER_NEAREST; //----------------------------------------------------------------------------- __kernel void rgbSharpen_Image2D( __write_only image2d_t dstImg, __read_only image2d_t srcImg, const float fRange ) { int2 pos = (int2)( get_global_id(0), get_global_id(1) ); // read the original color float4 clr = read_imagef( srcImg, imageSampler, pos ); float3 rgb, hsv; rgb = clr.xyz; // if all components are below the threshold then do nothing if ( rgb.x <= CLIP_MIN && rgb.y <= CLIP_MIN && rgb.z <= CLIP_MIN ) { // copy into the destination image write_imagef( dstImg, pos, clr ); return; } // convert to HSV using our special highlight RGB to HSV conversion hsv = rgbToHsv_Hr( rgb, fRange ); // convert back to RGB rgb = hsvToRgb( hsv ); // store to the destination image clr.xyz = rgb; write_imagef( dstImg, pos, clr ); } //----------------------------------------------------------------------------- .decl_function highlights_Chunky ## 201 registers ## .decl.dword %0 local_id_0 .decl.dword %1 local_id_1 .decl.dword %2 local_id_2 .decl.dword %3 group_id_0 .decl.dword %4 group_id_1 .decl.dword %5 group_id_2 .decl.dword %6 num_groups_0 .decl.dword %7 num_groups_1 .decl.dword %8 num_groups_2 .decl.dword %9 local_size_0 .decl.dword %10 local_size_1 .decl.dword %11 local_size_2 .decl.dword %12 enqueued_local_size_0 .decl.dword %13 enqueued_local_size_1 .decl.dword %14 enqueued_local_size_2 .decl.dword %15 global_size_0 .decl.dword %16 global_size_1 .decl.dword %17 global_size_2 .decl.dword %18 global_offset_0 .decl.dword %19 global_offset_1 .decl.dword %20 global_offset_2 .decl.dword %21 stack_pointer .decl.qword %22 stack_buffer .decl.word %23 block_ip .decl.dword %24 barrier_id .decl.dword %25 thread_number .decl.dword %26 work_dimension .decl.dword %27 zero .decl.dword %28 one .decl.word %29 retVal .decl.dword %30 dwblockip .decl.qword %31 profiling_buffer_pointer .decl.dword %32 profiling_timestamps0 .decl.dword %33 profiling_timestamps1 .decl.dword %34 profiling_timestamps2 .decl.dword %35 profiling_timestamps3 .decl.dword %36 profiling_timestamps4 .decl.dword %37 threadid .decl.qword %38 constant_addrspace_start .decl.qword %39 stack_size .decl.qword %40 enqueue_buffer_pointer .decl.dword %41 .decl.dword %42 .decl.dword %43 .decl.dword %44 .decl.dword %45 .decl.dword %46 .decl.dword %47 .decl.dword %48 .decl.dword %49 .decl.dword %50 .decl.dword %51 .decl.dword %52 .decl.dword %53 .decl.dword %54 .decl.dword %55 .decl.dword %56 .decl.dword %57 .decl.dword %58 .decl.dword %59 .decl.dword %60 .decl.bool %61 .decl.bool %62 .decl.bool %63 .decl.bool %64 .decl.bool %65 .decl.dword %66 .decl.dword %67 .decl.dword %68 .decl.dword %69 .decl.dword %70 .decl.dword %71 .decl.dword %72 .decl.dword %73 .decl.dword %74 .decl.dword %75 .decl.dword %76 .decl.dword %77 .decl.dword %78 .decl.dword %79 .decl.dword %80 .decl.bool %81 .decl.dword %82 .decl.dword %83 .decl.bool %84 .decl.bool %85 .decl.bool %86 .decl.dword %87 .decl.dword %88 .decl.dword %89 .decl.dword %90 .decl.dword %91 .decl.dword %92 .decl.dword %93 .decl.dword %94 .decl.dword %95 .decl.dword %96 .decl.dword %97 .decl.dword %98 .decl.dword %99 .decl.bool %100 .decl.dword %101 .decl.dword %102 .decl.bool %103 .decl.dword %104 .decl.dword %105 .decl.dword %106 .decl.dword %107 .decl.dword %108 .decl.dword %109 .decl.bool %110 .decl.dword %111 .decl.dword %112 .decl.dword %113 .decl.dword %114 .decl.dword %115 .decl.dword %116 .decl.dword %117 .decl.dword %118 .decl.dword %119 .decl.dword %120 .decl.dword %121 .decl.dword %122 .decl.bool %123 .decl.bool %124 .decl.bool %125 .decl.bool %126 .decl.bool %127 .decl.bool %128 .decl.dword %129 .decl.dword %130 .decl.dword %131 .decl.dword %132 .decl.dword %133 .decl.dword %134 .decl.dword %135 .decl.dword %136 .decl.dword %137 .decl.dword %138 .decl.dword %139 .decl.dword %140 .decl.bool %141 .decl.bool %142 .decl.dword %143 .decl.bool %144 .decl.bool %145 .decl.dword %146 .decl.bool %147 .decl.bool %148 .decl.dword %149 .decl.dword %150 .decl.dword %151 .decl.bool %152 .decl.dword %153 .decl.bool %154 .decl.dword %155 .decl.bool %156 .decl.bool %157 .decl.bool %158 .decl.bool %159 .decl.bool %160 .decl.bool %161 .decl.bool %162 .decl.dword %163 .decl.dword %164 .decl.dword %165 .decl.bool %166 .decl.dword %167 .decl.dword %168 .decl.dword %169 .decl.bool %170 .decl.bool %171 .decl.dword %172 .decl.dword %173 .decl.bool %174 .decl.bool %175 .decl.dword %176 .decl.dword %177 .decl.dword %178 .decl.dword %179 .decl.bool %180 .decl.dword %181 .decl.dword %182 .decl.bool %183 .decl.bool %184 .decl.dword %185 .decl.dword %186 .decl.bool %187 .decl.dword %188 .decl.dword %189 .decl.dword %190 .decl.dword %191 .decl.dword %192 .decl.dword %193 .decl.dword %194 .decl.dword %195 .decl.dword %196 .decl.dword %197 .decl.dword %198 .decl.dword %199 .decl.dword %200 ## 5 input registers ## decl_input.global %41 pDst decl_input.global %42 pSrc decl_input.value %43 nRowPixels decl_input.value %44 nPlanePixels decl_input.value %45 fRange ## 0 output register ## ## 0 pushed register ## 29 blocks ## LABEL $0 MUL.int32 %46 %3 %12 ADD.int32 %47 %46 %0 ADD.int32 %48 %47 %18 MUL.int32 %49 %4 %13 ADD.int32 %50 %49 %1 ADD.int32 %51 %50 %19 MUL.int32 %52 %51 %43 LOADI.uint32 %137 2 SHR.uint32 %53 %52 %137 ADD.int32 %54 %48 %53 LOADI.uint32 %138 16 MUL.int32 %55 %138 %54 ADD.int32 %56 %42 %55 SUB.uint32 %139 %56 %42 LOAD.float.global.aligned {%57 %58 %59 %60} %139 bti:3 LOADI.float %140 1 LE.float %141 %57 %140 LOADI.bool %142 1 XOR.bool %61 %141 %142 LE.float %144 %58 %140 XOR.bool %62 %144 %142 OR.bool %63 %61 %62 LE.float %147 %59 %140 XOR.bool %64 %147 %142 OR.bool %65 %64 %63 BRA<%65> -> label$2 LABEL $1 LOADI.uint32 %149 16 MUL.int32 %66 %149 %54 ADD.int32 %67 %41 %66 SUB.uint32 %150 %67 %41 STORE.float.global.aligned %150 {%57 %58 %59 %60} bti:2 BRA -> label$27 LABEL $2 LOADI.float %151 1 LT.float %152 %57 %151 SEL.float %68 %152 %57 %151 LT.float %154 %58 %151 SEL.float %69 %154 %58 %151 LT.float %156 %59 %151 SEL.float %70 %156 %59 %151 GE.float %157 %57 %58 SEL.float %71 %157 %57 %58 GE.float %158 %71 %59 SEL.float %72 %158 %71 %59 LT.float %159 %68 %69 SEL.float %73 %159 %68 %69 LT.float %160 %73 %70 SEL.float %74 %160 %73 %70 GE.float %161 %68 %69 SEL.float %75 %161 %68 %69 GE.float %162 %75 %70 SEL.float %76 %162 %75 %70 LOADI.float %163 -1 ADD.float %77 %72 %163 MUL.float %78 %77 %45 MAD.float %79 %78 %78 %151 SUB.float %80 %76 %74 LOADI.float %165 0.001 GT.float %81 %76 %165 LOADI.float %167 0 MOV.float %107 %167 MOV.float %109 %167 IF !<%81> -> label$37 LABEL $3 LABEL $4 ELSE -> label$36 <**>label: 37 DIV.float %82 %80 %76 ABS.float %83 %80 LOADI.float %169 0.001 LE.float %170 %83 %169 LOADI.bool %171 1 XOR.bool %84 %170 %171 LOADI.float %172 0 MOV.float %109 %172 MOV.float %99 %172 IF !<%84> -> label$35 LABEL $5 LABEL $6 ELSE -> label$34 <**>label: 35 EQ.float %85 %68 %76 IF !<%85> -> label$33 LABEL $7 EQ.float %86 %69 %76 IF !<%86> -> label$31 LABEL $8 SUB.float %87 %68 %69 DIV.float %88 %87 %80 LOADI.float %176 4 ADD.float %89 %88 %176 MOV.float %109 %82 MOV.float %99 %89 LABEL $9 ELSE -> label$30 <**>label: 31 SUB.float %90 %70 %68 DIV.float %91 %90 %80 LOADI.float %177 2 ADD.float %92 %91 %177 MOV.float %109 %82 MOV.float %99 %92 ENDIF -> label$30 LABEL $10 ELSE -> label$32 <**>label: 33 SUB.float %93 %69 %70 DIV.float %94 %93 %80 LOADI.float %178 6 ADD.float %99 %94 %178 MOV.float %109 %82 ENDIF -> label$32 ENDIF -> label$34 LABEL $11 LOADI.float %179 0 LT.float %100 %99 %179 LOADI.float %181 6 ADD.float %101 %99 %181 SEL.float %102 %100 %101 %99 GE.float %183 %102 %181 LOADI.bool %184 1 XOR.bool %103 %183 %184 LOADI.float %185 -6 ADD.float %104 %102 %185 SEL.float %107 %103 %102 %104 ENDIF -> label$36 LABEL $12 LOADI.float %186 0 EQ.float %110 %109 %186 MOV.float %130 %79 MOV.float %132 %79 MOV.float %134 %79 BRA<%110> -> label$26 LABEL $13 RNDD.float %111 %107 CVT.int32.float %112 %111 CVT.float.int32 %113 %112 SUB.float %114 %107 %113 LOADI.float %188 1 SUB.float %115 %188 %109 MUL.float %116 %79 %115 LOADI.float %189 -0 SUB.float %117 %189 %109 MAD.float %118 %117 %114 %188 MUL.float %119 %79 %118 SUB.float %120 %188 %114 MAD.float %121 %117 %120 %188 MUL.float %122 %79 %121 LABEL $14 LOADI.uint32 %193 2 LT.int32 %123 %112 %193 BRA<%123> -> label$21 LABEL $15 LOADI.uint32 %194 3 LT.int32 %124 %112 %194 BRA<%124> -> label$20 LABEL $16 LOADI.uint32 %195 4 LT.int32 %125 %112 %195 BRA<%125> -> label$19 LABEL $17 LOADI.uint32 %196 4 NE.int32 %126 %112 %196 BRA<%126> -> label$24 LABEL $18 MOV.float %130 %122 MOV.float %132 %116 MOV.float %134 %79 BRA -> label$26 LABEL $19 MOV.float %130 %116 MOV.float %132 %119 MOV.float %134 %79 BRA -> label$26 LABEL $20 MOV.float %130 %116 MOV.float %132 %79 MOV.float %134 %122 BRA -> label$26 LABEL $21 LOADI.uint32 %197 1 LT.int32 %127 %112 %197 BRA<%127> -> label$23 LABEL $22 MOV.float %130 %119 MOV.float %132 %79 MOV.float %134 %116 BRA -> label$26 LABEL $23 LOADI.uint32 %198 0 EQ.int32 %128 %112 %198 MOV.float %130 %79 MOV.float %132 %122 MOV.float %134 %116 BRA<%128> -> label$26 LABEL $24 LABEL $25 MOV.float %130 %79 MOV.float %132 %116 MOV.float %134 %119 LABEL $26 LOADI.uint32 %199 16 MUL.int32 %135 %199 %54 ADD.int32 %136 %41 %135 SUB.uint32 %200 %136 %41 STORE.float.global.aligned %200 {%130 %132 %134 %60} bti:2 LABEL $27 LABEL $28 RET .end_function .decl_function highlights_Planar ## 226 registers ## .decl.dword %0 local_id_0 .decl.dword %1 local_id_1 .decl.dword %2 local_id_2 .decl.dword %3 group_id_0 .decl.dword %4 group_id_1 .decl.dword %5 group_id_2 .decl.dword %6 num_groups_0 .decl.dword %7 num_groups_1 .decl.dword %8 num_groups_2 .decl.dword %9 local_size_0 .decl.dword %10 local_size_1 .decl.dword %11 local_size_2 .decl.dword %12 enqueued_local_size_0 .decl.dword %13 enqueued_local_size_1 .decl.dword %14 enqueued_local_size_2 .decl.dword %15 global_size_0 .decl.dword %16 global_size_1 .decl.dword %17 global_size_2 .decl.dword %18 global_offset_0 .decl.dword %19 global_offset_1 .decl.dword %20 global_offset_2 .decl.dword %21 stack_pointer .decl.qword %22 stack_buffer .decl.word %23 block_ip .decl.dword %24 barrier_id .decl.dword %25 thread_number .decl.dword %26 work_dimension .decl.dword %27 zero .decl.dword %28 one .decl.word %29 retVal .decl.dword %30 dwblockip .decl.qword %31 profiling_buffer_pointer .decl.dword %32 profiling_timestamps0 .decl.dword %33 profiling_timestamps1 .decl.dword %34 profiling_timestamps2 .decl.dword %35 profiling_timestamps3 .decl.dword %36 profiling_timestamps4 .decl.dword %37 threadid .decl.qword %38 constant_addrspace_start .decl.qword %39 stack_size .decl.qword %40 enqueue_buffer_pointer .decl.dword %41 .decl.dword %42 .decl.dword %43 .decl.dword %44 .decl.dword %45 .decl.dword %46 .decl.dword %47 .decl.dword %48 .decl.dword %49 .decl.dword %50 .decl.dword %51 .decl.dword %52 .decl.dword %53 .decl.dword %54 .decl.dword %55 .decl.dword %56 .decl.dword %57 .decl.dword %58 .decl.dword %59 .decl.dword %60 .decl.dword %61 .decl.dword %62 .decl.dword %63 .decl.dword %64 .decl.dword %65 .decl.bool %66 .decl.bool %67 .decl.bool %68 .decl.bool %69 .decl.bool %70 .decl.dword %71 .decl.dword %72 .decl.dword %73 .decl.dword %74 .decl.dword %75 .decl.dword %76 .decl.dword %77 .decl.dword %78 .decl.dword %79 .decl.dword %80 .decl.dword %81 .decl.dword %82 .decl.dword %83 .decl.dword %84 .decl.dword %85 .decl.dword %86 .decl.dword %87 .decl.dword %88 .decl.dword %89 .decl.bool %90 .decl.dword %91 .decl.dword %92 .decl.bool %93 .decl.bool %94 .decl.bool %95 .decl.dword %96 .decl.dword %97 .decl.dword %98 .decl.dword %99 .decl.dword %100 .decl.dword %101 .decl.dword %102 .decl.dword %103 .decl.dword %104 .decl.dword %105 .decl.dword %106 .decl.dword %107 .decl.dword %108 .decl.bool %109 .decl.dword %110 .decl.dword %111 .decl.bool %112 .decl.dword %113 .decl.dword %114 .decl.dword %115 .decl.dword %116 .decl.dword %117 .decl.dword %118 .decl.bool %119 .decl.dword %120 .decl.dword %121 .decl.dword %122 .decl.dword %123 .decl.dword %124 .decl.dword %125 .decl.dword %126 .decl.dword %127 .decl.dword %128 .decl.dword %129 .decl.dword %130 .decl.dword %131 .decl.bool %132 .decl.bool %133 .decl.bool %134 .decl.bool %135 .decl.bool %136 .decl.bool %137 .decl.dword %138 .decl.dword %139 .decl.dword %140 .decl.dword %141 .decl.dword %142 .decl.dword %143 .decl.dword %144 .decl.dword %145 .decl.dword %146 .decl.dword %147 .decl.dword %148 .decl.dword %149 .decl.dword %150 .decl.dword %151 .decl.dword %152 .decl.dword %153 .decl.dword %154 .decl.dword %155 .decl.dword %156 .decl.dword %157 .decl.bool %158 .decl.bool %159 .decl.dword %160 .decl.bool %161 .decl.bool %162 .decl.dword %163 .decl.bool %164 .decl.bool %165 .decl.dword %166 .decl.dword %167 .decl.dword %168 .decl.dword %169 .decl.dword %170 .decl.dword %171 .decl.dword %172 .decl.bool %173 .decl.dword %174 .decl.bool %175 .decl.dword %176 .decl.bool %177 .decl.bool %178 .decl.bool %179 .decl.bool %180 .decl.bool %181 .decl.bool %182 .decl.bool %183 .decl.dword %184 .decl.dword %185 .decl.dword %186 .decl.bool %187 .decl.dword %188 .decl.dword %189 .decl.dword %190 .decl.bool %191 .decl.bool %192 .decl.dword %193 .decl.dword %194 .decl.bool %195 .decl.bool %196 .decl.dword %197 .decl.dword %198 .decl.dword %199 .decl.dword %200 .decl.bool %201 .decl.dword %202 .decl.dword %203 .decl.bool %204 .decl.bool %205 .decl.dword %206 .decl.dword %207 .decl.bool %208 .decl.dword %209 .decl.dword %210 .decl.dword %211 .decl.dword %212 .decl.dword %213 .decl.dword %214 .decl.dword %215 .decl.dword %216 .decl.dword %217 .decl.dword %218 .decl.dword %219 .decl.dword %220 .decl.dword %221 .decl.dword %222 .decl.dword %223 .decl.dword %224 .decl.dword %225 ## 5 input registers ## decl_input.global %41 pDst decl_input.global %42 pSrc decl_input.value %43 nRowPixels decl_input.value %44 nPlanePixels decl_input.value %45 fRange ## 0 output register ## ## 0 pushed register ## 29 blocks ## LABEL $0 MUL.int32 %46 %3 %12 ADD.int32 %47 %46 %0 ADD.int32 %48 %47 %18 MUL.int32 %49 %4 %13 ADD.int32 %50 %49 %1 ADD.int32 %51 %50 %19 MUL.int32 %52 %51 %43 ADD.int32 %53 %48 %52 LOADI.uint32 %150 4 MUL.int32 %54 %150 %53 ADD.int32 %55 %42 %54 SUB.uint32 %151 %55 %42 LOAD.float.global.aligned {%56} %151 bti:3 ADD.int32 %57 %53 %44 MUL.int32 %58 %150 %57 ADD.int32 %59 %42 %58 SUB.uint32 %153 %59 %42 LOAD.float.global.aligned {%60} %153 bti:3 LOADI.uint32 %154 1 SHL.int32 %61 %44 %154 ADD.int32 %62 %53 %61 MUL.int32 %63 %150 %62 ADD.int32 %64 %42 %63 SUB.uint32 %156 %64 %42 LOAD.float.global.aligned {%65} %156 bti:3 LOADI.float %157 1 LE.float %158 %56 %157 LOADI.bool %159 1 XOR.bool %66 %158 %159 LE.float %161 %60 %157 XOR.bool %67 %161 %159 OR.bool %68 %66 %67 LE.float %164 %65 %157 XOR.bool %69 %164 %159 OR.bool %70 %68 %69 BRA<%70> -> label$2 LABEL $1 LOADI.uint32 %166 4 MUL.int32 %71 %166 %53 ADD.int32 %72 %41 %71 SUB.uint32 %167 %72 %41 STORE.float.global.aligned %167 {%56} bti:2 MUL.int32 %73 %166 %57 ADD.int32 %74 %41 %73 SUB.uint32 %169 %74 %41 STORE.float.global.aligned %169 {%60} bti:2 MUL.int32 %75 %166 %62 ADD.int32 %76 %41 %75 SUB.uint32 %171 %76 %41 STORE.float.global.aligned %171 {%65} bti:2 BRA -> label$27 LABEL $2 LOADI.float %172 1 LT.float %173 %56 %172 SEL.float %77 %173 %56 %172 LT.float %175 %60 %172 SEL.float %78 %175 %60 %172 LT.float %177 %65 %172 SEL.float %79 %177 %65 %172 GE.float %178 %56 %60 SEL.float %80 %178 %56 %60 GE.float %179 %80 %65 SEL.float %81 %179 %80 %65 LT.float %180 %77 %78 SEL.float %82 %180 %77 %78 LT.float %181 %82 %79 SEL.float %83 %181 %82 %79 GE.float %182 %77 %78 SEL.float %84 %182 %77 %78 GE.float %183 %84 %79 SEL.float %85 %183 %84 %79 LOADI.float %184 -1 ADD.float %86 %81 %184 MUL.float %87 %86 %45 MAD.float %88 %87 %87 %172 SUB.float %89 %85 %83 LOADI.float %186 0.001 GT.float %90 %85 %186 LOADI.float %188 0 MOV.float %116 %188 MOV.float %118 %188 IF !<%90> -> label$37 LABEL $3 LABEL $4 ELSE -> label$36 <**>label: 37 DIV.float %91 %89 %85 ABS.float %92 %89 LOADI.float %190 0.001 LE.float %191 %92 %190 LOADI.bool %192 1 XOR.bool %93 %191 %192 LOADI.float %193 0 MOV.float %118 %193 MOV.float %108 %193 IF !<%93> -> label$35 LABEL $5 LABEL $6 ELSE -> label$34 <**>label: 35 EQ.float %94 %77 %85 IF !<%94> -> label$33 LABEL $7 EQ.float %95 %78 %85 IF !<%95> -> label$31 LABEL $8 SUB.float %96 %77 %78 DIV.float %97 %96 %89 LOADI.float %197 4 ADD.float %98 %97 %197 MOV.float %118 %91 MOV.float %108 %98 LABEL $9 ELSE -> label$30 <**>label: 31 SUB.float %99 %79 %77 DIV.float %100 %99 %89 LOADI.float %198 2 ADD.float %101 %100 %198 MOV.float %118 %91 MOV.float %108 %101 ENDIF -> label$30 LABEL $10 ELSE -> label$32 <**>label: 33 SUB.float %102 %78 %79 DIV.float %103 %102 %89 LOADI.float %199 6 ADD.float %108 %103 %199 MOV.float %118 %91 ENDIF -> label$32 ENDIF -> label$34 LABEL $11 LOADI.float %200 0 LT.float %109 %108 %200 LOADI.float %202 6 ADD.float %110 %108 %202 SEL.float %111 %109 %110 %108 GE.float %204 %111 %202 LOADI.bool %205 1 XOR.bool %112 %204 %205 LOADI.float %206 -6 ADD.float %113 %111 %206 SEL.float %116 %112 %111 %113 ENDIF -> label$36 LABEL $12 LOADI.float %207 0 EQ.float %119 %118 %207 MOV.float %139 %88 MOV.float %141 %88 MOV.float %143 %88 BRA<%119> -> label$26 LABEL $13 RNDD.float %120 %116 CVT.int32.float %121 %120 CVT.float.int32 %122 %121 SUB.float %123 %116 %122 LOADI.float %209 1 SUB.float %124 %209 %118 MUL.float %125 %88 %124 LOADI.float %210 -0 SUB.float %126 %210 %118 MAD.float %127 %126 %123 %209 MUL.float %128 %88 %127 SUB.float %129 %209 %123 MAD.float %130 %126 %129 %209 MUL.float %131 %88 %130 LABEL $14 LOADI.uint32 %214 2 LT.int32 %132 %121 %214 BRA<%132> -> label$21 LABEL $15 LOADI.uint32 %215 3 LT.int32 %133 %121 %215 BRA<%133> -> label$20 LABEL $16 LOADI.uint32 %216 4 LT.int32 %134 %121 %216 BRA<%134> -> label$19 LABEL $17 LOADI.uint32 %217 4 NE.int32 %135 %121 %217 BRA<%135> -> label$24 LABEL $18 MOV.float %139 %131 MOV.float %141 %125 MOV.float %143 %88 BRA -> label$26 LABEL $19 MOV.float %139 %125 MOV.float %141 %128 MOV.float %143 %88 BRA -> label$26 LABEL $20 MOV.float %139 %125 MOV.float %141 %88 MOV.float %143 %131 BRA -> label$26 LABEL $21 LOADI.uint32 %218 1 LT.int32 %136 %121 %218 BRA<%136> -> label$23 LABEL $22 MOV.float %139 %128 MOV.float %141 %88 MOV.float %143 %125 BRA -> label$26 LABEL $23 LOADI.uint32 %219 0 EQ.int32 %137 %121 %219 MOV.float %139 %88 MOV.float %141 %131 MOV.float %143 %125 BRA<%137> -> label$26 LABEL $24 LABEL $25 MOV.float %139 %88 MOV.float %141 %125 MOV.float %143 %128 LABEL $26 LOADI.uint32 %220 4 MUL.int32 %144 %220 %53 ADD.int32 %145 %41 %144 SUB.uint32 %221 %145 %41 STORE.float.global.aligned %221 {%139} bti:2 MUL.int32 %146 %220 %57 ADD.int32 %147 %41 %146 SUB.uint32 %223 %147 %41 STORE.float.global.aligned %223 {%141} bti:2 MUL.int32 %148 %220 %62 ADD.int32 %149 %41 %148 SUB.uint32 %225 %149 %41 STORE.float.global.aligned %225 {%143} bti:2 LABEL $27 LABEL $28 RET .end_function .decl_function rgbSharpen_Image2D ## 185 registers ## .decl.dword %0 local_id_0 .decl.dword %1 local_id_1 .decl.dword %2 local_id_2 .decl.dword %3 group_id_0 .decl.dword %4 group_id_1 .decl.dword %5 group_id_2 .decl.dword %6 num_groups_0 .decl.dword %7 num_groups_1 .decl.dword %8 num_groups_2 .decl.dword %9 local_size_0 .decl.dword %10 local_size_1 .decl.dword %11 local_size_2 .decl.dword %12 enqueued_local_size_0 .decl.dword %13 enqueued_local_size_1 .decl.dword %14 enqueued_local_size_2 .decl.dword %15 global_size_0 .decl.dword %16 global_size_1 .decl.dword %17 global_size_2 .decl.dword %18 global_offset_0 .decl.dword %19 global_offset_1 .decl.dword %20 global_offset_2 .decl.dword %21 stack_pointer .decl.qword %22 stack_buffer .decl.word %23 block_ip .decl.dword %24 barrier_id .decl.dword %25 thread_number .decl.dword %26 work_dimension .decl.dword %27 zero .decl.dword %28 one .decl.word %29 retVal .decl.dword %30 dwblockip .decl.qword %31 profiling_buffer_pointer .decl.dword %32 profiling_timestamps0 .decl.dword %33 profiling_timestamps1 .decl.dword %34 profiling_timestamps2 .decl.dword %35 profiling_timestamps3 .decl.dword %36 profiling_timestamps4 .decl.dword %37 threadid .decl.qword %38 constant_addrspace_start .decl.qword %39 stack_size .decl.qword %40 enqueue_buffer_pointer .decl.dword %41 .decl.dword %42 .decl.dword %43 .decl.dword %44 .decl.dword %45 .decl.dword %46 .decl.dword %47 .decl.dword %48 .decl.dword %49 .decl.dword %50 .decl.dword %51 .decl.dword %52 .decl.dword %53 .decl.dword %54 .decl.dword %55 .decl.bool %56 .decl.bool %57 .decl.bool %58 .decl.bool %59 .decl.bool %60 .decl.dword %61 .decl.dword %62 .decl.dword %63 .decl.dword %64 .decl.dword %65 .decl.dword %66 .decl.dword %67 .decl.dword %68 .decl.dword %69 .decl.dword %70 .decl.dword %71 .decl.dword %72 .decl.dword %73 .decl.bool %74 .decl.dword %75 .decl.dword %76 .decl.bool %77 .decl.bool %78 .decl.bool %79 .decl.dword %80 .decl.dword %81 .decl.dword %82 .decl.dword %83 .decl.dword %84 .decl.dword %85 .decl.dword %86 .decl.dword %87 .decl.dword %88 .decl.dword %89 .decl.dword %90 .decl.dword %91 .decl.dword %92 .decl.bool %93 .decl.dword %94 .decl.dword %95 .decl.bool %96 .decl.dword %97 .decl.dword %98 .decl.dword %99 .decl.dword %100 .decl.dword %101 .decl.dword %102 .decl.bool %103 .decl.dword %104 .decl.dword %105 .decl.dword %106 .decl.dword %107 .decl.dword %108 .decl.dword %109 .decl.dword %110 .decl.dword %111 .decl.dword %112 .decl.dword %113 .decl.dword %114 .decl.dword %115 .decl.bool %116 .decl.bool %117 .decl.bool %118 .decl.bool %119 .decl.bool %120 .decl.bool %121 .decl.dword %122 .decl.dword %123 .decl.dword %124 .decl.dword %125 .decl.dword %126 .decl.dword %127 .decl.dword %128 .decl.bool %129 .decl.bool %130 .decl.dword %131 .decl.bool %132 .decl.bool %133 .decl.dword %134 .decl.bool %135 .decl.bool %136 .decl.dword %137 .decl.bool %138 .decl.dword %139 .decl.bool %140 .decl.dword %141 .decl.bool %142 .decl.bool %143 .decl.bool %144 .decl.bool %145 .decl.bool %146 .decl.bool %147 .decl.bool %148 .decl.dword %149 .decl.dword %150 .decl.dword %151 .decl.bool %152 .decl.dword %153 .decl.dword %154 .decl.dword %155 .decl.bool %156 .decl.bool %157 .decl.dword %158 .decl.dword %159 .decl.bool %160 .decl.bool %161 .decl.dword %162 .decl.dword %163 .decl.dword %164 .decl.dword %165 .decl.bool %166 .decl.dword %167 .decl.dword %168 .decl.bool %169 .decl.bool %170 .decl.dword %171 .decl.dword %172 .decl.bool %173 .decl.dword %174 .decl.dword %175 .decl.dword %176 .decl.dword %177 .decl.dword %178 .decl.dword %179 .decl.dword %180 .decl.dword %181 .decl.dword %182 .decl.dword %183 .decl.dword %184 ## 3 input registers ## decl_input.image %41 dstImg decl_input.image %42 srcImg decl_input.value %43 fRange ## 0 output register ## ## 0 pushed register ## 29 blocks ## LABEL $0 MUL.int32 %44 %3 %12 ADD.int32 %45 %44 %0 ADD.int32 %46 %45 %18 MUL.int32 %47 %4 %13 ADD.int32 %48 %47 %1 ADD.int32 %49 %48 %19 CVT.float.int32 %50 %46 CVT.float.int32 %51 %49 SAMPLE.float.float surface id 3 coord u %50 coord v %51 %52 %53 %54 %55 sampler idx 0 LOADI.float %128 1 LE.float %129 %52 %128 LOADI.bool %130 1 XOR.bool %56 %129 %130 LE.float %132 %53 %128 XOR.bool %57 %132 %130 OR.bool %58 %56 %57 LE.float %135 %54 %128 XOR.bool %59 %135 %130 OR.bool %60 %59 %58 BRA<%60> -> label$2 LABEL $1 TYPED_WRITE.float surface id 2 coord u %46 coord v %49 %52 %53 %54 %55 BRA -> label$27 LABEL $2 LOADI.float %137 1 LT.float %138 %52 %137 SEL.float %61 %138 %52 %137 LT.float %140 %53 %137 SEL.float %62 %140 %53 %137 LT.float %142 %54 %137 SEL.float %63 %142 %54 %137 GE.float %143 %52 %53 SEL.float %64 %143 %52 %53 GE.float %144 %64 %54 SEL.float %65 %144 %64 %54 LT.float %145 %61 %62 SEL.float %66 %145 %61 %62 LT.float %146 %66 %63 SEL.float %67 %146 %66 %63 GE.float %147 %61 %62 SEL.float %68 %147 %61 %62 GE.float %148 %68 %63 SEL.float %69 %148 %68 %63 LOADI.float %149 -1 ADD.float %70 %65 %149 MUL.float %71 %70 %43 MAD.float %72 %71 %71 %137 SUB.float %73 %69 %67 LOADI.float %151 0.001 GT.float %74 %69 %151 LOADI.float %153 0 MOV.float %100 %153 MOV.float %102 %153 IF !<%74> -> label$37 LABEL $3 LABEL $4 ELSE -> label$36 <**>label: 37 DIV.float %75 %73 %69 ABS.float %76 %73 LOADI.float %155 0.001 LE.float %156 %76 %155 LOADI.bool %157 1 XOR.bool %77 %156 %157 LOADI.float %158 0 MOV.float %102 %158 MOV.float %92 %158 IF !<%77> -> label$35 LABEL $5 LABEL $6 ELSE -> label$34 <**>label: 35 EQ.float %78 %61 %69 IF !<%78> -> label$33 LABEL $7 EQ.float %79 %62 %69 IF !<%79> -> label$31 LABEL $8 SUB.float %80 %61 %62 DIV.float %81 %80 %73 LOADI.float %162 4 ADD.float %82 %81 %162 MOV.float %102 %75 MOV.float %92 %82 LABEL $9 ELSE -> label$30 <**>label: 31 SUB.float %83 %63 %61 DIV.float %84 %83 %73 LOADI.float %163 2 ADD.float %85 %84 %163 MOV.float %102 %75 MOV.float %92 %85 ENDIF -> label$30 LABEL $10 ELSE -> label$32 <**>label: 33 SUB.float %86 %62 %63 DIV.float %87 %86 %73 LOADI.float %164 6 ADD.float %92 %87 %164 MOV.float %102 %75 ENDIF -> label$32 ENDIF -> label$34 LABEL $11 LOADI.float %165 0 LT.float %93 %92 %165 LOADI.float %167 6 ADD.float %94 %92 %167 SEL.float %95 %93 %94 %92 GE.float %169 %95 %167 LOADI.bool %170 1 XOR.bool %96 %169 %170 LOADI.float %171 -6 ADD.float %97 %95 %171 SEL.float %100 %96 %95 %97 ENDIF -> label$36 LABEL $12 LOADI.float %172 0 EQ.float %103 %102 %172 MOV.float %123 %72 MOV.float %125 %72 MOV.float %127 %72 BRA<%103> -> label$26 LABEL $13 RNDD.float %104 %100 CVT.int32.float %105 %104 CVT.float.int32 %106 %105 SUB.float %107 %100 %106 LOADI.float %174 1 SUB.float %108 %174 %102 MUL.float %109 %72 %108 LOADI.float %175 -0 SUB.float %110 %175 %102 MAD.float %111 %110 %107 %174 MUL.float %112 %72 %111 SUB.float %113 %174 %107 MAD.float %114 %110 %113 %174 MUL.float %115 %72 %114 LABEL $14 LOADI.uint32 %179 2 LT.int32 %116 %105 %179 BRA<%116> -> label$21 LABEL $15 LOADI.uint32 %180 3 LT.int32 %117 %105 %180 BRA<%117> -> label$20 LABEL $16 LOADI.uint32 %181 4 LT.int32 %118 %105 %181 BRA<%118> -> label$19 LABEL $17 LOADI.uint32 %182 4 NE.int32 %119 %105 %182 BRA<%119> -> label$24 LABEL $18 MOV.float %123 %115 MOV.float %125 %109 MOV.float %127 %72 BRA -> label$26 LABEL $19 MOV.float %123 %109 MOV.float %125 %112 MOV.float %127 %72 BRA -> label$26 LABEL $20 MOV.float %123 %109 MOV.float %125 %72 MOV.float %127 %115 BRA -> label$26 LABEL $21 LOADI.uint32 %183 1 LT.int32 %120 %105 %183 BRA<%120> -> label$23 LABEL $22 MOV.float %123 %112 MOV.float %125 %72 MOV.float %127 %109 BRA -> label$26 LABEL $23 LOADI.uint32 %184 0 EQ.int32 %121 %105 %184 MOV.float %123 %72 MOV.float %125 %115 MOV.float %127 %109 BRA<%121> -> label$26 LABEL $24 LABEL $25 MOV.float %123 %72 MOV.float %125 %109 MOV.float %127 %112 LABEL $26 TYPED_WRITE.float surface id 2 coord u %46 coord v %49 %123 %125 %127 %55 LABEL $27 LABEL $28 RET .end_function highlights_Chunky's SELECTION IR begin: WARNING: not completed yet, welcome for the FIX! [0] L0: [2] CMP.le(16) arf : %23<8,8,1>:UW 0x0:UW [4](f0.1) IF(16) : 0:D [6] MUL(1) %46<0>:D : %3<0,1,0>:D %12<0,1,0>:UD [8] ADD(16) %47<1>:D : %46<0,1,0>:D %0<8,8,1>:D [10] ADD(16) %48<1>:D : %47<8,8,1>:D %18<0,1,0>:D [12] MUL(1) %49<0>:D : %4<0,1,0>:D %13<0,1,0>:UD [14] ADD(16) %50<1>:D : %49<0,1,0>:D %1<8,8,1>:D [16] ADD(16) %51<1>:D : %50<8,8,1>:D %19<0,1,0>:D [18] MUL(8) arf : %51<8,8,1>:D %43<0,1,0>:D [20] MACH(8) arf : %51<8,8,1>:D %43<0,1,0>:D [22] MOV(8) %52<1>:F : arf [24] MUL(8) arf : %51<8,8,1>:D %43<0,1,0>:D [26] MACH(8) arf : %51<8,8,1>:D %43<0,1,0>:D [28] MOV(8) %201<1>:F : arf [30] MOV(8) %52<1>:F : %201<8,8,1>:F [32] SHR(16) %53<1>:UD : %52<8,8,1>:UD 0x2:UD [34] ADD(16) %54<1>:D : %48<8,8,1>:D %53<8,8,1>:D [36] MUL(16) %55<1>:UD : %54<8,8,1>:UD 0x10:UW [38] ADD(16) %56<1>:D : %42<0,1,0>:D %55<8,8,1>:D [40] ADD(16) %139<1>:UD : %56<8,8,1>:UD -%42<0,1,0>:UD [42] UNTYPED_READ(16) %57<1>:UD %58<1>:UD %59<1>:UD %60<1>:UD : %139<8,8,1>:UD 0x3:UD [44] CMP.le(16) arf : %57<8,8,1>:F 1:F [46] XOR(16) %61<1>:W : %141<8,8,1>:W -1:W [48] CMP.le(16) arf : %58<8,8,1>:F 1:F [50] XOR(16) %62<1>:W : %144<8,8,1>:W -1:W [52] OR(16) %63<1>:W : %61<8,8,1>:W %62<8,8,1>:W [54] CMP.le(16) arf : %59<8,8,1>:F 1:F [56] XOR(16) %64<1>:W : %147<8,8,1>:W -1:W [58] OR(16) %65<1>:W : %64<8,8,1>:W %63<8,8,1>:W [60](f65) MOV(16) %23<1>:UW : 0x2:UW [62] L39: [64] ENDIF(16) : 0:D [66] L1: [68] CMP.le(16) arf : %23<8,8,1>:UW 0x1:UW [70](f0.1) IF(16) : 0:D [72] MUL(16) %66<1>:UD : %54<8,8,1>:UD 0x10:UW [74] ADD(16) %67<1>:D : %41<0,1,0>:D %66<8,8,1>:D [76] ADD(16) %150<1>:UD : %67<8,8,1>:UD -%41<0,1,0>:UD [78] UNTYPED_WRITE(16) : %150<8,8,1>:UD %57<8,8,1>:UD %58<8,8,1>:UD %59<8,8,1>:UD %60<8,8,1>:UD 0x2:UD [80] MOV(16) %23<1>:UW : 0x1b:UW [82] L40: [84] ENDIF(16) : 0:D [86] L2: [88] CMP.le(16) arf : %23<8,8,1>:UW 0x2:UW [90](f0.1) JMPI(1) : 0:D [92](f0.1) IF(16) : 0:D [94] MOV(1) %151<0>:F : 1:F [96] SEL_CMP(16) %68<1>:F : %57<8,8,1>:F 1:F [98] SEL_CMP(16) %69<1>:F : %58<8,8,1>:F 1:F [100] SEL_CMP(16) %70<1>:F : %59<8,8,1>:F 1:F [102] SEL_CMP(16) %71<1>:F : %57<8,8,1>:F %58<8,8,1>:F [104] SEL_CMP(16) %72<1>:F : %71<8,8,1>:F %59<8,8,1>:F [106] SEL_CMP(16) %73<1>:F : %68<8,8,1>:F %69<8,8,1>:F [108] SEL_CMP(16) %74<1>:F : %73<8,8,1>:F %70<8,8,1>:F [110] SEL_CMP(16) %75<1>:F : %68<8,8,1>:F %69<8,8,1>:F [112] SEL_CMP(16) %76<1>:F : %75<8,8,1>:F %70<8,8,1>:F [114] ADD(16) %77<1>:F : %72<8,8,1>:F -1:F [116] MUL(16) %78<1>:F : %77<8,8,1>:F %45<0,1,0>:F [118] MAD(16) %79<1>:F : %151<0,1,0>:F %78<8,8,1>:F %78<8,8,1>:F [120] ADD(16) %80<1>:F : %76<8,8,1>:F -%74<8,8,1>:F [122] CMP.g(16) arf : %76<8,8,1>:F 0.001:F [124] MOV(1) %167<0>:F : 0:F [126] MOV(16) %107<1>:F : %167<0,1,0>:F [128] MOV(16) %109<1>:F : %167<0,1,0>:F [130](f81) IF(16) : 0:D [132] L3: [134] L4: [136] ELSE(16) : 0:D [138] L37: [140] MATH(16) %82<1>:F : %80<8,8,1>:F %76<8,8,1>:F [142] CMP.le(16) arf : (abs)%80<8,8,1>:F 0.001:F [144] XOR(16) %84<1>:W : %170<8,8,1>:W -1:W [146] MOV(1) %172<0>:F : 0:F [148] MOV(16) %109<1>:F : %172<0,1,0>:F [150] MOV(16) %99<1>:F : %172<0,1,0>:F [152](f84) IF(16) : 0:D [154] L5: [156] L6: [158] ELSE(16) : 0:D [160] L35: [162] CMP.eq(16) arf : %68<8,8,1>:F %76<8,8,1>:F [164](f85) IF(16) : 0:D [166] L7: [168] CMP.eq(16) arf : %69<8,8,1>:F %76<8,8,1>:F [170](f86) IF(16) : 0:D [172] L8: [174] ADD(16) %87<1>:F : %68<8,8,1>:F -%69<8,8,1>:F [176] MATH(16) %88<1>:F : %87<8,8,1>:F %80<8,8,1>:F [178] ADD(16) %89<1>:F : %88<8,8,1>:F 4:F [180] MOV(16) %109<1>:F : %82<8,8,1>:F [182] MOV(16) %99<1>:F : %89<8,8,1>:F [184] L9: [186] ELSE(16) : 0:D [188] L31: [190] ADD(16) %90<1>:F : %70<8,8,1>:F -%68<8,8,1>:F [192] MATH(16) %91<1>:F : %90<8,8,1>:F %80<8,8,1>:F [194] ADD(16) %92<1>:F : %91<8,8,1>:F 2:F [196] MOV(16) %109<1>:F : %82<8,8,1>:F [198] MOV(16) %99<1>:F : %92<8,8,1>:F [200] L30: [202] ENDIF(16) : 0:D [204] L10: [206] ELSE(16) : 0:D [208] L33: [210] ADD(16) %93<1>:F : %69<8,8,1>:F -%70<8,8,1>:F [212] MATH(16) %94<1>:F : %93<8,8,1>:F %80<8,8,1>:F [214] ADD(16) %99<1>:F : %94<8,8,1>:F 6:F [216] MOV(16) %109<1>:F : %82<8,8,1>:F [218] L32: [220] ENDIF(16) : 0:D [222] L34: [224] ENDIF(16) : 0:D [226] L11: [228] CMP.l(16) arf : %99<8,8,1>:F 0:F [230] ADD(16) %101<1>:F : %99<8,8,1>:F 6:F [232](f100) SEL(16) %102<1>:F : %101<8,8,1>:F %99<8,8,1>:F [234] CMP.ge(16) arf : %102<8,8,1>:F 6:F [236] XOR(16) %103<1>:W : %183<8,8,1>:W -1:W [238] ADD(16) %104<1>:F : %102<8,8,1>:F -6:F [240](f103) SEL(16) %107<1>:F : %102<8,8,1>:F %104<8,8,1>:F [242] L36: [244] ENDIF(16) : 0:D [246] L29: [248] ENDIF(16) : 0:D [250] L12: [252] CMP.le(16) arf : %23<8,8,1>:UW 0xc:UW [254](f0.1) JMPI(1) : 0:D [256](f0.1) IF(16) : 0:D [258] CMP.eq(16) arf : %109<8,8,1>:F 0:F [260] MOV(16) %130<1>:F : %79<8,8,1>:F [262] MOV(16) %132<1>:F : %79<8,8,1>:F [264] MOV(16) %134<1>:F : %79<8,8,1>:F [266](f110) MOV(16) %23<1>:UW : 0x1a:UW [268] L41: [270] ENDIF(16) : 0:D [272] L13: [274] CMP.le(16) arf : %23<8,8,1>:UW 0xd:UW [276](f0.1) JMPI(1) : 0:D [278](f0.1) IF(16) : 0:D [280] RNDD(16) %111<1>:F : %107<8,8,1>:F [282] MOV(16) %112<1>:D : %111<8,8,1>:F [284] MOV(16) %113<1>:F : %112<8,8,1>:D [286] ADD(16) %114<1>:F : %107<8,8,1>:F -%113<8,8,1>:F [288] MOV(1) %188<0>:F : 1:F [290] ADD(16) %115<1>:F : -%109<8,8,1>:F 1:F [292] MUL(16) %116<1>:F : %79<8,8,1>:F %115<8,8,1>:F [294] ADD(16) %117<1>:F : -%109<8,8,1>:F -0:F [296] MAD(16) %118<1>:F : %188<0,1,0>:F %117<8,8,1>:F %114<8,8,1>:F [298] MUL(16) %119<1>:F : %79<8,8,1>:F %118<8,8,1>:F [300] ADD(16) %120<1>:F : -%114<8,8,1>:F 1:F [302] MAD(16) %121<1>:F : %188<0,1,0>:F %117<8,8,1>:F %120<8,8,1>:F [304] MUL(16) %122<1>:F : %79<8,8,1>:F %121<8,8,1>:F [306] L42: [308] ENDIF(16) : 0:D [310] L14: [312] CMP.le(16) arf : %23<8,8,1>:UW 0xe:UW [314](f0.1) JMPI(1) : 0:D [316](f0.1) IF(16) : 0:D [318] CMP.l(16) arf : %112<8,8,1>:D 2:D [320](f123) MOV(16) %23<1>:UW : 0x15:UW [322] L43: [324] ENDIF(16) : 0:D [326] L15: [328] CMP.le(16) arf : %23<8,8,1>:UW 0xf:UW [330](f0.1) JMPI(1) : 0:D [332](f0.1) IF(16) : 0:D [334] CMP.l(16) arf : %112<8,8,1>:D 3:D [336](f124) MOV(16) %23<1>:UW : 0x14:UW [338] L44: [340] ENDIF(16) : 0:D [342] L16: [344] CMP.le(16) arf : %23<8,8,1>:UW 0x10:UW [346](f0.1) JMPI(1) : 0:D [348](f0.1) IF(16) : 0:D [350] CMP.l(16) arf : %112<8,8,1>:D 4:D [352](f125) MOV(16) %23<1>:UW : 0x13:UW [354] L45: [356] ENDIF(16) : 0:D [358] L17: [360] CMP.le(16) arf : %23<8,8,1>:UW 0x11:UW [362](f0.1) JMPI(1) : 0:D [364](f0.1) IF(16) : 0:D [366] CMP.neq(16) arf : %112<8,8,1>:D 4:D [368](f126) MOV(16) %23<1>:UW : 0x18:UW [370] L46: [372] ENDIF(16) : 0:D [374](f0.1) L18: [376] CMP.le(16) arf : %23<8,8,1>:UW 0x12:UW [378](f0.1) MOV(16) %130<1>:F : %122<8,8,1>:F [380](f0.1) MOV(16) %132<1>:F : %116<8,8,1>:F [382](f0.1) MOV(16) %134<1>:F : %79<8,8,1>:F [384](f0.1) MOV(16) %23<1>:UW : 0x1a:UW [386](f0.1) L19: [388] CMP.le(16) arf : %23<8,8,1>:UW 0x13:UW [390](f0.1) MOV(16) %130<1>:F : %116<8,8,1>:F [392](f0.1) MOV(16) %132<1>:F : %119<8,8,1>:F [394](f0.1) MOV(16) %134<1>:F : %79<8,8,1>:F [396](f0.1) MOV(16) %23<1>:UW : 0x1a:UW [398](f0.1) L20: [400] CMP.le(16) arf : %23<8,8,1>:UW 0x14:UW [402](f0.1) MOV(16) %130<1>:F : %116<8,8,1>:F [404](f0.1) MOV(16) %132<1>:F : %79<8,8,1>:F [406](f0.1) MOV(16) %134<1>:F : %122<8,8,1>:F [408](f0.1) MOV(16) %23<1>:UW : 0x1a:UW [410] L21: [412] CMP.le(16) arf : %23<8,8,1>:UW 0x15:UW [414](f0.1) JMPI(1) : 0:D [416](f0.1) IF(16) : 0:D [418] CMP.l(16) arf : %112<8,8,1>:D 1:D [420](f127) MOV(16) %23<1>:UW : 0x17:UW [422] L47: [424] ENDIF(16) : 0:D [426](f0.1) L22: [428] CMP.le(16) arf : %23<8,8,1>:UW 0x16:UW [430](f0.1) MOV(16) %130<1>:F : %119<8,8,1>:F [432](f0.1) MOV(16) %132<1>:F : %79<8,8,1>:F [434](f0.1) MOV(16) %134<1>:F : %116<8,8,1>:F [436](f0.1) MOV(16) %23<1>:UW : 0x1a:UW [438] L23: [440] CMP.le(16) arf : %23<8,8,1>:UW 0x17:UW [442](f0.1) IF(16) : 0:D [444] CMP.eq(16) arf : %112<8,8,1>:D 0:D [446] MOV(16) %130<1>:F : %79<8,8,1>:F [448] MOV(16) %132<1>:F : %122<8,8,1>:F [450] MOV(16) %134<1>:F : %116<8,8,1>:F [452](f128) MOV(16) %23<1>:UW : 0x1a:UW [454] L48: [456] ENDIF(16) : 0:D [458](f0.1) L24: [460] CMP.le(16) arf : %23<8,8,1>:UW 0x18:UW [462](f0.1) JMPI(1) : 0:D [464](f0.1) L25: [466] CMP.le(16) arf : %23<8,8,1>:UW 0x19:UW [468](f0.1) MOV(16) %130<1>:F : %79<8,8,1>:F [470](f0.1) MOV(16) %132<1>:F : %116<8,8,1>:F [472](f0.1) MOV(16) %134<1>:F : %119<8,8,1>:F [474] L26: [476] CMP.le(16) arf : %23<8,8,1>:UW 0x1a:UW [478](f0.1) IF(16) : 0:D [480] MUL(16) %135<1>:UD : %54<8,8,1>:UD 0x10:UW [482] ADD(16) %136<1>:D : %41<0,1,0>:D %135<8,8,1>:D [484] ADD(16) %200<1>:UD : %136<8,8,1>:UD -%41<0,1,0>:UD [486] UNTYPED_WRITE(16) : %200<8,8,1>:UD %130<8,8,1>:UD %132<8,8,1>:UD %134<8,8,1>:UD %60<8,8,1>:UD 0x2:UD [488] L49: [490] ENDIF(16) : 0:D [492](f0.1) L27: [494] CMP.le(16) arf : %23<8,8,1>:UW 0x1b:UW [496](f0.1) L28: [498](f0.1) EOT(16) : highlights_Chunky's SELECTION IR end. highlights_Planar's SELECTION IR begin: WARNING: not completed yet, welcome for the FIX! [0] L0: [2] CMP.le(16) arf : %23<8,8,1>:UW 0x0:UW [4](f0.1) IF(16) : 0:D [6] MUL(1) %46<0>:D : %3<0,1,0>:D %12<0,1,0>:UD [8] ADD(16) %47<1>:D : %46<0,1,0>:D %0<8,8,1>:D [10] ADD(16) %48<1>:D : %47<8,8,1>:D %18<0,1,0>:D [12] MUL(1) %49<0>:D : %4<0,1,0>:D %13<0,1,0>:UD [14] ADD(16) %50<1>:D : %49<0,1,0>:D %1<8,8,1>:D [16] ADD(16) %51<1>:D : %50<8,8,1>:D %19<0,1,0>:D [18] MUL(8) arf : %51<8,8,1>:D %43<0,1,0>:D [20] MACH(8) arf : %51<8,8,1>:D %43<0,1,0>:D [22] MOV(8) %52<1>:F : arf [24] MUL(8) arf : %51<8,8,1>:D %43<0,1,0>:D [26] MACH(8) arf : %51<8,8,1>:D %43<0,1,0>:D [28] MOV(8) %226<1>:F : arf [30] MOV(8) %52<1>:F : %226<8,8,1>:F [32] ADD(16) %53<1>:D : %48<8,8,1>:D %52<8,8,1>:D [34] MUL(16) %54<1>:UD : %53<8,8,1>:UD 0x4:UW [36] ADD(16) %55<1>:D : %42<0,1,0>:D %54<8,8,1>:D [38] ADD(16) %151<1>:UD : %55<8,8,1>:UD -%42<0,1,0>:UD [40] UNTYPED_READ(16) %56<1>:UD : %151<8,8,1>:UD 0x3:UD [42] ADD(16) %57<1>:D : %53<8,8,1>:D %44<0,1,0>:D [44] MUL(16) %58<1>:UD : %57<8,8,1>:UD 0x4:UW [46] ADD(16) %59<1>:D : %42<0,1,0>:D %58<8,8,1>:D [48] ADD(16) %153<1>:UD : %59<8,8,1>:UD -%42<0,1,0>:UD [50] UNTYPED_READ(16) %60<1>:UD : %153<8,8,1>:UD 0x3:UD [52] SHL(1) %61<0>:D : %44<0,1,0>:D 1:D [54] ADD(16) %62<1>:D : %53<8,8,1>:D %61<0,1,0>:D [56] MUL(16) %63<1>:UD : %62<8,8,1>:UD 0x4:UW [58] ADD(16) %64<1>:D : %42<0,1,0>:D %63<8,8,1>:D [60] ADD(16) %156<1>:UD : %64<8,8,1>:UD -%42<0,1,0>:UD [62] UNTYPED_READ(16) %65<1>:UD : %156<8,8,1>:UD 0x3:UD [64] CMP.le(16) arf : %56<8,8,1>:F 1:F [66] XOR(16) %66<1>:W : %158<8,8,1>:W -1:W [68] CMP.le(16) arf : %60<8,8,1>:F 1:F [70] XOR(16) %67<1>:W : %161<8,8,1>:W -1:W [72] OR(16) %68<1>:W : %66<8,8,1>:W %67<8,8,1>:W [74] CMP.le(16) arf : %65<8,8,1>:F 1:F [76] XOR(16) %69<1>:W : %164<8,8,1>:W -1:W [78] OR(16) %70<1>:W : %68<8,8,1>:W %69<8,8,1>:W [80](f70) MOV(16) %23<1>:UW : 0x2:UW [82] L39: [84] ENDIF(16) : 0:D [86] L1: [88] CMP.le(16) arf : %23<8,8,1>:UW 0x1:UW [90](f0.1) IF(16) : 0:D [92] MUL(16) %71<1>:UD : %53<8,8,1>:UD 0x4:UW [94] ADD(16) %72<1>:D : %41<0,1,0>:D %71<8,8,1>:D [96] ADD(16) %167<1>:UD : %72<8,8,1>:UD -%41<0,1,0>:UD [98] UNTYPED_WRITE(16) : %167<8,8,1>:UD %56<8,8,1>:UD 0x2:UD [100] MUL(16) %73<1>:UD : %57<8,8,1>:UD 0x4:UW [102] ADD(16) %74<1>:D : %41<0,1,0>:D %73<8,8,1>:D [104] ADD(16) %169<1>:UD : %74<8,8,1>:UD -%41<0,1,0>:UD [106] UNTYPED_WRITE(16) : %169<8,8,1>:UD %60<8,8,1>:UD 0x2:UD [108] MUL(16) %75<1>:UD : %62<8,8,1>:UD 0x4:UW [110] ADD(16) %76<1>:D : %41<0,1,0>:D %75<8,8,1>:D [112] ADD(16) %171<1>:UD : %76<8,8,1>:UD -%41<0,1,0>:UD [114] UNTYPED_WRITE(16) : %171<8,8,1>:UD %65<8,8,1>:UD 0x2:UD [116] MOV(16) %23<1>:UW : 0x1b:UW [118] L40: [120] ENDIF(16) : 0:D [122] L2: [124] CMP.le(16) arf : %23<8,8,1>:UW 0x2:UW [126](f0.1) JMPI(1) : 0:D [128](f0.1) IF(16) : 0:D [130] MOV(1) %172<0>:F : 1:F [132] SEL_CMP(16) %77<1>:F : %56<8,8,1>:F 1:F [134] SEL_CMP(16) %78<1>:F : %60<8,8,1>:F 1:F [136] SEL_CMP(16) %79<1>:F : %65<8,8,1>:F 1:F [138] SEL_CMP(16) %80<1>:F : %56<8,8,1>:F %60<8,8,1>:F [140] SEL_CMP(16) %81<1>:F : %80<8,8,1>:F %65<8,8,1>:F [142] SEL_CMP(16) %82<1>:F : %77<8,8,1>:F %78<8,8,1>:F [144] SEL_CMP(16) %83<1>:F : %82<8,8,1>:F %79<8,8,1>:F [146] SEL_CMP(16) %84<1>:F : %77<8,8,1>:F %78<8,8,1>:F [148] SEL_CMP(16) %85<1>:F : %84<8,8,1>:F %79<8,8,1>:F [150] ADD(16) %86<1>:F : %81<8,8,1>:F -1:F [152] MUL(16) %87<1>:F : %86<8,8,1>:F %45<0,1,0>:F [154] MAD(16) %88<1>:F : %172<0,1,0>:F %87<8,8,1>:F %87<8,8,1>:F [156] ADD(16) %89<1>:F : %85<8,8,1>:F -%83<8,8,1>:F [158] CMP.g(16) arf : %85<8,8,1>:F 0.001:F [160] MOV(1) %188<0>:F : 0:F [162] MOV(16) %116<1>:F : %188<0,1,0>:F [164] MOV(16) %118<1>:F : %188<0,1,0>:F [166](f90) IF(16) : 0:D [168] L3: [170] L4: [172] ELSE(16) : 0:D [174] L37: [176] MATH(16) %91<1>:F : %89<8,8,1>:F %85<8,8,1>:F [178] CMP.le(16) arf : (abs)%89<8,8,1>:F 0.001:F [180] XOR(16) %93<1>:W : %191<8,8,1>:W -1:W [182] MOV(1) %193<0>:F : 0:F [184] MOV(16) %118<1>:F : %193<0,1,0>:F [186] MOV(16) %108<1>:F : %193<0,1,0>:F [188](f93) IF(16) : 0:D [190] L5: [192] L6: [194] ELSE(16) : 0:D [196] L35: [198] CMP.eq(16) arf : %77<8,8,1>:F %85<8,8,1>:F [200](f94) IF(16) : 0:D [202] L7: [204] CMP.eq(16) arf : %78<8,8,1>:F %85<8,8,1>:F [206](f95) IF(16) : 0:D [208] L8: [210] ADD(16) %96<1>:F : %77<8,8,1>:F -%78<8,8,1>:F [212] MATH(16) %97<1>:F : %96<8,8,1>:F %89<8,8,1>:F [214] ADD(16) %98<1>:F : %97<8,8,1>:F 4:F [216] MOV(16) %118<1>:F : %91<8,8,1>:F [218] MOV(16) %108<1>:F : %98<8,8,1>:F [220] L9: [222] ELSE(16) : 0:D [224] L31: [226] ADD(16) %99<1>:F : %79<8,8,1>:F -%77<8,8,1>:F [228] MATH(16) %100<1>:F : %99<8,8,1>:F %89<8,8,1>:F [230] ADD(16) %101<1>:F : %100<8,8,1>:F 2:F [232] MOV(16) %118<1>:F : %91<8,8,1>:F [234] MOV(16) %108<1>:F : %101<8,8,1>:F [236] L30: [238] ENDIF(16) : 0:D [240] L10: [242] ELSE(16) : 0:D [244] L33: [246] ADD(16) %102<1>:F : %78<8,8,1>:F -%79<8,8,1>:F [248] MATH(16) %103<1>:F : %102<8,8,1>:F %89<8,8,1>:F [250] ADD(16) %108<1>:F : %103<8,8,1>:F 6:F [252] MOV(16) %118<1>:F : %91<8,8,1>:F [254] L32: [256] ENDIF(16) : 0:D [258] L34: [260] ENDIF(16) : 0:D [262] L11: [264] CMP.l(16) arf : %108<8,8,1>:F 0:F [266] ADD(16) %110<1>:F : %108<8,8,1>:F 6:F [268](f109) SEL(16) %111<1>:F : %110<8,8,1>:F %108<8,8,1>:F [270] CMP.ge(16) arf : %111<8,8,1>:F 6:F [272] XOR(16) %112<1>:W : %204<8,8,1>:W -1:W [274] ADD(16) %113<1>:F : %111<8,8,1>:F -6:F [276](f112) SEL(16) %116<1>:F : %111<8,8,1>:F %113<8,8,1>:F [278] L36: [280] ENDIF(16) : 0:D [282] L29: [284] ENDIF(16) : 0:D [286] L12: [288] CMP.le(16) arf : %23<8,8,1>:UW 0xc:UW [290](f0.1) JMPI(1) : 0:D [292](f0.1) IF(16) : 0:D [294] CMP.eq(16) arf : %118<8,8,1>:F 0:F [296] MOV(16) %139<1>:F : %88<8,8,1>:F [298] MOV(16) %141<1>:F : %88<8,8,1>:F [300] MOV(16) %143<1>:F : %88<8,8,1>:F [302](f119) MOV(16) %23<1>:UW : 0x1a:UW [304] L41: [306] ENDIF(16) : 0:D [308] L13: [310] CMP.le(16) arf : %23<8,8,1>:UW 0xd:UW [312](f0.1) JMPI(1) : 0:D [314](f0.1) IF(16) : 0:D [316] RNDD(16) %120<1>:F : %116<8,8,1>:F [318] MOV(16) %121<1>:D : %120<8,8,1>:F [320] MOV(16) %122<1>:F : %121<8,8,1>:D [322] ADD(16) %123<1>:F : %116<8,8,1>:F -%122<8,8,1>:F [324] MOV(1) %209<0>:F : 1:F [326] ADD(16) %124<1>:F : -%118<8,8,1>:F 1:F [328] MUL(16) %125<1>:F : %88<8,8,1>:F %124<8,8,1>:F [330] ADD(16) %126<1>:F : -%118<8,8,1>:F -0:F [332] MAD(16) %127<1>:F : %209<0,1,0>:F %126<8,8,1>:F %123<8,8,1>:F [334] MUL(16) %128<1>:F : %88<8,8,1>:F %127<8,8,1>:F [336] ADD(16) %129<1>:F : -%123<8,8,1>:F 1:F [338] MAD(16) %130<1>:F : %209<0,1,0>:F %126<8,8,1>:F %129<8,8,1>:F [340] MUL(16) %131<1>:F : %88<8,8,1>:F %130<8,8,1>:F [342] L42: [344] ENDIF(16) : 0:D [346] L14: [348] CMP.le(16) arf : %23<8,8,1>:UW 0xe:UW [350](f0.1) JMPI(1) : 0:D [352](f0.1) IF(16) : 0:D [354] CMP.l(16) arf : %121<8,8,1>:D 2:D [356](f132) MOV(16) %23<1>:UW : 0x15:UW [358] L43: [360] ENDIF(16) : 0:D [362] L15: [364] CMP.le(16) arf : %23<8,8,1>:UW 0xf:UW [366](f0.1) JMPI(1) : 0:D [368](f0.1) IF(16) : 0:D [370] CMP.l(16) arf : %121<8,8,1>:D 3:D [372](f133) MOV(16) %23<1>:UW : 0x14:UW [374] L44: [376] ENDIF(16) : 0:D [378] L16: [380] CMP.le(16) arf : %23<8,8,1>:UW 0x10:UW [382](f0.1) JMPI(1) : 0:D [384](f0.1) IF(16) : 0:D [386] CMP.l(16) arf : %121<8,8,1>:D 4:D [388](f134) MOV(16) %23<1>:UW : 0x13:UW [390] L45: [392] ENDIF(16) : 0:D [394] L17: [396] CMP.le(16) arf : %23<8,8,1>:UW 0x11:UW [398](f0.1) JMPI(1) : 0:D [400](f0.1) IF(16) : 0:D [402] CMP.neq(16) arf : %121<8,8,1>:D 4:D [404](f135) MOV(16) %23<1>:UW : 0x18:UW [406] L46: [408] ENDIF(16) : 0:D [410](f0.1) L18: [412] CMP.le(16) arf : %23<8,8,1>:UW 0x12:UW [414](f0.1) MOV(16) %139<1>:F : %131<8,8,1>:F [416](f0.1) MOV(16) %141<1>:F : %125<8,8,1>:F [418](f0.1) MOV(16) %143<1>:F : %88<8,8,1>:F [420](f0.1) MOV(16) %23<1>:UW : 0x1a:UW [422](f0.1) L19: [424] CMP.le(16) arf : %23<8,8,1>:UW 0x13:UW [426](f0.1) MOV(16) %139<1>:F : %125<8,8,1>:F [428](f0.1) MOV(16) %141<1>:F : %128<8,8,1>:F [430](f0.1) MOV(16) %143<1>:F : %88<8,8,1>:F [432](f0.1) MOV(16) %23<1>:UW : 0x1a:UW [434](f0.1) L20: [436] CMP.le(16) arf : %23<8,8,1>:UW 0x14:UW [438](f0.1) MOV(16) %139<1>:F : %125<8,8,1>:F [440](f0.1) MOV(16) %141<1>:F : %88<8,8,1>:F [442](f0.1) MOV(16) %143<1>:F : %131<8,8,1>:F [444](f0.1) MOV(16) %23<1>:UW : 0x1a:UW [446] L21: [448] CMP.le(16) arf : %23<8,8,1>:UW 0x15:UW [450](f0.1) JMPI(1) : 0:D [452](f0.1) IF(16) : 0:D [454] CMP.l(16) arf : %121<8,8,1>:D 1:D [456](f136) MOV(16) %23<1>:UW : 0x17:UW [458] L47: [460] ENDIF(16) : 0:D [462](f0.1) L22: [464] CMP.le(16) arf : %23<8,8,1>:UW 0x16:UW [466](f0.1) MOV(16) %139<1>:F : %128<8,8,1>:F [468](f0.1) MOV(16) %141<1>:F : %88<8,8,1>:F [470](f0.1) MOV(16) %143<1>:F : %125<8,8,1>:F [472](f0.1) MOV(16) %23<1>:UW : 0x1a:UW [474] L23: [476] CMP.le(16) arf : %23<8,8,1>:UW 0x17:UW [478](f0.1) IF(16) : 0:D [480] CMP.eq(16) arf : %121<8,8,1>:D 0:D [482] MOV(16) %139<1>:F : %88<8,8,1>:F [484] MOV(16) %141<1>:F : %131<8,8,1>:F [486] MOV(16) %143<1>:F : %125<8,8,1>:F [488](f137) MOV(16) %23<1>:UW : 0x1a:UW [490] L48: [492] ENDIF(16) : 0:D [494](f0.1) L24: [496] CMP.le(16) arf : %23<8,8,1>:UW 0x18:UW [498](f0.1) JMPI(1) : 0:D [500](f0.1) L25: [502] CMP.le(16) arf : %23<8,8,1>:UW 0x19:UW [504](f0.1) MOV(16) %139<1>:F : %88<8,8,1>:F [506](f0.1) MOV(16) %141<1>:F : %125<8,8,1>:F [508](f0.1) MOV(16) %143<1>:F : %128<8,8,1>:F [510] L26: [512] CMP.le(16) arf : %23<8,8,1>:UW 0x1a:UW [514](f0.1) IF(16) : 0:D [516] MUL(16) %144<1>:UD : %53<8,8,1>:UD 0x4:UW [518] ADD(16) %145<1>:D : %41<0,1,0>:D %144<8,8,1>:D [520] ADD(16) %221<1>:UD : %145<8,8,1>:UD -%41<0,1,0>:UD [522] UNTYPED_WRITE(16) : %221<8,8,1>:UD %139<8,8,1>:UD 0x2:UD [524] MUL(16) %146<1>:UD : %57<8,8,1>:UD 0x4:UW [526] ADD(16) %147<1>:D : %41<0,1,0>:D %146<8,8,1>:D [528] ADD(16) %223<1>:UD : %147<8,8,1>:UD -%41<0,1,0>:UD [530] UNTYPED_WRITE(16) : %223<8,8,1>:UD %141<8,8,1>:UD 0x2:UD [532] MUL(16) %148<1>:UD : %62<8,8,1>:UD 0x4:UW [534] ADD(16) %149<1>:D : %41<0,1,0>:D %148<8,8,1>:D [536] ADD(16) %225<1>:UD : %149<8,8,1>:UD -%41<0,1,0>:UD [538] UNTYPED_WRITE(16) : %225<8,8,1>:UD %143<8,8,1>:UD 0x2:UD [540] L49: [542] ENDIF(16) : 0:D [544](f0.1) L27: [546] CMP.le(16) arf : %23<8,8,1>:UW 0x1b:UW [548](f0.1) L28: [550](f0.1) EOT(16) : highlights_Planar's SELECTION IR end. rgbSharpen_Image2D's SELECTION IR begin: WARNING: not completed yet, welcome for the FIX! [0] L0: [2] CMP.le(16) arf : %23<8,8,1>:UW 0x0:UW [4](f0.1) IF(16) : 0:D [6] MUL(1) %44<0>:D : %3<0,1,0>:D %12<0,1,0>:UD [8] ADD(16) %45<1>:D : %44<0,1,0>:D %0<8,8,1>:D [10] ADD(16) %46<1>:D : %45<8,8,1>:D %18<0,1,0>:D [12] MUL(1) %47<0>:D : %4<0,1,0>:D %13<0,1,0>:UD [14] ADD(16) %48<1>:D : %47<0,1,0>:D %1<8,8,1>:D [16] ADD(16) %49<1>:D : %48<8,8,1>:D %19<0,1,0>:D [18] MOV(16) %50<1>:F : %46<8,8,1>:D [20] MOV(16) %51<1>:F : %49<8,8,1>:D [22] SAMPLE(16) %52<1>:F %53<1>:F %54<1>:F %55<1>:F : %50<8,8,1>:F %51<8,8,1>:F [24] CMP.le(16) arf : %52<8,8,1>:F 1:F [26] XOR(16) %56<1>:W : %129<8,8,1>:W -1:W [28] CMP.le(16) arf : %53<8,8,1>:F 1:F [30] XOR(16) %57<1>:W : %132<8,8,1>:W -1:W [32] OR(16) %58<1>:W : %56<8,8,1>:W %57<8,8,1>:W [34] CMP.le(16) arf : %54<8,8,1>:F 1:F [36] XOR(16) %59<1>:W : %135<8,8,1>:W -1:W [38] OR(16) %60<1>:W : %59<8,8,1>:W %58<8,8,1>:W [40](f60) MOV(16) %23<1>:UW : 0x2:UW [42] L39: [44] ENDIF(16) : 0:D [46](f0.1) L1: [48] CMP.le(16) arf : %23<8,8,1>:UW 0x1:UW [50] MOV(16) %185<1>:UD : 0x0:UD [52] MOV(1) %185.28<1>:UD : 0xffff:UD [54](f0.1) MOV(8) %186<1>:UD : %46<8,8,1>:UD [56](f0.1) MOV(8) %187<1>:UD : %49<8,8,1>:UD [58](f0.1) MOV(8) %188<1>:UD : 0x0:UD [60](f0.1) MOV(8) %189<1>:UD : 0x0:UD [62](f0.1) MOV(8) %190<1>:F : %52<8,8,1>:F [64](f0.1) MOV(8) %191<1>:F : %53<8,8,1>:F [66](f0.1) MOV(8) %192<1>:F : %54<8,8,1>:F [68](f0.1) MOV(8) %193<1>:F : %55<8,8,1>:F [70](f0.1) TYPED_WRITE(8) : %185<8,8,1>:UD %186<8,8,1>:UD %187<8,8,1>:UD %188<8,8,1>:UD %189<8,8,1>:UD %190<8,8,1>:UD %191<8,8,1>:UD %192<8,8,1>:UD %193<8,8,1>:UD [72](f0.1) MOV(8) %186<1>:UD : %46<8,8,1>:UD [74](f0.1) MOV(8) %187<1>:UD : %49<8,8,1>:UD [76](f0.1) MOV(8) %188<1>:UD : 0x0:UD [78](f0.1) MOV(8) %189<1>:UD : 0x0:UD [80](f0.1) MOV(8) %190<1>:F : %52<8,8,1>:F [82](f0.1) MOV(8) %191<1>:F : %53<8,8,1>:F [84](f0.1) MOV(8) %192<1>:F : %54<8,8,1>:F [86](f0.1) MOV(8) %193<1>:F : %55<8,8,1>:F [88](f0.1) TYPED_WRITE(8) : %185<8,8,1>:UD %186<8,8,1>:UD %187<8,8,1>:UD %188<8,8,1>:UD %189<8,8,1>:UD %190<8,8,1>:UD %191<8,8,1>:UD %192<8,8,1>:UD %193<8,8,1>:UD [90](f0.1) MOV(16) %23<1>:UW : 0x1b:UW [92] L2: [94] CMP.le(16) arf : %23<8,8,1>:UW 0x2:UW [96](f0.1) JMPI(1) : 0:D [98](f0.1) IF(16) : 0:D [100] MOV(1) %137<0>:F : 1:F [102] SEL_CMP(16) %61<1>:F : %52<8,8,1>:F 1:F [104] SEL_CMP(16) %62<1>:F : %53<8,8,1>:F 1:F [106] SEL_CMP(16) %63<1>:F : %54<8,8,1>:F 1:F [108] SEL_CMP(16) %64<1>:F : %52<8,8,1>:F %53<8,8,1>:F [110] SEL_CMP(16) %65<1>:F : %64<8,8,1>:F %54<8,8,1>:F [112] SEL_CMP(16) %66<1>:F : %61<8,8,1>:F %62<8,8,1>:F [114] SEL_CMP(16) %67<1>:F : %66<8,8,1>:F %63<8,8,1>:F [116] SEL_CMP(16) %68<1>:F : %61<8,8,1>:F %62<8,8,1>:F [118] SEL_CMP(16) %69<1>:F : %68<8,8,1>:F %63<8,8,1>:F [120] ADD(16) %70<1>:F : %65<8,8,1>:F -1:F [122] MUL(16) %71<1>:F : %70<8,8,1>:F %43<0,1,0>:F [124] MAD(16) %72<1>:F : %137<0,1,0>:F %71<8,8,1>:F %71<8,8,1>:F [126] ADD(16) %73<1>:F : %69<8,8,1>:F -%67<8,8,1>:F [128] CMP.g(16) arf : %69<8,8,1>:F 0.001:F [130] MOV(1) %153<0>:F : 0:F [132] MOV(16) %100<1>:F : %153<0,1,0>:F [134] MOV(16) %102<1>:F : %153<0,1,0>:F [136](f74) IF(16) : 0:D [138] L3: [140] L4: [142] ELSE(16) : 0:D [144] L37: [146] MATH(16) %75<1>:F : %73<8,8,1>:F %69<8,8,1>:F [148] CMP.le(16) arf : (abs)%73<8,8,1>:F 0.001:F [150] XOR(16) %77<1>:W : %156<8,8,1>:W -1:W [152] MOV(1) %158<0>:F : 0:F [154] MOV(16) %102<1>:F : %158<0,1,0>:F [156] MOV(16) %92<1>:F : %158<0,1,0>:F [158](f77) IF(16) : 0:D [160] L5: [162] L6: [164] ELSE(16) : 0:D [166] L35: [168] CMP.eq(16) arf : %61<8,8,1>:F %69<8,8,1>:F [170](f78) IF(16) : 0:D [172] L7: [174] CMP.eq(16) arf : %62<8,8,1>:F %69<8,8,1>:F [176](f79) IF(16) : 0:D [178] L8: [180] ADD(16) %80<1>:F : %61<8,8,1>:F -%62<8,8,1>:F [182] MATH(16) %81<1>:F : %80<8,8,1>:F %73<8,8,1>:F [184] ADD(16) %82<1>:F : %81<8,8,1>:F 4:F [186] MOV(16) %102<1>:F : %75<8,8,1>:F [188] MOV(16) %92<1>:F : %82<8,8,1>:F [190] L9: [192] ELSE(16) : 0:D [194] L31: [196] ADD(16) %83<1>:F : %63<8,8,1>:F -%61<8,8,1>:F [198] MATH(16) %84<1>:F : %83<8,8,1>:F %73<8,8,1>:F [200] ADD(16) %85<1>:F : %84<8,8,1>:F 2:F [202] MOV(16) %102<1>:F : %75<8,8,1>:F [204] MOV(16) %92<1>:F : %85<8,8,1>:F [206] L30: [208] ENDIF(16) : 0:D [210] L10: [212] ELSE(16) : 0:D [214] L33: [216] ADD(16) %86<1>:F : %62<8,8,1>:F -%63<8,8,1>:F [218] MATH(16) %87<1>:F : %86<8,8,1>:F %73<8,8,1>:F [220] ADD(16) %92<1>:F : %87<8,8,1>:F 6:F [222] MOV(16) %102<1>:F : %75<8,8,1>:F [224] L32: [226] ENDIF(16) : 0:D [228] L34: [230] ENDIF(16) : 0:D [232] L11: [234] CMP.l(16) arf : %92<8,8,1>:F 0:F [236] ADD(16) %94<1>:F : %92<8,8,1>:F 6:F [238](f93) SEL(16) %95<1>:F : %94<8,8,1>:F %92<8,8,1>:F [240] CMP.ge(16) arf : %95<8,8,1>:F 6:F [242] XOR(16) %96<1>:W : %169<8,8,1>:W -1:W [244] ADD(16) %97<1>:F : %95<8,8,1>:F -6:F [246](f96) SEL(16) %100<1>:F : %95<8,8,1>:F %97<8,8,1>:F [248] L36: [250] ENDIF(16) : 0:D [252] L29: [254] ENDIF(16) : 0:D [256] L12: [258] CMP.le(16) arf : %23<8,8,1>:UW 0xc:UW [260](f0.1) JMPI(1) : 0:D [262](f0.1) IF(16) : 0:D [264] CMP.eq(16) arf : %102<8,8,1>:F 0:F [266] MOV(16) %123<1>:F : %72<8,8,1>:F [268] MOV(16) %125<1>:F : %72<8,8,1>:F [270] MOV(16) %127<1>:F : %72<8,8,1>:F [272](f103) MOV(16) %23<1>:UW : 0x1a:UW [274] L40: [276] ENDIF(16) : 0:D [278] L13: [280] CMP.le(16) arf : %23<8,8,1>:UW 0xd:UW [282](f0.1) JMPI(1) : 0:D [284](f0.1) IF(16) : 0:D [286] RNDD(16) %104<1>:F : %100<8,8,1>:F [288] MOV(16) %105<1>:D : %104<8,8,1>:F [290] MOV(16) %106<1>:F : %105<8,8,1>:D [292] ADD(16) %107<1>:F : %100<8,8,1>:F -%106<8,8,1>:F [294] MOV(1) %174<0>:F : 1:F [296] ADD(16) %108<1>:F : -%102<8,8,1>:F 1:F [298] MUL(16) %109<1>:F : %72<8,8,1>:F %108<8,8,1>:F [300] ADD(16) %110<1>:F : -%102<8,8,1>:F -0:F [302] MAD(16) %111<1>:F : %174<0,1,0>:F %110<8,8,1>:F %107<8,8,1>:F [304] MUL(16) %112<1>:F : %72<8,8,1>:F %111<8,8,1>:F [306] ADD(16) %113<1>:F : -%107<8,8,1>:F 1:F [308] MAD(16) %114<1>:F : %174<0,1,0>:F %110<8,8,1>:F %113<8,8,1>:F [310] MUL(16) %115<1>:F : %72<8,8,1>:F %114<8,8,1>:F [312] L41: [314] ENDIF(16) : 0:D [316] L14: [318] CMP.le(16) arf : %23<8,8,1>:UW 0xe:UW [320](f0.1) JMPI(1) : 0:D [322](f0.1) IF(16) : 0:D [324] CMP.l(16) arf : %105<8,8,1>:D 2:D [326](f116) MOV(16) %23<1>:UW : 0x15:UW [328] L42: [330] ENDIF(16) : 0:D [332] L15: [334] CMP.le(16) arf : %23<8,8,1>:UW 0xf:UW [336](f0.1) JMPI(1) : 0:D [338](f0.1) IF(16) : 0:D [340] CMP.l(16) arf : %105<8,8,1>:D 3:D [342](f117) MOV(16) %23<1>:UW : 0x14:UW [344] L43: [346] ENDIF(16) : 0:D [348] L16: [350] CMP.le(16) arf : %23<8,8,1>:UW 0x10:UW [352](f0.1) JMPI(1) : 0:D [354](f0.1) IF(16) : 0:D [356] CMP.l(16) arf : %105<8,8,1>:D 4:D [358](f118) MOV(16) %23<1>:UW : 0x13:UW [360] L44: [362] ENDIF(16) : 0:D [364] L17: [366] CMP.le(16) arf : %23<8,8,1>:UW 0x11:UW [368](f0.1) JMPI(1) : 0:D [370](f0.1) IF(16) : 0:D [372] CMP.neq(16) arf : %105<8,8,1>:D 4:D [374](f119) MOV(16) %23<1>:UW : 0x18:UW [376] L45: [378] ENDIF(16) : 0:D [380](f0.1) L18: [382] CMP.le(16) arf : %23<8,8,1>:UW 0x12:UW [384](f0.1) MOV(16) %123<1>:F : %115<8,8,1>:F [386](f0.1) MOV(16) %125<1>:F : %109<8,8,1>:F [388](f0.1) MOV(16) %127<1>:F : %72<8,8,1>:F [390](f0.1) MOV(16) %23<1>:UW : 0x1a:UW [392](f0.1) L19: [394] CMP.le(16) arf : %23<8,8,1>:UW 0x13:UW [396](f0.1) MOV(16) %123<1>:F : %109<8,8,1>:F [398](f0.1) MOV(16) %125<1>:F : %112<8,8,1>:F [400](f0.1) MOV(16) %127<1>:F : %72<8,8,1>:F [402](f0.1) MOV(16) %23<1>:UW : 0x1a:UW [404](f0.1) L20: [406] CMP.le(16) arf : %23<8,8,1>:UW 0x14:UW [408](f0.1) MOV(16) %123<1>:F : %109<8,8,1>:F [410](f0.1) MOV(16) %125<1>:F : %72<8,8,1>:F [412](f0.1) MOV(16) %127<1>:F : %115<8,8,1>:F [414](f0.1) MOV(16) %23<1>:UW : 0x1a:UW [416] L21: [418] CMP.le(16) arf : %23<8,8,1>:UW 0x15:UW [420](f0.1) JMPI(1) : 0:D [422](f0.1) IF(16) : 0:D [424] CMP.l(16) arf : %105<8,8,1>:D 1:D [426](f120) MOV(16) %23<1>:UW : 0x17:UW [428] L46: [430] ENDIF(16) : 0:D [432](f0.1) L22: [434] CMP.le(16) arf : %23<8,8,1>:UW 0x16:UW [436](f0.1) MOV(16) %123<1>:F : %112<8,8,1>:F [438](f0.1) MOV(16) %125<1>:F : %72<8,8,1>:F [440](f0.1) MOV(16) %127<1>:F : %109<8,8,1>:F [442](f0.1) MOV(16) %23<1>:UW : 0x1a:UW [444] L23: [446] CMP.le(16) arf : %23<8,8,1>:UW 0x17:UW [448](f0.1) IF(16) : 0:D [450] CMP.eq(16) arf : %105<8,8,1>:D 0:D [452] MOV(16) %123<1>:F : %72<8,8,1>:F [454] MOV(16) %125<1>:F : %115<8,8,1>:F [456] MOV(16) %127<1>:F : %109<8,8,1>:F [458](f121) MOV(16) %23<1>:UW : 0x1a:UW [460] L47: [462] ENDIF(16) : 0:D [464](f0.1) L24: [466] CMP.le(16) arf : %23<8,8,1>:UW 0x18:UW [468](f0.1) JMPI(1) : 0:D [470](f0.1) L25: [472] CMP.le(16) arf : %23<8,8,1>:UW 0x19:UW [474](f0.1) MOV(16) %123<1>:F : %72<8,8,1>:F [476](f0.1) MOV(16) %125<1>:F : %109<8,8,1>:F [478](f0.1) MOV(16) %127<1>:F : %112<8,8,1>:F [480](f0.1) L26: [482] CMP.le(16) arf : %23<8,8,1>:UW 0x1a:UW [484] MOV(16) %194<1>:UD : 0x0:UD [486] MOV(1) %194.28<1>:UD : 0xffff:UD [488](f0.1) MOV(8) %195<1>:UD : %46<8,8,1>:UD [490](f0.1) MOV(8) %196<1>:UD : %49<8,8,1>:UD [492](f0.1) MOV(8) %197<1>:UD : 0x0:UD [494](f0.1) MOV(8) %198<1>:UD : 0x0:UD [496](f0.1) MOV(8) %199<1>:F : %123<8,8,1>:F [498](f0.1) MOV(8) %200<1>:F : %125<8,8,1>:F [500](f0.1) MOV(8) %201<1>:F : %127<8,8,1>:F [502](f0.1) MOV(8) %202<1>:F : %55<8,8,1>:F [504](f0.1) TYPED_WRITE(8) : %194<8,8,1>:UD %195<8,8,1>:UD %196<8,8,1>:UD %197<8,8,1>:UD %198<8,8,1>:UD %199<8,8,1>:UD %200<8,8,1>:UD %201<8,8,1>:UD %202<8,8,1>:UD [506](f0.1) MOV(8) %195<1>:UD : %46<8,8,1>:UD [508](f0.1) MOV(8) %196<1>:UD : %49<8,8,1>:UD [510](f0.1) MOV(8) %197<1>:UD : 0x0:UD [512](f0.1) MOV(8) %198<1>:UD : 0x0:UD [514](f0.1) MOV(8) %199<1>:F : %123<8,8,1>:F [516](f0.1) MOV(8) %200<1>:F : %125<8,8,1>:F [518](f0.1) MOV(8) %201<1>:F : %127<8,8,1>:F [520](f0.1) MOV(8) %202<1>:F : %55<8,8,1>:F [522](f0.1) TYPED_WRITE(8) : %194<8,8,1>:UD %195<8,8,1>:UD %196<8,8,1>:UD %197<8,8,1>:UD %198<8,8,1>:UD %199<8,8,1>:UD %200<8,8,1>:UD %201<8,8,1>:UD %202<8,8,1>:UD [524](f0.1) L27: [526] CMP.le(16) arf : %23<8,8,1>:UW 0x1b:UW [528](f0.1) L28: [530](f0.1) EOT(16) : rgbSharpen_Image2D's SELECTION IR end. CL kernel source: __kernel void exposureKernel(__global float4 * dst, __global float4 * src, const float expVal, const unsigned int rowVectors, const unsigned int planeVectors, const unsigned int format) { int x = get_global_id(0); int y = get_global_id(1); if (format == 0) { float4 pix1 = src[x + y * rowVectors]; pix1 *= expVal; dst[x + y * rowVectors] = clamp(pix1, 0.0f, 1.0f); float4 pix2 = src[x + y * rowVectors + planeVectors]; pix2 *= expVal; dst[x + y * rowVectors + planeVectors] = clamp(pix2, 0.0f, 1.0f); float4 pix3 = src[x + y * rowVectors + 2 * planeVectors]; pix3 *= expVal; dst[x + y * rowVectors + 2 * planeVectors] = clamp(pix3, 0.0f, 1.0f); } else if (format == 1) { __global ushort4 *shortDst = (__global ushort4 *)(dst); float4 pix1 = src[x + y * rowVectors]; pix1 *= expVal; pix1 = clamp(pix1, 0.0f, 1.0f); shortDst[x + y * rowVectors] = (ushort4)(pix1.x * 16383.0f, pix1.y * 16383.0f, pix1.z * 16383.0f, pix1.w * 16383.0f); float4 pix2 = src[x + y * rowVectors + planeVectors]; pix2 *= expVal; pix2 = clamp(pix2, 0.0f, 1.0f); shortDst[x + y * rowVectors + planeVectors] = (ushort4)(pix2.x * 16383.0f, pix2.y * 16383.0f, pix2.z * 16383.0f, pix2.w * 16383.0f); float4 pix3 = src[x + y * rowVectors + 2 * planeVectors]; pix3 *= expVal; pix3 = clamp(pix3, 0.0f, 1.0f); shortDst[x + y * rowVectors + 2 * planeVectors] = (ushort4)(pix3.x * 16383.0f, pix3.y * 16383.0f, pix3.z * 16383.0f, pix3.w * 16383.0f); } } .decl_function exposureKernel ## 347 registers ## .decl.dword %0 local_id_0 .decl.dword %1 local_id_1 .decl.dword %2 local_id_2 .decl.dword %3 group_id_0 .decl.dword %4 group_id_1 .decl.dword %5 group_id_2 .decl.dword %6 num_groups_0 .decl.dword %7 num_groups_1 .decl.dword %8 num_groups_2 .decl.dword %9 local_size_0 .decl.dword %10 local_size_1 .decl.dword %11 local_size_2 .decl.dword %12 enqueued_local_size_0 .decl.dword %13 enqueued_local_size_1 .decl.dword %14 enqueued_local_size_2 .decl.dword %15 global_size_0 .decl.dword %16 global_size_1 .decl.dword %17 global_size_2 .decl.dword %18 global_offset_0 .decl.dword %19 global_offset_1 .decl.dword %20 global_offset_2 .decl.dword %21 stack_pointer .decl.qword %22 stack_buffer .decl.word %23 block_ip .decl.dword %24 barrier_id .decl.dword %25 thread_number .decl.dword %26 work_dimension .decl.dword %27 zero .decl.dword %28 one .decl.word %29 retVal .decl.dword %30 dwblockip .decl.qword %31 profiling_buffer_pointer .decl.dword %32 profiling_timestamps0 .decl.dword %33 profiling_timestamps1 .decl.dword %34 profiling_timestamps2 .decl.dword %35 profiling_timestamps3 .decl.dword %36 profiling_timestamps4 .decl.dword %37 threadid .decl.qword %38 constant_addrspace_start .decl.qword %39 stack_size .decl.qword %40 enqueue_buffer_pointer .decl.dword %41 .decl.dword %42 .decl.dword %43 .decl.dword %44 .decl.dword %45 .decl.dword %46 .decl.dword %47 .decl.dword %48 .decl.dword %49 .decl.dword %50 .decl.dword %51 .decl.dword %52 .decl.bool %53 .decl.bool %54 .decl.dword %55 .decl.dword %56 .decl.dword %57 .decl.dword %58 .decl.dword %59 .decl.dword %60 .decl.dword %61 .decl.dword %62 .decl.dword %63 .decl.dword %64 .decl.dword %65 .decl.dword %66 .decl.dword %67 .decl.dword %68 .decl.dword %69 .decl.dword %70 .decl.dword %71 .decl.dword %72 .decl.dword %73 .decl.dword %74 .decl.dword %75 .decl.word %76 .decl.dword %77 .decl.word %78 .decl.dword %79 .decl.word %80 .decl.dword %81 .decl.word %82 .decl.dword %83 .decl.dword %84 .decl.dword %85 .decl.dword %86 .decl.dword %87 .decl.dword %88 .decl.dword %89 .decl.dword %90 .decl.dword %91 .decl.dword %92 .decl.dword %93 .decl.dword %94 .decl.dword %95 .decl.dword %96 .decl.dword %97 .decl.dword %98 .decl.dword %99 .decl.dword %100 .decl.dword %101 .decl.dword %102 .decl.dword %103 .decl.dword %104 .decl.word %105 .decl.dword %106 .decl.word %107 .decl.dword %108 .decl.word %109 .decl.dword %110 .decl.word %111 .decl.dword %112 .decl.dword %113 .decl.dword %114 .decl.dword %115 .decl.dword %116 .decl.dword %117 .decl.dword %118 .decl.dword %119 .decl.dword %120 .decl.dword %121 .decl.dword %122 .decl.dword %123 .decl.dword %124 .decl.dword %125 .decl.dword %126 .decl.dword %127 .decl.dword %128 .decl.dword %129 .decl.dword %130 .decl.dword %131 .decl.dword %132 .decl.dword %133 .decl.dword %134 .decl.word %135 .decl.dword %136 .decl.word %137 .decl.dword %138 .decl.word %139 .decl.dword %140 .decl.word %141 .decl.dword %142 .decl.dword %143 .decl.bool %144 .decl.dword %145 .decl.dword %146 .decl.dword %147 .decl.dword %148 .decl.dword %149 .decl.dword %150 .decl.dword %151 .decl.dword %152 .decl.dword %153 .decl.dword %154 .decl.dword %155 .decl.dword %156 .decl.dword %157 .decl.dword %158 .decl.dword %159 .decl.dword %160 .decl.dword %161 .decl.dword %162 .decl.dword %163 .decl.dword %164 .decl.dword %165 .decl.dword %166 .decl.dword %167 .decl.dword %168 .decl.dword %169 .decl.dword %170 .decl.dword %171 .decl.dword %172 .decl.dword %173 .decl.dword %174 .decl.dword %175 .decl.dword %176 .decl.dword %177 .decl.dword %178 .decl.dword %179 .decl.dword %180 .decl.dword %181 .decl.dword %182 .decl.dword %183 .decl.dword %184 .decl.dword %185 .decl.dword %186 .decl.dword %187 .decl.dword %188 .decl.dword %189 .decl.dword %190 .decl.dword %191 .decl.dword %192 .decl.dword %193 .decl.dword %194 .decl.dword %195 .decl.dword %196 .decl.dword %197 .decl.dword %198 .decl.dword %199 .decl.dword %200 .decl.dword %201 .decl.dword %202 .decl.dword %203 .decl.dword %204 .decl.dword %205 .decl.dword %206 .decl.dword %207 .decl.dword %208 .decl.dword %209 .decl.dword %210 .decl.dword %211 .decl.dword %212 .decl.dword %213 .decl.dword %214 .decl.bool %215 .decl.dword %216 .decl.bool %217 .decl.dword %218 .decl.bool %219 .decl.dword %220 .decl.bool %221 .decl.dword %222 .decl.bool %223 .decl.dword %224 .decl.bool %225 .decl.dword %226 .decl.bool %227 .decl.dword %228 .decl.bool %229 .decl.dword %230 .decl.dword %231 .decl.dword %232 .decl.dword %233 .decl.dword %234 .decl.dword %235 .decl.dword %236 .decl.dword %237 .decl.dword %238 .decl.bool %239 .decl.dword %240 .decl.bool %241 .decl.dword %242 .decl.bool %243 .decl.dword %244 .decl.bool %245 .decl.dword %246 .decl.bool %247 .decl.dword %248 .decl.bool %249 .decl.dword %250 .decl.bool %251 .decl.dword %252 .decl.bool %253 .decl.dword %254 .decl.dword %255 .decl.dword %256 .decl.dword %257 .decl.dword %258 .decl.dword %259 .decl.dword %260 .decl.dword %261 .decl.dword %262 .decl.dword %263 .decl.bool %264 .decl.dword %265 .decl.bool %266 .decl.dword %267 .decl.bool %268 .decl.dword %269 .decl.bool %270 .decl.dword %271 .decl.bool %272 .decl.dword %273 .decl.bool %274 .decl.dword %275 .decl.bool %276 .decl.dword %277 .decl.bool %278 .decl.dword %279 .decl.dword %280 .decl.dword %281 .decl.dword %282 .decl.dword %283 .decl.dword %284 .decl.dword %285 .decl.dword %286 .decl.dword %287 .decl.dword %288 .decl.bool %289 .decl.dword %290 .decl.bool %291 .decl.dword %292 .decl.bool %293 .decl.dword %294 .decl.bool %295 .decl.dword %296 .decl.bool %297 .decl.dword %298 .decl.bool %299 .decl.dword %300 .decl.bool %301 .decl.dword %302 .decl.bool %303 .decl.dword %304 .decl.dword %305 .decl.dword %306 .decl.dword %307 .decl.dword %308 .decl.bool %309 .decl.dword %310 .decl.bool %311 .decl.dword %312 .decl.bool %313 .decl.dword %314 .decl.bool %315 .decl.dword %316 .decl.bool %317 .decl.dword %318 .decl.bool %319 .decl.dword %320 .decl.bool %321 .decl.dword %322 .decl.bool %323 .decl.dword %324 .decl.dword %325 .decl.dword %326 .decl.dword %327 .decl.dword %328 .decl.dword %329 .decl.bool %330 .decl.dword %331 .decl.bool %332 .decl.dword %333 .decl.bool %334 .decl.dword %335 .decl.bool %336 .decl.dword %337 .decl.bool %338 .decl.dword %339 .decl.bool %340 .decl.dword %341 .decl.bool %342 .decl.dword %343 .decl.bool %344 .decl.dword %345 .decl.dword %346 ## 6 input registers ## decl_input.global %41 dst decl_input.global %42 src decl_input.value %43 expVal decl_input.value %44 rowVectors decl_input.value %45 planeVectors decl_input.value %46 format ## 0 output register ## ## 0 pushed register ## 9 blocks ## LABEL $0 MUL.int32 %47 %3 %12 ADD.int32 %48 %47 %0 ADD.int32 %49 %48 %18 MUL.int32 %50 %4 %13 ADD.int32 %51 %50 %1 ADD.int32 %52 %51 %19 LABEL $1 LOADI.uint32 %210 1 LT.int32 %53 %46 %210 BRA<%53> -> label$4 LABEL $2 LOADI.uint32 %211 1 NE.int32 %54 %46 %211 BRA<%54> -> label$5 LABEL $3 MUL.int32 %55 %52 %44 ADD.int32 %56 %55 %49 LOADI.uint32 %212 16 MUL.int32 %57 %212 %56 ADD.int32 %58 %42 %57 SUB.uint32 %213 %58 %42 LOAD.float.global.aligned {%59 %60 %61 %62} %213 bti:3 MUL.float %63 %59 %43 MUL.float %64 %60 %43 MUL.float %65 %61 %43 MUL.float %66 %62 %43 LOADI.float %214 1 LT.float %215 %63 %214 SEL.float %67 %215 %63 %214 LOADI.float %216 0 GE.float %217 %67 %216 SEL.float %68 %217 %67 %216 LT.float %219 %64 %214 SEL.float %69 %219 %64 %214 GE.float %221 %69 %216 SEL.float %70 %221 %69 %216 LT.float %223 %65 %214 SEL.float %71 %223 %65 %214 GE.float %225 %71 %216 SEL.float %72 %225 %71 %216 LT.float %227 %66 %214 SEL.float %73 %227 %66 %214 GE.float %229 %73 %216 SEL.float %74 %229 %73 %216 LOADI.float %230 16383 MUL.float %75 %68 %230 CVT.uint16.float %76 %75 MUL.float %77 %70 %230 CVT.uint16.float %78 %77 MUL.float %79 %72 %230 CVT.uint16.float %80 %79 MUL.float %81 %74 %230 CVT.uint16.float %82 %81 LOADI.uint32 %234 8 MUL.int32 %83 %234 %56 ADD.int32 %84 %41 %83 SUB.uint32 %235 %84 %41 STORE.int16.global.aligned %235 {%76 %78 %80 %82} bti:2 ADD.int32 %85 %56 %45 MUL.int32 %86 %212 %85 ADD.int32 %87 %42 %86 SUB.uint32 %237 %87 %42 LOAD.float.global.aligned {%88 %89 %90 %91} %237 bti:3 MUL.float %92 %88 %43 MUL.float %93 %89 %43 MUL.float %94 %90 %43 MUL.float %95 %91 %43 LT.float %239 %92 %214 SEL.float %96 %239 %92 %214 GE.float %241 %96 %216 SEL.float %97 %241 %96 %216 LT.float %243 %93 %214 SEL.float %98 %243 %93 %214 GE.float %245 %98 %216 SEL.float %99 %245 %98 %216 LT.float %247 %94 %214 SEL.float %100 %247 %94 %214 GE.float %249 %100 %216 SEL.float %101 %249 %100 %216 LT.float %251 %95 %214 SEL.float %102 %251 %95 %214 GE.float %253 %102 %216 SEL.float %103 %253 %102 %216 MUL.float %104 %97 %230 CVT.uint16.float %105 %104 MUL.float %106 %99 %230 CVT.uint16.float %107 %106 MUL.float %108 %101 %230 CVT.uint16.float %109 %108 MUL.float %110 %103 %230 CVT.uint16.float %111 %110 MUL.int32 %112 %234 %85 ADD.int32 %113 %41 %112 SUB.uint32 %259 %113 %41 STORE.int16.global.aligned %259 {%105 %107 %109 %111} bti:2 LOADI.uint32 %260 1 SHL.int32 %114 %45 %260 ADD.int32 %115 %56 %114 MUL.int32 %116 %212 %115 ADD.int32 %117 %42 %116 SUB.uint32 %262 %117 %42 LOAD.float.global.aligned {%118 %119 %120 %121} %262 bti:3 MUL.float %122 %118 %43 MUL.float %123 %119 %43 MUL.float %124 %120 %43 MUL.float %125 %121 %43 LT.float %264 %122 %214 SEL.float %126 %264 %122 %214 GE.float %266 %126 %216 SEL.float %127 %266 %126 %216 LT.float %268 %123 %214 SEL.float %128 %268 %123 %214 GE.float %270 %128 %216 SEL.float %129 %270 %128 %216 LT.float %272 %124 %214 SEL.float %130 %272 %124 %214 GE.float %274 %130 %216 SEL.float %131 %274 %130 %216 LT.float %276 %125 %214 SEL.float %132 %276 %125 %214 GE.float %278 %132 %216 SEL.float %133 %278 %132 %216 MUL.float %134 %127 %230 CVT.uint16.float %135 %134 MUL.float %136 %129 %230 CVT.uint16.float %137 %136 MUL.float %138 %131 %230 CVT.uint16.float %139 %138 MUL.float %140 %133 %230 CVT.uint16.float %141 %140 MUL.int32 %142 %234 %115 ADD.int32 %143 %41 %142 SUB.uint32 %284 %143 %41 STORE.int16.global.aligned %284 {%135 %137 %139 %141} bti:2 BRA -> label$7 LABEL $4 LOADI.uint32 %285 0 EQ.int32 %144 %46 %285 BRA<%144> -> label$6 LABEL $5 BRA -> label$7 LABEL $6 MUL.int32 %145 %52 %44 ADD.int32 %146 %145 %49 LOADI.uint32 %286 16 MUL.int32 %147 %286 %146 ADD.int32 %148 %42 %147 SUB.uint32 %287 %148 %42 LOAD.float.global.aligned {%149 %150 %151 %152} %287 bti:3 MUL.float %153 %149 %43 MUL.float %154 %150 %43 MUL.float %155 %151 %43 MUL.float %156 %152 %43 LOADI.float %288 1 LT.float %289 %153 %288 SEL.float %157 %289 %153 %288 LOADI.float %290 0 GE.float %291 %157 %290 SEL.float %158 %291 %157 %290 LT.float %293 %154 %288 SEL.float %159 %293 %154 %288 GE.float %295 %159 %290 SEL.float %160 %295 %159 %290 LT.float %297 %155 %288 SEL.float %161 %297 %155 %288 GE.float %299 %161 %290 SEL.float %162 %299 %161 %290 LT.float %301 %156 %288 SEL.float %163 %301 %156 %288 GE.float %303 %163 %290 SEL.float %164 %303 %163 %290 MUL.int32 %165 %286 %146 ADD.int32 %166 %41 %165 SUB.uint32 %305 %166 %41 STORE.float.global.aligned %305 {%158 %160 %162 %164} bti:2 ADD.int32 %167 %146 %45 MUL.int32 %168 %286 %167 ADD.int32 %169 %42 %168 SUB.uint32 %307 %169 %42 LOAD.float.global.aligned {%170 %171 %172 %173} %307 bti:3 MUL.float %174 %170 %43 MUL.float %175 %171 %43 MUL.float %176 %172 %43 MUL.float %177 %173 %43 LT.float %309 %174 %288 SEL.float %178 %309 %174 %288 GE.float %311 %178 %290 SEL.float %179 %311 %178 %290 LT.float %313 %175 %288 SEL.float %180 %313 %175 %288 GE.float %315 %180 %290 SEL.float %181 %315 %180 %290 LT.float %317 %176 %288 SEL.float %182 %317 %176 %288 GE.float %319 %182 %290 SEL.float %183 %319 %182 %290 LT.float %321 %177 %288 SEL.float %184 %321 %177 %288 GE.float %323 %184 %290 SEL.float %185 %323 %184 %290 MUL.int32 %186 %286 %167 ADD.int32 %187 %41 %186 SUB.uint32 %325 %187 %41 STORE.float.global.aligned %325 {%179 %181 %183 %185} bti:2 LOADI.uint32 %326 1 SHL.int32 %188 %45 %326 ADD.int32 %189 %146 %188 MUL.int32 %190 %286 %189 ADD.int32 %191 %42 %190 SUB.uint32 %328 %191 %42 LOAD.float.global.aligned {%192 %193 %194 %195} %328 bti:3 MUL.float %196 %192 %43 MUL.float %197 %193 %43 MUL.float %198 %194 %43 MUL.float %199 %195 %43 LT.float %330 %196 %288 SEL.float %200 %330 %196 %288 GE.float %332 %200 %290 SEL.float %201 %332 %200 %290 LT.float %334 %197 %288 SEL.float %202 %334 %197 %288 GE.float %336 %202 %290 SEL.float %203 %336 %202 %290 LT.float %338 %198 %288 SEL.float %204 %338 %198 %288 GE.float %340 %204 %290 SEL.float %205 %340 %204 %290 LT.float %342 %199 %288 SEL.float %206 %342 %199 %288 GE.float %344 %206 %290 SEL.float %207 %344 %206 %290 MUL.int32 %208 %286 %189 ADD.int32 %209 %41 %208 SUB.uint32 %346 %209 %41 STORE.float.global.aligned %346 {%201 %203 %205 %207} bti:2 LABEL $7 LABEL $8 RET .end_function exposureKernel's SELECTION IR begin: WARNING: not completed yet, welcome for the FIX! [0] L0: [2] CMP.le(16) arf : %23<8,8,1>:UW 0x0:UW [4](f0.1) IF(16) : 0:D [6] MUL(1) %47<0>:D : %3<0,1,0>:D %12<0,1,0>:UD [8] ADD(16) %48<1>:D : %47<0,1,0>:D %0<8,8,1>:D [10] ADD(16) %49<1>:D : %48<8,8,1>:D %18<0,1,0>:D [12] MUL(1) %50<0>:D : %4<0,1,0>:D %13<0,1,0>:UD [14] ADD(16) %51<1>:D : %50<0,1,0>:D %1<8,8,1>:D [16] ADD(16) %52<1>:D : %51<8,8,1>:D %19<0,1,0>:D [18] L10: [20] ENDIF(16) : 0:D [22] L1: [24] CMP.le(16) arf : %23<8,8,1>:UW 0x1:UW [26](f0.1) IF(16) : 0:D [28] CMP.l(16) arf : %46<0,1,0>:D 1:D [30](f53) MOV(16) %23<1>:UW : 0x4:UW [32] L11: [34] ENDIF(16) : 0:D [36] L2: [38] CMP.le(16) arf : %23<8,8,1>:UW 0x2:UW [40](f0.1) JMPI(1) : 0:D [42](f0.1) IF(16) : 0:D [44] CMP.neq(16) arf : %46<0,1,0>:D 1:D [46](f54) MOV(16) %23<1>:UW : 0x5:UW [48] L12: [50] ENDIF(16) : 0:D [52] L3: [54] CMP.le(16) arf : %23<8,8,1>:UW 0x3:UW [56](f0.1) IF(16) : 0:D [58] MUL(8) arf : %52<8,8,1>:D %44<0,1,0>:D [60] MACH(8) arf : %52<8,8,1>:D %44<0,1,0>:D [62] MOV(8) %55<1>:F : arf [64] MUL(8) arf : %52<8,8,1>:D %44<0,1,0>:D [66] MACH(8) arf : %52<8,8,1>:D %44<0,1,0>:D [68] MOV(8) %365<1>:F : arf [70] MOV(8) %55<1>:F : %365<8,8,1>:F [72] ADD(16) %56<1>:D : %55<8,8,1>:D %49<8,8,1>:D [74] MUL(16) %57<1>:UD : %56<8,8,1>:UD 0x10:UW [76] ADD(16) %58<1>:D : %42<0,1,0>:D %57<8,8,1>:D [78] ADD(16) %213<1>:UD : %58<8,8,1>:UD -%42<0,1,0>:UD [80] UNTYPED_READ(16) %59<1>:UD %60<1>:UD %61<1>:UD %62<1>:UD : %213<8,8,1>:UD 0x3:UD [82] MUL(16) %63<1>:F : %59<8,8,1>:F %43<0,1,0>:F [84] MUL(16) %64<1>:F : %60<8,8,1>:F %43<0,1,0>:F [86] MUL(16) %65<1>:F : %61<8,8,1>:F %43<0,1,0>:F [88] MUL(16) %66<1>:F : %62<8,8,1>:F %43<0,1,0>:F [90] SEL_CMP(16) %67<1>:F : %63<8,8,1>:F 1:F [92] SEL_CMP(16) %68<1>:F : %67<8,8,1>:F 0:F [94] SEL_CMP(16) %69<1>:F : %64<8,8,1>:F 1:F [96] SEL_CMP(16) %70<1>:F : %69<8,8,1>:F 0:F [98] SEL_CMP(16) %71<1>:F : %65<8,8,1>:F 1:F [100] SEL_CMP(16) %72<1>:F : %71<8,8,1>:F 0:F [102] SEL_CMP(16) %73<1>:F : %66<8,8,1>:F 1:F [104] SEL_CMP(16) %74<1>:F : %73<8,8,1>:F 0:F [106] MUL(16) %75<1>:F : %68<8,8,1>:F 16383:F [108] MOV(16) %364<2>:UW : %75<8,8,1>:F [110] MOV(16) %76<1>:UW : %364<16,8,2>:UW [112] MUL(16) %77<1>:F : %70<8,8,1>:F 16383:F [114] MOV(16) %363<2>:UW : %77<8,8,1>:F [116] MOV(16) %78<1>:UW : %363<16,8,2>:UW [118] MUL(16) %79<1>:F : %72<8,8,1>:F 16383:F [120] MOV(16) %362<2>:UW : %79<8,8,1>:F [122] MOV(16) %80<1>:UW : %362<16,8,2>:UW [124] MUL(16) %81<1>:F : %74<8,8,1>:F 16383:F [126] MOV(16) %361<2>:UW : %81<8,8,1>:F [128] MOV(16) %82<1>:UW : %361<16,8,2>:UW [130] MUL(16) %83<1>:UD : %56<8,8,1>:UD 0x8:UW [132] ADD(16) %84<1>:D : %41<0,1,0>:D %83<8,8,1>:D [134] ADD(16) %235<1>:UD : %84<8,8,1>:UD -%41<0,1,0>:UD [136] PACK_BYTE(16) %359<1>:UD : %76<8,8,1>:UW %78<8,8,1>:UW [138] PACK_BYTE(16) %360<1>:UD : %80<8,8,1>:UW %82<8,8,1>:UW [140] UNTYPED_WRITE(16) : %235<8,8,1>:UD %359<8,8,1>:UD %360<8,8,1>:UD 0x2:UD [142] ADD(16) %85<1>:D : %56<8,8,1>:D %45<0,1,0>:D [144] MUL(16) %86<1>:UD : %85<8,8,1>:UD 0x10:UW [146] ADD(16) %87<1>:D : %42<0,1,0>:D %86<8,8,1>:D [148] ADD(16) %237<1>:UD : %87<8,8,1>:UD -%42<0,1,0>:UD [150] UNTYPED_READ(16) %88<1>:UD %89<1>:UD %90<1>:UD %91<1>:UD : %237<8,8,1>:UD 0x3:UD [152] MUL(16) %92<1>:F : %88<8,8,1>:F %43<0,1,0>:F [154] MUL(16) %93<1>:F : %89<8,8,1>:F %43<0,1,0>:F [156] MUL(16) %94<1>:F : %90<8,8,1>:F %43<0,1,0>:F [158] MUL(16) %95<1>:F : %91<8,8,1>:F %43<0,1,0>:F [160] SEL_CMP(16) %96<1>:F : %92<8,8,1>:F 1:F [162] SEL_CMP(16) %97<1>:F : %96<8,8,1>:F 0:F [164] SEL_CMP(16) %98<1>:F : %93<8,8,1>:F 1:F [166] SEL_CMP(16) %99<1>:F : %98<8,8,1>:F 0:F [168] SEL_CMP(16) %100<1>:F : %94<8,8,1>:F 1:F [170] SEL_CMP(16) %101<1>:F : %100<8,8,1>:F 0:F [172] SEL_CMP(16) %102<1>:F : %95<8,8,1>:F 1:F [174] SEL_CMP(16) %103<1>:F : %102<8,8,1>:F 0:F [176] MUL(16) %104<1>:F : %97<8,8,1>:F 16383:F [178] MOV(16) %358<2>:UW : %104<8,8,1>:F [180] MOV(16) %105<1>:UW : %358<16,8,2>:UW [182] MUL(16) %106<1>:F : %99<8,8,1>:F 16383:F [184] MOV(16) %357<2>:UW : %106<8,8,1>:F [186] MOV(16) %107<1>:UW : %357<16,8,2>:UW [188] MUL(16) %108<1>:F : %101<8,8,1>:F 16383:F [190] MOV(16) %356<2>:UW : %108<8,8,1>:F [192] MOV(16) %109<1>:UW : %356<16,8,2>:UW [194] MUL(16) %110<1>:F : %103<8,8,1>:F 16383:F [196] MOV(16) %355<2>:UW : %110<8,8,1>:F [198] MOV(16) %111<1>:UW : %355<16,8,2>:UW [200] MUL(16) %112<1>:UD : %85<8,8,1>:UD 0x8:UW [202] ADD(16) %113<1>:D : %41<0,1,0>:D %112<8,8,1>:D [204] ADD(16) %259<1>:UD : %113<8,8,1>:UD -%41<0,1,0>:UD [206] PACK_BYTE(16) %353<1>:UD : %105<8,8,1>:UW %107<8,8,1>:UW [208] PACK_BYTE(16) %354<1>:UD : %109<8,8,1>:UW %111<8,8,1>:UW [210] UNTYPED_WRITE(16) : %259<8,8,1>:UD %353<8,8,1>:UD %354<8,8,1>:UD 0x2:UD [212] SHL(1) %114<0>:D : %45<0,1,0>:D 1:D [214] ADD(16) %115<1>:D : %56<8,8,1>:D %114<0,1,0>:D [216] MUL(16) %116<1>:UD : %115<8,8,1>:UD 0x10:UW [218] ADD(16) %117<1>:D : %42<0,1,0>:D %116<8,8,1>:D [220] ADD(16) %262<1>:UD : %117<8,8,1>:UD -%42<0,1,0>:UD [222] UNTYPED_READ(16) %118<1>:UD %119<1>:UD %120<1>:UD %121<1>:UD : %262<8,8,1>:UD 0x3:UD [224] MUL(16) %122<1>:F : %118<8,8,1>:F %43<0,1,0>:F [226] MUL(16) %123<1>:F : %119<8,8,1>:F %43<0,1,0>:F [228] MUL(16) %124<1>:F : %120<8,8,1>:F %43<0,1,0>:F [230] MUL(16) %125<1>:F : %121<8,8,1>:F %43<0,1,0>:F [232] SEL_CMP(16) %126<1>:F : %122<8,8,1>:F 1:F [234] SEL_CMP(16) %127<1>:F : %126<8,8,1>:F 0:F [236] SEL_CMP(16) %128<1>:F : %123<8,8,1>:F 1:F [238] SEL_CMP(16) %129<1>:F : %128<8,8,1>:F 0:F [240] SEL_CMP(16) %130<1>:F : %124<8,8,1>:F 1:F [242] SEL_CMP(16) %131<1>:F : %130<8,8,1>:F 0:F [244] SEL_CMP(16) %132<1>:F : %125<8,8,1>:F 1:F [246] SEL_CMP(16) %133<1>:F : %132<8,8,1>:F 0:F [248] MUL(16) %134<1>:F : %127<8,8,1>:F 16383:F [250] MOV(16) %352<2>:UW : %134<8,8,1>:F [252] MOV(16) %135<1>:UW : %352<16,8,2>:UW [254] MUL(16) %136<1>:F : %129<8,8,1>:F 16383:F [256] MOV(16) %351<2>:UW : %136<8,8,1>:F [258] MOV(16) %137<1>:UW : %351<16,8,2>:UW [260] MUL(16) %138<1>:F : %131<8,8,1>:F 16383:F [262] MOV(16) %350<2>:UW : %138<8,8,1>:F [264] MOV(16) %139<1>:UW : %350<16,8,2>:UW [266] MUL(16) %140<1>:F : %133<8,8,1>:F 16383:F [268] MOV(16) %349<2>:UW : %140<8,8,1>:F [270] MOV(16) %141<1>:UW : %349<16,8,2>:UW [272] MUL(16) %142<1>:UD : %115<8,8,1>:UD 0x8:UW [274] ADD(16) %143<1>:D : %41<0,1,0>:D %142<8,8,1>:D [276] ADD(16) %284<1>:UD : %143<8,8,1>:UD -%41<0,1,0>:UD [278] PACK_BYTE(16) %347<1>:UD : %135<8,8,1>:UW %137<8,8,1>:UW [280] PACK_BYTE(16) %348<1>:UD : %139<8,8,1>:UW %141<8,8,1>:UW [282] UNTYPED_WRITE(16) : %284<8,8,1>:UD %347<8,8,1>:UD %348<8,8,1>:UD 0x2:UD [284] MOV(16) %23<1>:UW : 0x7:UW [286] L13: [288] ENDIF(16) : 0:D [290] L4: [292] CMP.le(16) arf : %23<8,8,1>:UW 0x4:UW [294](f0.1) IF(16) : 0:D [296] CMP.eq(16) arf : %46<0,1,0>:D 0:D [298](f144) MOV(16) %23<1>:UW : 0x6:UW [300] L14: [302] ENDIF(16) : 0:D [304](f0.1) L5: [306] CMP.le(16) arf : %23<8,8,1>:UW 0x5:UW [308](f0.1) MOV(16) %23<1>:UW : 0x7:UW [310] L6: [312] CMP.le(16) arf : %23<8,8,1>:UW 0x6:UW [314](f0.1) IF(16) : 0:D [316] MUL(8) arf : %52<8,8,1>:D %44<0,1,0>:D [318] MACH(8) arf : %52<8,8,1>:D %44<0,1,0>:D [320] MOV(8) %145<1>:F : arf [322] MUL(8) arf : %52<8,8,1>:D %44<0,1,0>:D [324] MACH(8) arf : %52<8,8,1>:D %44<0,1,0>:D [326] MOV(8) %366<1>:F : arf [328] MOV(8) %145<1>:F : %366<8,8,1>:F [330] ADD(16) %146<1>:D : %145<8,8,1>:D %49<8,8,1>:D [332] MUL(16) %147<1>:UD : %146<8,8,1>:UD 0x10:UW [334] ADD(16) %148<1>:D : %42<0,1,0>:D %147<8,8,1>:D [336] ADD(16) %287<1>:UD : %148<8,8,1>:UD -%42<0,1,0>:UD [338] UNTYPED_READ(16) %149<1>:UD %150<1>:UD %151<1>:UD %152<1>:UD : %287<8,8,1>:UD 0x3:UD [340] MUL(16) %153<1>:F : %149<8,8,1>:F %43<0,1,0>:F [342] MUL(16) %154<1>:F : %150<8,8,1>:F %43<0,1,0>:F [344] MUL(16) %155<1>:F : %151<8,8,1>:F %43<0,1,0>:F [346] MUL(16) %156<1>:F : %152<8,8,1>:F %43<0,1,0>:F [348] SEL_CMP(16) %157<1>:F : %153<8,8,1>:F 1:F [350] SEL_CMP(16) %158<1>:F : %157<8,8,1>:F 0:F [352] SEL_CMP(16) %159<1>:F : %154<8,8,1>:F 1:F [354] SEL_CMP(16) %160<1>:F : %159<8,8,1>:F 0:F [356] SEL_CMP(16) %161<1>:F : %155<8,8,1>:F 1:F [358] SEL_CMP(16) %162<1>:F : %161<8,8,1>:F 0:F [360] SEL_CMP(16) %163<1>:F : %156<8,8,1>:F 1:F [362] SEL_CMP(16) %164<1>:F : %163<8,8,1>:F 0:F [364] MUL(16) %165<1>:UD : %146<8,8,1>:UD 0x10:UW [366] ADD(16) %166<1>:D : %41<0,1,0>:D %165<8,8,1>:D [368] ADD(16) %305<1>:UD : %166<8,8,1>:UD -%41<0,1,0>:UD [370] UNTYPED_WRITE(16) : %305<8,8,1>:UD %158<8,8,1>:UD %160<8,8,1>:UD %162<8,8,1>:UD %164<8,8,1>:UD 0x2:UD [372] ADD(16) %167<1>:D : %146<8,8,1>:D %45<0,1,0>:D [374] MUL(16) %168<1>:UD : %167<8,8,1>:UD 0x10:UW [376] ADD(16) %169<1>:D : %42<0,1,0>:D %168<8,8,1>:D [378] ADD(16) %307<1>:UD : %169<8,8,1>:UD -%42<0,1,0>:UD [380] UNTYPED_READ(16) %170<1>:UD %171<1>:UD %172<1>:UD %173<1>:UD : %307<8,8,1>:UD 0x3:UD [382] MUL(16) %174<1>:F : %170<8,8,1>:F %43<0,1,0>:F [384] MUL(16) %175<1>:F : %171<8,8,1>:F %43<0,1,0>:F [386] MUL(16) %176<1>:F : %172<8,8,1>:F %43<0,1,0>:F [388] MUL(16) %177<1>:F : %173<8,8,1>:F %43<0,1,0>:F [390] SEL_CMP(16) %178<1>:F : %174<8,8,1>:F 1:F [392] SEL_CMP(16) %179<1>:F : %178<8,8,1>:F 0:F [394] SEL_CMP(16) %180<1>:F : %175<8,8,1>:F 1:F [396] SEL_CMP(16) %181<1>:F : %180<8,8,1>:F 0:F [398] SEL_CMP(16) %182<1>:F : %176<8,8,1>:F 1:F [400] SEL_CMP(16) %183<1>:F : %182<8,8,1>:F 0:F [402] SEL_CMP(16) %184<1>:F : %177<8,8,1>:F 1:F [404] SEL_CMP(16) %185<1>:F : %184<8,8,1>:F 0:F [406] MUL(16) %186<1>:UD : %167<8,8,1>:UD 0x10:UW [408] ADD(16) %187<1>:D : %41<0,1,0>:D %186<8,8,1>:D [410] ADD(16) %325<1>:UD : %187<8,8,1>:UD -%41<0,1,0>:UD [412] UNTYPED_WRITE(16) : %325<8,8,1>:UD %179<8,8,1>:UD %181<8,8,1>:UD %183<8,8,1>:UD %185<8,8,1>:UD 0x2:UD [414] SHL(1) %188<0>:D : %45<0,1,0>:D 1:D [416] ADD(16) %189<1>:D : %146<8,8,1>:D %188<0,1,0>:D [418] MUL(16) %190<1>:UD : %189<8,8,1>:UD 0x10:UW [420] ADD(16) %191<1>:D : %42<0,1,0>:D %190<8,8,1>:D [422] ADD(16) %328<1>:UD : %191<8,8,1>:UD -%42<0,1,0>:UD [424] UNTYPED_READ(16) %192<1>:UD %193<1>:UD %194<1>:UD %195<1>:UD : %328<8,8,1>:UD 0x3:UD [426] MUL(16) %196<1>:F : %192<8,8,1>:F %43<0,1,0>:F [428] MUL(16) %197<1>:F : %193<8,8,1>:F %43<0,1,0>:F [430] MUL(16) %198<1>:F : %194<8,8,1>:F %43<0,1,0>:F [432] MUL(16) %199<1>:F : %195<8,8,1>:F %43<0,1,0>:F [434] SEL_CMP(16) %200<1>:F : %196<8,8,1>:F 1:F [436] SEL_CMP(16) %201<1>:F : %200<8,8,1>:F 0:F [438] SEL_CMP(16) %202<1>:F : %197<8,8,1>:F 1:F [440] SEL_CMP(16) %203<1>:F : %202<8,8,1>:F 0:F [442] SEL_CMP(16) %204<1>:F : %198<8,8,1>:F 1:F [444] SEL_CMP(16) %205<1>:F : %204<8,8,1>:F 0:F [446] SEL_CMP(16) %206<1>:F : %199<8,8,1>:F 1:F [448] SEL_CMP(16) %207<1>:F : %206<8,8,1>:F 0:F [450] MUL(16) %208<1>:UD : %189<8,8,1>:UD 0x10:UW [452] ADD(16) %209<1>:D : %41<0,1,0>:D %208<8,8,1>:D [454] ADD(16) %346<1>:UD : %209<8,8,1>:UD -%41<0,1,0>:UD [456] UNTYPED_WRITE(16) : %346<8,8,1>:UD %201<8,8,1>:UD %203<8,8,1>:UD %205<8,8,1>:UD %207<8,8,1>:UD 0x2:UD [458] L15: [460] ENDIF(16) : 0:D [462](f0.1) L7: [464] CMP.le(16) arf : %23<8,8,1>:UW 0x7:UW [466](f0.1) L8: [468](f0.1) EOT(16) : exposureKernel's SELECTION IR end. built exposure kernel 0 CL kernel source: //----------------------------------------------------------------------------- __kernel void matrixLinearRgbToRgb_Planar( __global float4 * pDst, __global float4 const * pSrc, unsigned int nRowVectors, unsigned int nPlaneVectors, float m00, float m01, float m02, float m10, float m11, float m12, float m20, float m21, float m22, const int nNumCurves, __global const ushort * restrict pCurve, const unsigned int destFormat, const float fWhite ) { int x = get_global_id( 0 ); float4 vRed = pSrc[x]; float4 vGrn = pSrc[x + nPlaneVectors ]; float4 vBlu = pSrc[x + 2 * nPlaneVectors ]; // clamp to [0..1] - after this step the highlight data will be gone vRed = clamp( vRed, (float4)0.f, (float4)1.f ); vGrn = clamp( vGrn, (float4)0.f, (float4)1.f ); vBlu = clamp( vBlu, (float4)0.f, (float4)1.f ); // RGB to RGB float4 vRedOut = m00 * vRed + m01 * vGrn + m02 * vBlu; float4 vGrnOut = m10 * vRed + m11 * vGrn + m12 * vBlu; float4 vBluOut = m20 * vRed + m21 * vGrn + m22 * vBlu; // clamp again to [0..1] vRedOut = clamp( vRedOut, (float4)0.f, (float4)1.f ); vGrnOut = clamp( vGrnOut, (float4)0.f, (float4)1.f ); vBluOut = clamp( vBluOut, (float4)0.f, (float4)1.f ); // apply the output curve if ( nNumCurves > 0 ) { // convert to 16-bit ints to do curve lookup int4 vRedI = convert_int4( vRedOut * 65535.f ); int4 vGrnI = convert_int4( vGrnOut * 65535.f ); int4 vBluI = convert_int4( vBluOut * 65535.f ); float fInv65535 = 1.f / 65535.f; // perform LUT lookup switch ( nNumCurves ) { case 1: vRedI.x = pCurve[vRedI.x]; vRedI.y = pCurve[vRedI.y]; vRedI.z = pCurve[vRedI.z]; vRedI.w = pCurve[vRedI.w]; vGrnI.x = pCurve[vGrnI.x]; vGrnI.y = pCurve[vGrnI.y]; vGrnI.z = pCurve[vGrnI.z]; vGrnI.w = pCurve[vGrnI.w]; vBluI.x = pCurve[vBluI.x]; vBluI.y = pCurve[vBluI.y]; vBluI.z = pCurve[vBluI.z]; vBluI.w = pCurve[vBluI.w]; break; case 3: { __global const ushort * restrict pCurveR = pCurve; __global const ushort * restrict pCurveG = pCurveR + 65535; __global const ushort * restrict pCurveB = pCurveG + 65535; vRedI.x = pCurveR[vRedI.x]; vRedI.y = pCurveR[vRedI.y]; vRedI.z = pCurveR[vRedI.z]; vRedI.w = pCurveR[vRedI.w]; vGrnI.x = pCurveG[vGrnI.x]; vGrnI.y = pCurveG[vGrnI.y]; vGrnI.z = pCurveG[vGrnI.z]; vGrnI.w = pCurveG[vGrnI.w]; vBluI.x = pCurveB[vBluI.x]; vBluI.y = pCurveB[vBluI.y]; vBluI.z = pCurveB[vBluI.z]; vBluI.w = pCurveB[vBluI.w]; break; } default: break; } // convert back to float vRedOut = convert_float4( vRedI ) * fInv65535; vGrnOut = convert_float4( vGrnI ) * fInv65535; vBluOut = convert_float4( vBluI ) * fInv65535; } // ouput to destination if (destFormat == 0) { pDst[x] = vRedOut; pDst[x + nPlaneVectors] = vGrnOut; pDst[x + 2 * nPlaneVectors] = vBluOut; } else { __global ushort4 * pShortDst = (__global ushort4 *)(pDst); ushort4 vRedI = convert_ushort4( clamp( convert_int4( vRedOut * fWhite + 0.5f ), (int4)0, (int4)65535 ) ); ushort4 vGrnI = convert_ushort4( clamp( convert_int4( vGrnOut * fWhite + 0.5f ), (int4)0, (int4)65535 ) ); ushort4 vBluI = convert_ushort4( clamp( convert_int4( vBluOut * fWhite + 0.5f ), (int4)0, (int4)65535 ) ); pShortDst[x] = vRedI; pShortDst[x + nPlaneVectors] = vGrnI; pShortDst[x + 2 * nPlaneVectors] = vBluI; } } //----------------------------------------------------------------------------- .decl_function matrixLinearRgbToRgb_Planar ## 715 registers ## .decl.dword %0 local_id_0 .decl.dword %1 local_id_1 .decl.dword %2 local_id_2 .decl.dword %3 group_id_0 .decl.dword %4 group_id_1 .decl.dword %5 group_id_2 .decl.dword %6 num_groups_0 .decl.dword %7 num_groups_1 .decl.dword %8 num_groups_2 .decl.dword %9 local_size_0 .decl.dword %10 local_size_1 .decl.dword %11 local_size_2 .decl.dword %12 enqueued_local_size_0 .decl.dword %13 enqueued_local_size_1 .decl.dword %14 enqueued_local_size_2 .decl.dword %15 global_size_0 .decl.dword %16 global_size_1 .decl.dword %17 global_size_2 .decl.dword %18 global_offset_0 .decl.dword %19 global_offset_1 .decl.dword %20 global_offset_2 .decl.dword %21 stack_pointer .decl.qword %22 stack_buffer .decl.word %23 block_ip .decl.dword %24 barrier_id .decl.dword %25 thread_number .decl.dword %26 work_dimension .decl.dword %27 zero .decl.dword %28 one .decl.word %29 retVal .decl.dword %30 dwblockip .decl.qword %31 profiling_buffer_pointer .decl.dword %32 profiling_timestamps0 .decl.dword %33 profiling_timestamps1 .decl.dword %34 profiling_timestamps2 .decl.dword %35 profiling_timestamps3 .decl.dword %36 profiling_timestamps4 .decl.dword %37 threadid .decl.qword %38 constant_addrspace_start .decl.qword %39 stack_size .decl.qword %40 enqueue_buffer_pointer .decl.dword %41 .decl.dword %42 .decl.dword %43 .decl.dword %44 .decl.dword %45 .decl.dword %46 .decl.dword %47 .decl.dword %48 .decl.dword %49 .decl.dword %50 .decl.dword %51 .decl.dword %52 .decl.dword %53 .decl.dword %54 .decl.dword %55 .decl.dword %56 .decl.dword %57 .decl.dword %58 .decl.dword %59 .decl.dword %60 .decl.dword %61 .decl.dword %62 .decl.dword %63 .decl.dword %64 .decl.dword %65 .decl.dword %66 .decl.dword %67 .decl.dword %68 .decl.dword %69 .decl.dword %70 .decl.dword %71 .decl.dword %72 .decl.dword %73 .decl.dword %74 .decl.dword %75 .decl.dword %76 .decl.dword %77 .decl.dword %78 .decl.dword %79 .decl.dword %80 .decl.dword %81 .decl.dword %82 .decl.dword %83 .decl.dword %84 .decl.dword %85 .decl.dword %86 .decl.dword %87 .decl.dword %88 .decl.dword %89 .decl.dword %90 .decl.dword %91 .decl.dword %92 .decl.dword %93 .decl.dword %94 .decl.dword %95 .decl.dword %96 .decl.dword %97 .decl.dword %98 .decl.dword %99 .decl.dword %100 .decl.dword %101 .decl.dword %102 .decl.dword %103 .decl.dword %104 .decl.dword %105 .decl.dword %106 .decl.dword %107 .decl.dword %108 .decl.dword %109 .decl.dword %110 .decl.dword %111 .decl.dword %112 .decl.dword %113 .decl.dword %114 .decl.dword %115 .decl.dword %116 .decl.dword %117 .decl.dword %118 .decl.dword %119 .decl.dword %120 .decl.dword %121 .decl.dword %122 .decl.dword %123 .decl.dword %124 .decl.dword %125 .decl.dword %126 .decl.dword %127 .decl.dword %128 .decl.dword %129 .decl.dword %130 .decl.dword %131 .decl.dword %132 .decl.dword %133 .decl.dword %134 .decl.dword %135 .decl.dword %136 .decl.dword %137 .decl.dword %138 .decl.dword %139 .decl.dword %140 .decl.dword %141 .decl.dword %142 .decl.dword %143 .decl.dword %144 .decl.dword %145 .decl.dword %146 .decl.dword %147 .decl.dword %148 .decl.dword %149 .decl.dword %150 .decl.dword %151 .decl.dword %152 .decl.dword %153 .decl.dword %154 .decl.dword %155 .decl.dword %156 .decl.dword %157 .decl.dword %158 .decl.dword %159 .decl.dword %160 .decl.dword %161 .decl.dword %162 .decl.dword %163 .decl.dword %164 .decl.dword %165 .decl.bool %166 .decl.dword %167 .decl.dword %168 .decl.dword %169 .decl.dword %170 .decl.dword %171 .decl.dword %172 .decl.dword %173 .decl.dword %174 .decl.dword %175 .decl.dword %176 .decl.dword %177 .decl.dword %178 .decl.dword %179 .decl.dword %180 .decl.dword %181 .decl.dword %182 .decl.dword %183 .decl.dword %184 .decl.dword %185 .decl.dword %186 .decl.dword %187 .decl.dword %188 .decl.dword %189 .decl.dword %190 .decl.bool %191 .decl.bool %192 .decl.dword %193 .decl.dword %194 .decl.dword %195 .decl.dword %196 .decl.word %197 .decl.dword %198 .decl.dword %199 .decl.dword %200 .decl.word %201 .decl.dword %202 .decl.dword %203 .decl.dword %204 .decl.word %205 .decl.dword %206 .decl.dword %207 .decl.dword %208 .decl.word %209 .decl.dword %210 .decl.dword %211 .decl.dword %212 .decl.word %213 .decl.dword %214 .decl.dword %215 .decl.dword %216 .decl.word %217 .decl.dword %218 .decl.dword %219 .decl.dword %220 .decl.word %221 .decl.dword %222 .decl.dword %223 .decl.dword %224 .decl.word %225 .decl.dword %226 .decl.dword %227 .decl.dword %228 .decl.word %229 .decl.dword %230 .decl.dword %231 .decl.dword %232 .decl.word %233 .decl.dword %234 .decl.dword %235 .decl.dword %236 .decl.word %237 .decl.dword %238 .decl.dword %239 .decl.dword %240 .decl.word %241 .decl.dword %242 .decl.bool %243 .decl.dword %244 .decl.dword %245 .decl.word %246 .decl.dword %247 .decl.dword %248 .decl.dword %249 .decl.word %250 .decl.dword %251 .decl.dword %252 .decl.dword %253 .decl.word %254 .decl.dword %255 .decl.dword %256 .decl.dword %257 .decl.word %258 .decl.dword %259 .decl.dword %260 .decl.dword %261 .decl.word %262 .decl.dword %263 .decl.dword %264 .decl.dword %265 .decl.word %266 .decl.dword %267 .decl.dword %268 .decl.dword %269 .decl.word %270 .decl.dword %271 .decl.dword %272 .decl.dword %273 .decl.word %274 .decl.dword %275 .decl.dword %276 .decl.dword %277 .decl.word %278 .decl.dword %279 .decl.dword %280 .decl.dword %281 .decl.word %282 .decl.dword %283 .decl.dword %284 .decl.dword %285 .decl.word %286 .decl.dword %287 .decl.dword %288 .decl.dword %289 .decl.word %290 .decl.dword %291 .decl.dword %292 .decl.dword %293 .decl.dword %294 .decl.dword %295 .decl.dword %296 .decl.dword %297 .decl.dword %298 .decl.dword %299 .decl.dword %300 .decl.dword %301 .decl.dword %302 .decl.dword %303 .decl.dword %304 .decl.dword %305 .decl.dword %306 .decl.dword %307 .decl.dword %308 .decl.dword %309 .decl.dword %310 .decl.dword %311 .decl.dword %312 .decl.dword %313 .decl.dword %314 .decl.dword %315 .decl.dword %316 .decl.dword %317 .decl.dword %318 .decl.dword %319 .decl.dword %320 .decl.dword %321 .decl.dword %322 .decl.dword %323 .decl.dword %324 .decl.dword %325 .decl.dword %326 .decl.dword %327 .decl.dword %328 .decl.dword %329 .decl.dword %330 .decl.dword %331 .decl.dword %332 .decl.dword %333 .decl.dword %334 .decl.dword %335 .decl.dword %336 .decl.dword %337 .decl.dword %338 .decl.dword %339 .decl.dword %340 .decl.dword %341 .decl.dword %342 .decl.dword %343 .decl.dword %344 .decl.dword %345 .decl.dword %346 .decl.dword %347 .decl.dword %348 .decl.dword %349 .decl.dword %350 .decl.dword %351 .decl.dword %352 .decl.dword %353 .decl.dword %354 .decl.dword %355 .decl.dword %356 .decl.dword %357 .decl.dword %358 .decl.dword %359 .decl.dword %360 .decl.dword %361 .decl.dword %362 .decl.dword %363 .decl.bool %364 .decl.dword %365 .decl.dword %366 .decl.dword %367 .decl.dword %368 .decl.dword %369 .decl.dword %370 .decl.dword %371 .decl.dword %372 .decl.bool %373 .decl.dword %374 .decl.bool %375 .decl.bool %376 .decl.dword %377 .decl.bool %378 .decl.bool %379 .decl.dword %380 .decl.bool %381 .decl.bool %382 .decl.dword %383 .decl.bool %384 .decl.word %385 .decl.word %386 .decl.word %387 .decl.word %388 .decl.word %389 .decl.word %390 .decl.word %391 .decl.word %392 .decl.dword %393 .decl.dword %394 .decl.dword %395 .decl.dword %396 .decl.dword %397 .decl.dword %398 .decl.dword %399 .decl.dword %400 .decl.bool %401 .decl.dword %402 .decl.bool %403 .decl.bool %404 .decl.dword %405 .decl.bool %406 .decl.bool %407 .decl.dword %408 .decl.bool %409 .decl.bool %410 .decl.dword %411 .decl.bool %412 .decl.word %413 .decl.word %414 .decl.word %415 .decl.word %416 .decl.word %417 .decl.word %418 .decl.word %419 .decl.word %420 .decl.dword %421 .decl.dword %422 .decl.dword %423 .decl.dword %424 .decl.dword %425 .decl.dword %426 .decl.dword %427 .decl.dword %428 .decl.bool %429 .decl.dword %430 .decl.bool %431 .decl.bool %432 .decl.dword %433 .decl.bool %434 .decl.bool %435 .decl.dword %436 .decl.bool %437 .decl.bool %438 .decl.dword %439 .decl.bool %440 .decl.word %441 .decl.word %442 .decl.word %443 .decl.word %444 .decl.word %445 .decl.word %446 .decl.word %447 .decl.word %448 .decl.dword %449 .decl.dword %450 .decl.dword %451 .decl.dword %452 .decl.dword %453 .decl.dword %454 .decl.dword %455 .decl.dword %456 .decl.dword %457 .decl.dword %458 .decl.dword %459 .decl.dword %460 .decl.dword %461 .decl.dword %462 .decl.dword %463 .decl.dword %464 .decl.dword %465 .decl.dword %466 .decl.dword %467 .decl.dword %468 .decl.bool %469 .decl.dword %470 .decl.bool %471 .decl.dword %472 .decl.bool %473 .decl.dword %474 .decl.bool %475 .decl.dword %476 .decl.bool %477 .decl.dword %478 .decl.bool %479 .decl.dword %480 .decl.bool %481 .decl.dword %482 .decl.bool %483 .decl.dword %484 .decl.bool %485 .decl.dword %486 .decl.bool %487 .decl.dword %488 .decl.bool %489 .decl.dword %490 .decl.bool %491 .decl.dword %492 .decl.bool %493 .decl.dword %494 .decl.bool %495 .decl.dword %496 .decl.bool %497 .decl.dword %498 .decl.bool %499 .decl.dword %500 .decl.bool %501 .decl.dword %502 .decl.bool %503 .decl.dword %504 .decl.bool %505 .decl.dword %506 .decl.bool %507 .decl.dword %508 .decl.bool %509 .decl.dword %510 .decl.bool %511 .decl.dword %512 .decl.bool %513 .decl.dword %514 .decl.bool %515 .decl.dword %516 .decl.bool %517 .decl.dword %518 .decl.bool %519 .decl.dword %520 .decl.bool %521 .decl.dword %522 .decl.bool %523 .decl.dword %524 .decl.bool %525 .decl.dword %526 .decl.bool %527 .decl.dword %528 .decl.bool %529 .decl.dword %530 .decl.bool %531 .decl.dword %532 .decl.bool %533 .decl.dword %534 .decl.bool %535 .decl.dword %536 .decl.bool %537 .decl.dword %538 .decl.bool %539 .decl.dword %540 .decl.bool %541 .decl.dword %542 .decl.bool %543 .decl.dword %544 .decl.bool %545 .decl.dword %546 .decl.bool %547 .decl.dword %548 .decl.bool %549 .decl.dword %550 .decl.bool %551 .decl.dword %552 .decl.bool %553 .decl.dword %554 .decl.bool %555 .decl.dword %556 .decl.bool %557 .decl.dword %558 .decl.bool %559 .decl.dword %560 .decl.bool %561 .decl.dword %562 .decl.bool %563 .decl.dword %564 .decl.dword %565 .decl.dword %566 .decl.dword %567 .decl.dword %568 .decl.dword %569 .decl.dword %570 .decl.dword %571 .decl.dword %572 .decl.dword %573 .decl.dword %574 .decl.dword %575 .decl.dword %576 .decl.dword %577 .decl.dword %578 .decl.dword %579 .decl.dword %580 .decl.dword %581 .decl.dword %582 .decl.dword %583 .decl.dword %584 .decl.dword %585 .decl.dword %586 .decl.dword %587 .decl.dword %588 .decl.dword %589 .decl.dword %590 .decl.dword %591 .decl.dword %592 .decl.dword %593 .decl.dword %594 .decl.dword %595 .decl.dword %596 .decl.dword %597 .decl.dword %598 .decl.dword %599 .decl.dword %600 .decl.dword %601 .decl.dword %602 .decl.dword %603 .decl.dword %604 .decl.dword %605 .decl.dword %606 .decl.dword %607 .decl.dword %608 .decl.dword %609 .decl.dword %610 .decl.dword %611 .decl.dword %612 .decl.dword %613 .decl.dword %614 .decl.dword %615 .decl.dword %616 .decl.dword %617 .decl.dword %618 .decl.dword %619 .decl.dword %620 .decl.dword %621 .decl.dword %622 .decl.dword %623 .decl.dword %624 .decl.dword %625 .decl.dword %626 .decl.dword %627 .decl.dword %628 .decl.dword %629 .decl.dword %630 .decl.dword %631 .decl.dword %632 .decl.dword %633 .decl.dword %634 .decl.dword %635 .decl.dword %636 .decl.dword %637 .decl.dword %638 .decl.dword %639 .decl.dword %640 .decl.dword %641 .decl.dword %642 .decl.dword %643 .decl.dword %644 .decl.dword %645 .decl.dword %646 .decl.dword %647 .decl.dword %648 .decl.dword %649 .decl.dword %650 .decl.dword %651 .decl.dword %652 .decl.dword %653 .decl.dword %654 .decl.dword %655 .decl.dword %656 .decl.dword %657 .decl.dword %658 .decl.word %659 .decl.word %660 .decl.word %661 .decl.word %662 .decl.dword %663 .decl.dword %664 .decl.dword %665 .decl.dword %666 .decl.dword %667 .decl.dword %668 .decl.dword %669 .decl.dword %670 .decl.dword %671 .decl.dword %672 .decl.dword %673 .decl.dword %674 .decl.dword %675 .decl.dword %676 .decl.dword %677 .decl.dword %678 .decl.word %679 .decl.word %680 .decl.word %681 .decl.word %682 .decl.dword %683 .decl.dword %684 .decl.dword %685 .decl.dword %686 .decl.dword %687 .decl.dword %688 .decl.dword %689 .decl.dword %690 .decl.dword %691 .decl.dword %692 .decl.dword %693 .decl.dword %694 .decl.dword %695 .decl.dword %696 .decl.dword %697 .decl.dword %698 .decl.word %699 .decl.word %700 .decl.word %701 .decl.word %702 .decl.dword %703 .decl.dword %704 .decl.dword %705 .decl.dword %706 .decl.dword %707 .decl.dword %708 .decl.dword %709 .decl.dword %710 .decl.dword %711 .decl.dword %712 .decl.dword %713 .decl.dword %714 ## 17 input registers ## decl_input.global %41 pDst decl_input.global %42 pSrc decl_input.value %43 nRowVectors decl_input.value %44 nPlaneVectors decl_input.value %45 m00 decl_input.value %46 m01 decl_input.value %47 m02 decl_input.value %48 m10 decl_input.value %49 m11 decl_input.value %50 m12 decl_input.value %51 m20 decl_input.value %52 m21 decl_input.value %53 m22 decl_input.value %54 nNumCurves decl_input.global %55 pCurve decl_input.value %56 destFormat decl_input.value %57 fWhite ## 0 output register ## ## 0 pushed register ## 14 blocks ## LABEL $0 MUL.int32 %58 %3 %12 ADD.int32 %59 %58 %0 ADD.int32 %60 %59 %18 LOADI.uint32 %461 16 MUL.int32 %61 %461 %60 ADD.int32 %62 %42 %61 SUB.uint32 %462 %62 %42 LOAD.float.global.aligned {%63 %64 %65 %66} %462 bti:3 ADD.int32 %67 %60 %44 MUL.int32 %68 %461 %67 ADD.int32 %69 %42 %68 SUB.uint32 %464 %69 %42 LOAD.float.global.aligned {%70 %71 %72 %73} %464 bti:3 LOADI.uint32 %465 1 SHL.int32 %74 %44 %465 ADD.int32 %75 %60 %74 MUL.int32 %76 %461 %75 ADD.int32 %77 %42 %76 SUB.uint32 %467 %77 %42 LOAD.float.global.aligned {%78 %79 %80 %81} %467 bti:3 LOADI.float %468 1 LT.float %469 %63 %468 SEL.float %82 %469 %63 %468 LOADI.float %470 0 GE.float %471 %82 %470 SEL.float %83 %471 %82 %470 LT.float %473 %64 %468 SEL.float %84 %473 %64 %468 GE.float %475 %84 %470 SEL.float %85 %475 %84 %470 LT.float %477 %65 %468 SEL.float %86 %477 %65 %468 GE.float %479 %86 %470 SEL.float %87 %479 %86 %470 LT.float %481 %66 %468 SEL.float %88 %481 %66 %468 GE.float %483 %88 %470 SEL.float %89 %483 %88 %470 LT.float %485 %70 %468 SEL.float %90 %485 %70 %468 GE.float %487 %90 %470 SEL.float %91 %487 %90 %470 LT.float %489 %71 %468 SEL.float %92 %489 %71 %468 GE.float %491 %92 %470 SEL.float %93 %491 %92 %470 LT.float %493 %72 %468 SEL.float %94 %493 %72 %468 GE.float %495 %94 %470 SEL.float %95 %495 %94 %470 LT.float %497 %73 %468 SEL.float %96 %497 %73 %468 GE.float %499 %96 %470 SEL.float %97 %499 %96 %470 LT.float %501 %78 %468 SEL.float %98 %501 %78 %468 GE.float %503 %98 %470 SEL.float %99 %503 %98 %470 LT.float %505 %79 %468 SEL.float %100 %505 %79 %468 GE.float %507 %100 %470 SEL.float %101 %507 %100 %470 LT.float %509 %80 %468 SEL.float %102 %509 %80 %468 GE.float %511 %102 %470 SEL.float %103 %511 %102 %470 LT.float %513 %81 %468 SEL.float %104 %513 %81 %468 GE.float %515 %104 %470 SEL.float %105 %515 %104 %470 MUL.float %106 %91 %46 MUL.float %107 %93 %46 MUL.float %108 %95 %46 MUL.float %109 %97 %46 MAD.float %110 %45 %83 %106 MAD.float %111 %45 %85 %107 MAD.float %112 %45 %87 %108 MAD.float %113 %45 %89 %109 MAD.float %114 %47 %99 %110 MAD.float %115 %47 %101 %111 MAD.float %116 %47 %103 %112 MAD.float %117 %47 %105 %113 MUL.float %118 %91 %49 MUL.float %119 %93 %49 MUL.float %120 %95 %49 MUL.float %121 %97 %49 MAD.float %122 %48 %83 %118 MAD.float %123 %48 %85 %119 MAD.float %124 %48 %87 %120 MAD.float %125 %48 %89 %121 MAD.float %126 %50 %99 %122 MAD.float %127 %50 %101 %123 MAD.float %128 %50 %103 %124 MAD.float %129 %50 %105 %125 MUL.float %130 %91 %52 MUL.float %131 %93 %52 MUL.float %132 %95 %52 MUL.float %133 %97 %52 MAD.float %134 %51 %83 %130 MAD.float %135 %51 %85 %131 MAD.float %136 %51 %87 %132 MAD.float %137 %51 %89 %133 MAD.float %138 %53 %99 %134 MAD.float %139 %53 %101 %135 MAD.float %140 %53 %103 %136 MAD.float %141 %53 %105 %137 LT.float %517 %114 %468 SEL.float %142 %517 %114 %468 GE.float %519 %142 %470 SEL.float %143 %519 %142 %470 LT.float %521 %115 %468 SEL.float %144 %521 %115 %468 GE.float %523 %144 %470 SEL.float %145 %523 %144 %470 LT.float %525 %116 %468 SEL.float %146 %525 %116 %468 GE.float %527 %146 %470 SEL.float %147 %527 %146 %470 LT.float %529 %117 %468 SEL.float %148 %529 %117 %468 GE.float %531 %148 %470 SEL.float %149 %531 %148 %470 LT.float %533 %126 %468 SEL.float %150 %533 %126 %468 GE.float %535 %150 %470 SEL.float %151 %535 %150 %470 LT.float %537 %127 %468 SEL.float %152 %537 %127 %468 GE.float %539 %152 %470 SEL.float %153 %539 %152 %470 LT.float %541 %128 %468 SEL.float %154 %541 %128 %468 GE.float %543 %154 %470 SEL.float %155 %543 %154 %470 LT.float %545 %129 %468 SEL.float %156 %545 %129 %468 GE.float %547 %156 %470 SEL.float %157 %547 %156 %470 LT.float %549 %138 %468 SEL.float %158 %549 %138 %468 GE.float %551 %158 %470 SEL.float %159 %551 %158 %470 LT.float %553 %139 %468 SEL.float %160 %553 %139 %468 GE.float %555 %160 %470 SEL.float %161 %555 %160 %470 LT.float %557 %140 %468 SEL.float %162 %557 %140 %468 GE.float %559 %162 %470 SEL.float %163 %559 %162 %470 LT.float %561 %141 %468 SEL.float %164 %561 %141 %468 GE.float %563 %164 %470 SEL.float %165 %563 %164 %470 LOADI.uint32 %564 0 LE.int32 %166 %54 %564 MOV.float %341 %159 MOV.float %343 %161 MOV.float %345 %163 MOV.float %347 %165 MOV.float %349 %151 MOV.float %351 %153 MOV.float %353 %155 MOV.float %355 %157 MOV.float %357 %143 MOV.float %359 %145 MOV.float %361 %147 MOV.float %363 %149 BRA<%166> -> label$9 LABEL $1 LOADI.float %565 65535 MUL.float %167 %143 %565 MUL.float %168 %145 %565 MUL.float %169 %147 %565 MUL.float %170 %149 %565 CVT.int32.float %171 %167 CVT.int32.float %172 %168 CVT.int32.float %173 %169 CVT.int32.float %174 %170 MUL.float %175 %151 %565 MUL.float %176 %153 %565 MUL.float %177 %155 %565 MUL.float %178 %157 %565 CVT.int32.float %179 %175 CVT.int32.float %180 %176 CVT.int32.float %181 %177 CVT.int32.float %182 %178 MUL.float %183 %159 %565 MUL.float %184 %161 %565 MUL.float %185 %163 %565 MUL.float %186 %165 %565 CVT.int32.float %187 %183 CVT.int32.float %188 %184 CVT.int32.float %189 %185 CVT.int32.float %190 %186 LABEL $2 LOADI.uint32 %577 3 LT.int32 %191 %54 %577 BRA<%191> -> label$5 LABEL $3 LOADI.uint32 %578 3 NE.int32 %192 %54 %578 BRA<%192> -> label$6 LABEL $4 LOADI.uint32 %579 131070 ADD.int32 %193 %55 %579 LOADI.uint32 %580 262140 ADD.int32 %194 %55 %580 LOADI.uint32 %581 2 MUL.int32 %195 %581 %171 ADD.int32 %196 %55 %195 SUB.uint32 %582 %196 %55 LOAD.int16.global.unaligned {%197} %582 bti:4 CVT.int32.uint16 %198 %197 MUL.int32 %199 %581 %172 ADD.int32 %200 %55 %199 SUB.uint32 %584 %200 %55 LOAD.int16.global.unaligned {%201} %584 bti:4 CVT.int32.uint16 %202 %201 MUL.int32 %203 %581 %173 ADD.int32 %204 %55 %203 SUB.uint32 %586 %204 %55 LOAD.int16.global.unaligned {%205} %586 bti:4 CVT.int32.uint16 %206 %205 MUL.int32 %207 %581 %174 ADD.int32 %208 %55 %207 SUB.uint32 %588 %208 %55 LOAD.int16.global.unaligned {%209} %588 bti:4 CVT.int32.uint16 %210 %209 MUL.int32 %211 %581 %179 ADD.int32 %212 %193 %211 SUB.uint32 %590 %212 %55 LOAD.int16.global.unaligned {%213} %590 bti:4 CVT.int32.uint16 %214 %213 MUL.int32 %215 %581 %180 ADD.int32 %216 %193 %215 SUB.uint32 %592 %216 %55 LOAD.int16.global.unaligned {%217} %592 bti:4 CVT.int32.uint16 %218 %217 MUL.int32 %219 %581 %181 ADD.int32 %220 %193 %219 SUB.uint32 %594 %220 %55 LOAD.int16.global.unaligned {%221} %594 bti:4 CVT.int32.uint16 %222 %221 MUL.int32 %223 %581 %182 ADD.int32 %224 %193 %223 SUB.uint32 %596 %224 %55 LOAD.int16.global.unaligned {%225} %596 bti:4 CVT.int32.uint16 %226 %225 MUL.int32 %227 %581 %187 ADD.int32 %228 %194 %227 SUB.uint32 %598 %228 %55 LOAD.int16.global.unaligned {%229} %598 bti:4 CVT.int32.uint16 %230 %229 MUL.int32 %231 %581 %188 ADD.int32 %232 %194 %231 SUB.uint32 %600 %232 %55 LOAD.int16.global.unaligned {%233} %600 bti:4 CVT.int32.uint16 %234 %233 MUL.int32 %235 %581 %189 ADD.int32 %236 %194 %235 SUB.uint32 %602 %236 %55 LOAD.int16.global.unaligned {%237} %602 bti:4 CVT.int32.uint16 %238 %237 MUL.int32 %239 %581 %190 ADD.int32 %240 %194 %239 SUB.uint32 %604 %240 %55 LOAD.int16.global.unaligned {%241} %604 bti:4 CVT.int32.uint16 %242 %241 MOV.int32 %293 %230 MOV.int32 %295 %234 MOV.int32 %297 %238 MOV.int32 %299 %242 MOV.int32 %301 %214 MOV.int32 %303 %218 MOV.int32 %305 %222 MOV.int32 %307 %226 MOV.int32 %309 %198 MOV.int32 %311 %202 MOV.int32 %313 %206 MOV.int32 %315 %210 BRA -> label$8 LABEL $5 LOADI.uint32 %605 1 EQ.int32 %243 %54 %605 BRA<%243> -> label$7 LABEL $6 MOV.int32 %293 %187 MOV.int32 %295 %188 MOV.int32 %297 %189 MOV.int32 %299 %190 MOV.int32 %301 %179 MOV.int32 %303 %180 MOV.int32 %305 %181 MOV.int32 %307 %182 MOV.int32 %309 %171 MOV.int32 %311 %172 MOV.int32 %313 %173 MOV.int32 %315 %174 BRA -> label$8 LABEL $7 LOADI.uint32 %606 2 MUL.int32 %244 %606 %171 ADD.int32 %245 %55 %244 SUB.uint32 %607 %245 %55 LOAD.int16.global.unaligned {%246} %607 bti:4 CVT.int32.uint16 %309 %246 MUL.int32 %248 %606 %172 ADD.int32 %249 %55 %248 SUB.uint32 %609 %249 %55 LOAD.int16.global.unaligned {%250} %609 bti:4 CVT.int32.uint16 %311 %250 MUL.int32 %252 %606 %173 ADD.int32 %253 %55 %252 SUB.uint32 %611 %253 %55 LOAD.int16.global.unaligned {%254} %611 bti:4 CVT.int32.uint16 %313 %254 MUL.int32 %256 %606 %174 ADD.int32 %257 %55 %256 SUB.uint32 %613 %257 %55 LOAD.int16.global.unaligned {%258} %613 bti:4 CVT.int32.uint16 %315 %258 MUL.int32 %260 %606 %179 ADD.int32 %261 %55 %260 SUB.uint32 %615 %261 %55 LOAD.int16.global.unaligned {%262} %615 bti:4 CVT.int32.uint16 %301 %262 MUL.int32 %264 %606 %180 ADD.int32 %265 %55 %264 SUB.uint32 %617 %265 %55 LOAD.int16.global.unaligned {%266} %617 bti:4 CVT.int32.uint16 %303 %266 MUL.int32 %268 %606 %181 ADD.int32 %269 %55 %268 SUB.uint32 %619 %269 %55 LOAD.int16.global.unaligned {%270} %619 bti:4 CVT.int32.uint16 %305 %270 MUL.int32 %272 %606 %182 ADD.int32 %273 %55 %272 SUB.uint32 %621 %273 %55 LOAD.int16.global.unaligned {%274} %621 bti:4 CVT.int32.uint16 %307 %274 MUL.int32 %276 %606 %187 ADD.int32 %277 %55 %276 SUB.uint32 %623 %277 %55 LOAD.int16.global.unaligned {%278} %623 bti:4 CVT.int32.uint16 %293 %278 MUL.int32 %280 %606 %188 ADD.int32 %281 %55 %280 SUB.uint32 %625 %281 %55 LOAD.int16.global.unaligned {%282} %625 bti:4 CVT.int32.uint16 %295 %282 MUL.int32 %284 %606 %189 ADD.int32 %285 %55 %284 SUB.uint32 %627 %285 %55 LOAD.int16.global.unaligned {%286} %627 bti:4 CVT.int32.uint16 %297 %286 MUL.int32 %288 %606 %190 ADD.int32 %289 %55 %288 SUB.uint32 %629 %289 %55 LOAD.int16.global.unaligned {%290} %629 bti:4 CVT.int32.uint16 %299 %290 LABEL $8 CVT.float.int32 %316 %309 CVT.float.int32 %317 %311 CVT.float.int32 %318 %313 CVT.float.int32 %319 %315 LOADI.float %630 1.5259e-05 MUL.float %357 %316 %630 MUL.float %359 %317 %630 MUL.float %361 %318 %630 MUL.float %363 %319 %630 CVT.float.int32 %324 %301 CVT.float.int32 %325 %303 CVT.float.int32 %326 %305 CVT.float.int32 %327 %307 MUL.float %349 %324 %630 MUL.float %351 %325 %630 MUL.float %353 %326 %630 MUL.float %355 %327 %630 CVT.float.int32 %332 %293 CVT.float.int32 %333 %295 CVT.float.int32 %334 %297 CVT.float.int32 %335 %299 MUL.float %341 %332 %630 MUL.float %343 %333 %630 MUL.float %345 %334 %630 MUL.float %347 %335 %630 LABEL $9 LOADI.uint32 %642 0 EQ.int32 %364 %56 %642 IF !<%364> -> label$16 LABEL $10 LOADI.float %643 0.5 MAD.float %365 %357 %57 %643 MAD.float %366 %359 %57 %643 MAD.float %367 %361 %57 %643 MAD.float %368 %363 %57 %643 CVT.int32.float %369 %365 CVT.int32.float %370 %366 CVT.int32.float %371 %367 CVT.int32.float %372 %368 LOADI.uint32 %647 65535 LT.int32 %373 %369 %647 SEL.int32 %374 %373 %369 %647 LOADI.uint32 %649 0 GT.int32 %375 %369 %649 LT.int32 %376 %370 %647 SEL.int32 %377 %376 %370 %647 GT.int32 %378 %370 %649 LT.int32 %379 %371 %647 SEL.int32 %380 %379 %371 %647 GT.int32 %381 %371 %649 LT.int32 %382 %372 %647 SEL.int32 %383 %382 %372 %647 GT.int32 %384 %372 %649 CVT.int16.int32 %385 %374 LOADI.uint16 %659 0 SEL.int16 %386 %375 %385 %659 CVT.int16.int32 %387 %377 SEL.int16 %388 %378 %387 %659 CVT.int16.int32 %389 %380 SEL.int16 %390 %381 %389 %659 CVT.int16.int32 %391 %383 SEL.int16 %392 %384 %391 %659 MAD.float %393 %349 %57 %643 MAD.float %394 %351 %57 %643 MAD.float %395 %353 %57 %643 MAD.float %396 %355 %57 %643 CVT.int32.float %397 %393 CVT.int32.float %398 %394 CVT.int32.float %399 %395 CVT.int32.float %400 %396 LT.int32 %401 %397 %647 SEL.int32 %402 %401 %397 %647 GT.int32 %403 %397 %649 LT.int32 %404 %398 %647 SEL.int32 %405 %404 %398 %647 GT.int32 %406 %398 %649 LT.int32 %407 %399 %647 SEL.int32 %408 %407 %399 %647 GT.int32 %409 %399 %649 LT.int32 %410 %400 %647 SEL.int32 %411 %410 %400 %647 GT.int32 %412 %400 %649 CVT.int16.int32 %413 %402 SEL.int16 %414 %403 %413 %659 CVT.int16.int32 %415 %405 SEL.int16 %416 %406 %415 %659 CVT.int16.int32 %417 %408 SEL.int16 %418 %409 %417 %659 CVT.int16.int32 %419 %411 SEL.int16 %420 %412 %419 %659 MAD.float %421 %341 %57 %643 MAD.float %422 %343 %57 %643 MAD.float %423 %345 %57 %643 MAD.float %424 %347 %57 %643 CVT.int32.float %425 %421 CVT.int32.float %426 %422 CVT.int32.float %427 %423 CVT.int32.float %428 %424 LT.int32 %429 %425 %647 SEL.int32 %430 %429 %425 %647 GT.int32 %431 %425 %649 LT.int32 %432 %426 %647 SEL.int32 %433 %432 %426 %647 GT.int32 %434 %426 %649 LT.int32 %435 %427 %647 SEL.int32 %436 %435 %427 %647 GT.int32 %437 %427 %649 LT.int32 %438 %428 %647 SEL.int32 %439 %438 %428 %647 GT.int32 %440 %428 %649 CVT.int16.int32 %441 %430 SEL.int16 %442 %431 %441 %659 CVT.int16.int32 %443 %433 SEL.int16 %444 %434 %443 %659 CVT.int16.int32 %445 %436 SEL.int16 %446 %437 %445 %659 CVT.int16.int32 %447 %439 SEL.int16 %448 %440 %447 %659 LOADI.uint32 %703 8 MUL.int32 %449 %703 %60 ADD.int32 %450 %41 %449 SUB.uint32 %704 %450 %41 STORE.int16.global.aligned %704 {%386 %388 %390 %392} bti:2 MUL.int32 %451 %703 %67 ADD.int32 %452 %41 %451 SUB.uint32 %706 %452 %41 STORE.int16.global.aligned %706 {%414 %416 %418 %420} bti:2 MUL.int32 %453 %703 %75 ADD.int32 %454 %41 %453 SUB.uint32 %708 %454 %41 STORE.int16.global.aligned %708 {%442 %444 %446 %448} bti:2 LABEL $11 ELSE -> label$15 <**>label: 16 LOADI.uint32 %709 16 MUL.int32 %455 %709 %60 ADD.int32 %456 %41 %455 SUB.uint32 %710 %456 %41 STORE.float.global.aligned %710 {%357 %359 %361 %363} bti:2 MUL.int32 %457 %709 %67 ADD.int32 %458 %41 %457 SUB.uint32 %712 %458 %41 STORE.float.global.aligned %712 {%349 %351 %353 %355} bti:2 MUL.int32 %459 %709 %75 ADD.int32 %460 %41 %459 SUB.uint32 %714 %460 %41 STORE.float.global.aligned %714 {%341 %343 %345 %347} bti:2 ENDIF -> label$15 LABEL $12 LABEL $13 RET .end_function matrixLinearRgbToRgb_Planar's SELECTION IR begin: WARNING: not completed yet, welcome for the FIX! [0] L0: [2] CMP.le(16) arf : %23<8,8,1>:UW 0x0:UW [4](f0.1) IF(16) : 0:D [6] MUL(1) %58<0>:D : %3<0,1,0>:D %12<0,1,0>:UD [8] ADD(16) %59<1>:D : %58<0,1,0>:D %0<8,8,1>:D [10] ADD(16) %60<1>:D : %59<8,8,1>:D %18<0,1,0>:D [12] MUL(16) %61<1>:UD : %60<8,8,1>:UD 0x10:UW [14] ADD(16) %62<1>:D : %42<0,1,0>:D %61<8,8,1>:D [16] ADD(16) %462<1>:UD : %62<8,8,1>:UD -%42<0,1,0>:UD [18] UNTYPED_READ(16) %63<1>:UD %64<1>:UD %65<1>:UD %66<1>:UD : %462<8,8,1>:UD 0x3:UD [20] ADD(16) %67<1>:D : %60<8,8,1>:D %44<0,1,0>:D [22] MUL(16) %68<1>:UD : %67<8,8,1>:UD 0x10:UW [24] ADD(16) %69<1>:D : %42<0,1,0>:D %68<8,8,1>:D [26] ADD(16) %464<1>:UD : %69<8,8,1>:UD -%42<0,1,0>:UD [28] UNTYPED_READ(16) %70<1>:UD %71<1>:UD %72<1>:UD %73<1>:UD : %464<8,8,1>:UD 0x3:UD [30] SHL(1) %74<0>:D : %44<0,1,0>:D 1:D [32] ADD(16) %75<1>:D : %60<8,8,1>:D %74<0,1,0>:D [34] MUL(16) %76<1>:UD : %75<8,8,1>:UD 0x10:UW [36] ADD(16) %77<1>:D : %42<0,1,0>:D %76<8,8,1>:D [38] ADD(16) %467<1>:UD : %77<8,8,1>:UD -%42<0,1,0>:UD [40] UNTYPED_READ(16) %78<1>:UD %79<1>:UD %80<1>:UD %81<1>:UD : %467<8,8,1>:UD 0x3:UD [42] SEL_CMP(16) %82<1>:F : %63<8,8,1>:F 1:F [44] SEL_CMP(16) %83<1>:F : %82<8,8,1>:F 0:F [46] SEL_CMP(16) %84<1>:F : %64<8,8,1>:F 1:F [48] SEL_CMP(16) %85<1>:F : %84<8,8,1>:F 0:F [50] SEL_CMP(16) %86<1>:F : %65<8,8,1>:F 1:F [52] SEL_CMP(16) %87<1>:F : %86<8,8,1>:F 0:F [54] SEL_CMP(16) %88<1>:F : %66<8,8,1>:F 1:F [56] SEL_CMP(16) %89<1>:F : %88<8,8,1>:F 0:F [58] SEL_CMP(16) %90<1>:F : %70<8,8,1>:F 1:F [60] SEL_CMP(16) %91<1>:F : %90<8,8,1>:F 0:F [62] SEL_CMP(16) %92<1>:F : %71<8,8,1>:F 1:F [64] SEL_CMP(16) %93<1>:F : %92<8,8,1>:F 0:F [66] SEL_CMP(16) %94<1>:F : %72<8,8,1>:F 1:F [68] SEL_CMP(16) %95<1>:F : %94<8,8,1>:F 0:F [70] SEL_CMP(16) %96<1>:F : %73<8,8,1>:F 1:F [72] SEL_CMP(16) %97<1>:F : %96<8,8,1>:F 0:F [74] SEL_CMP(16) %98<1>:F : %78<8,8,1>:F 1:F [76] SEL_CMP(16) %99<1>:F : %98<8,8,1>:F 0:F [78] SEL_CMP(16) %100<1>:F : %79<8,8,1>:F 1:F [80] SEL_CMP(16) %101<1>:F : %100<8,8,1>:F 0:F [82] SEL_CMP(16) %102<1>:F : %80<8,8,1>:F 1:F [84] SEL_CMP(16) %103<1>:F : %102<8,8,1>:F 0:F [86] SEL_CMP(16) %104<1>:F : %81<8,8,1>:F 1:F [88] SEL_CMP(16) %105<1>:F : %104<8,8,1>:F 0:F [90] MUL(16) %106<1>:F : %91<8,8,1>:F %46<0,1,0>:F [92] MUL(16) %107<1>:F : %93<8,8,1>:F %46<0,1,0>:F [94] MUL(16) %108<1>:F : %95<8,8,1>:F %46<0,1,0>:F [96] MUL(16) %109<1>:F : %97<8,8,1>:F %46<0,1,0>:F [98] MAD(16) %110<1>:F : %106<8,8,1>:F %45<0,1,0>:F %83<8,8,1>:F [100] MAD(16) %111<1>:F : %107<8,8,1>:F %45<0,1,0>:F %85<8,8,1>:F [102] MAD(16) %112<1>:F : %108<8,8,1>:F %45<0,1,0>:F %87<8,8,1>:F [104] MAD(16) %113<1>:F : %109<8,8,1>:F %45<0,1,0>:F %89<8,8,1>:F [106] MAD(16) %114<1>:F : %110<8,8,1>:F %47<0,1,0>:F %99<8,8,1>:F [108] MAD(16) %115<1>:F : %111<8,8,1>:F %47<0,1,0>:F %101<8,8,1>:F [110] MAD(16) %116<1>:F : %112<8,8,1>:F %47<0,1,0>:F %103<8,8,1>:F [112] MAD(16) %117<1>:F : %113<8,8,1>:F %47<0,1,0>:F %105<8,8,1>:F [114] MUL(16) %118<1>:F : %91<8,8,1>:F %49<0,1,0>:F [116] MUL(16) %119<1>:F : %93<8,8,1>:F %49<0,1,0>:F [118] MUL(16) %120<1>:F : %95<8,8,1>:F %49<0,1,0>:F [120] MUL(16) %121<1>:F : %97<8,8,1>:F %49<0,1,0>:F [122] MAD(16) %122<1>:F : %118<8,8,1>:F %48<0,1,0>:F %83<8,8,1>:F [124] MAD(16) %123<1>:F : %119<8,8,1>:F %48<0,1,0>:F %85<8,8,1>:F [126] MAD(16) %124<1>:F : %120<8,8,1>:F %48<0,1,0>:F %87<8,8,1>:F [128] MAD(16) %125<1>:F : %121<8,8,1>:F %48<0,1,0>:F %89<8,8,1>:F [130] MAD(16) %126<1>:F : %122<8,8,1>:F %50<0,1,0>:F %99<8,8,1>:F [132] MAD(16) %127<1>:F : %123<8,8,1>:F %50<0,1,0>:F %101<8,8,1>:F [134] MAD(16) %128<1>:F : %124<8,8,1>:F %50<0,1,0>:F %103<8,8,1>:F [136] MAD(16) %129<1>:F : %125<8,8,1>:F %50<0,1,0>:F %105<8,8,1>:F [138] MUL(16) %130<1>:F : %91<8,8,1>:F %52<0,1,0>:F [140] MUL(16) %131<1>:F : %93<8,8,1>:F %52<0,1,0>:F [142] MUL(16) %132<1>:F : %95<8,8,1>:F %52<0,1,0>:F [144] MUL(16) %133<1>:F : %97<8,8,1>:F %52<0,1,0>:F [146] MAD(16) %134<1>:F : %130<8,8,1>:F %51<0,1,0>:F %83<8,8,1>:F [148] MAD(16) %135<1>:F : %131<8,8,1>:F %51<0,1,0>:F %85<8,8,1>:F [150] MAD(16) %136<1>:F : %132<8,8,1>:F %51<0,1,0>:F %87<8,8,1>:F [152] MAD(16) %137<1>:F : %133<8,8,1>:F %51<0,1,0>:F %89<8,8,1>:F [154] MAD(16) %138<1>:F : %134<8,8,1>:F %53<0,1,0>:F %99<8,8,1>:F [156] MAD(16) %139<1>:F : %135<8,8,1>:F %53<0,1,0>:F %101<8,8,1>:F [158] MAD(16) %140<1>:F : %136<8,8,1>:F %53<0,1,0>:F %103<8,8,1>:F [160] MAD(16) %141<1>:F : %137<8,8,1>:F %53<0,1,0>:F %105<8,8,1>:F [162] SEL_CMP(16) %142<1>:F : %114<8,8,1>:F 1:F [164] SEL_CMP(16) %143<1>:F : %142<8,8,1>:F 0:F [166] SEL_CMP(16) %144<1>:F : %115<8,8,1>:F 1:F [168] SEL_CMP(16) %145<1>:F : %144<8,8,1>:F 0:F [170] SEL_CMP(16) %146<1>:F : %116<8,8,1>:F 1:F [172] SEL_CMP(16) %147<1>:F : %146<8,8,1>:F 0:F [174] SEL_CMP(16) %148<1>:F : %117<8,8,1>:F 1:F [176] SEL_CMP(16) %149<1>:F : %148<8,8,1>:F 0:F [178] SEL_CMP(16) %150<1>:F : %126<8,8,1>:F 1:F [180] SEL_CMP(16) %151<1>:F : %150<8,8,1>:F 0:F [182] SEL_CMP(16) %152<1>:F : %127<8,8,1>:F 1:F [184] SEL_CMP(16) %153<1>:F : %152<8,8,1>:F 0:F [186] SEL_CMP(16) %154<1>:F : %128<8,8,1>:F 1:F [188] SEL_CMP(16) %155<1>:F : %154<8,8,1>:F 0:F [190] SEL_CMP(16) %156<1>:F : %129<8,8,1>:F 1:F [192] SEL_CMP(16) %157<1>:F : %156<8,8,1>:F 0:F [194] SEL_CMP(16) %158<1>:F : %138<8,8,1>:F 1:F [196] SEL_CMP(16) %159<1>:F : %158<8,8,1>:F 0:F [198] SEL_CMP(16) %160<1>:F : %139<8,8,1>:F 1:F [200] SEL_CMP(16) %161<1>:F : %160<8,8,1>:F 0:F [202] SEL_CMP(16) %162<1>:F : %140<8,8,1>:F 1:F [204] SEL_CMP(16) %163<1>:F : %162<8,8,1>:F 0:F [206] SEL_CMP(16) %164<1>:F : %141<8,8,1>:F 1:F [208] SEL_CMP(16) %165<1>:F : %164<8,8,1>:F 0:F [210] CMP.le(16) arf : %54<0,1,0>:D 0:D [212] MOV(16) %341<1>:F : %159<8,8,1>:F [214] MOV(16) %343<1>:F : %161<8,8,1>:F [216] MOV(16) %345<1>:F : %163<8,8,1>:F [218] MOV(16) %347<1>:F : %165<8,8,1>:F [220] MOV(16) %349<1>:F : %151<8,8,1>:F [222] MOV(16) %351<1>:F : %153<8,8,1>:F [224] MOV(16) %353<1>:F : %155<8,8,1>:F [226] MOV(16) %355<1>:F : %157<8,8,1>:F [228] MOV(16) %357<1>:F : %143<8,8,1>:F [230] MOV(16) %359<1>:F : %145<8,8,1>:F [232] MOV(16) %361<1>:F : %147<8,8,1>:F [234] MOV(16) %363<1>:F : %149<8,8,1>:F [236](f166) MOV(16) %23<1>:UW : 0x9:UW [238] L18: [240] ENDIF(16) : 0:D [242] L1: [244] CMP.le(16) arf : %23<8,8,1>:UW 0x1:UW [246](f0.1) JMPI(1) : 0:D [248](f0.1) IF(16) : 0:D [250] MUL(16) %167<1>:F : %143<8,8,1>:F 65535:F [252] MUL(16) %168<1>:F : %145<8,8,1>:F 65535:F [254] MUL(16) %169<1>:F : %147<8,8,1>:F 65535:F [256] MUL(16) %170<1>:F : %149<8,8,1>:F 65535:F [258] MOV(16) %171<1>:D : %167<8,8,1>:F [260] MOV(16) %172<1>:D : %168<8,8,1>:F [262] MOV(16) %173<1>:D : %169<8,8,1>:F [264] MOV(16) %174<1>:D : %170<8,8,1>:F [266] MUL(16) %175<1>:F : %151<8,8,1>:F 65535:F [268] MUL(16) %176<1>:F : %153<8,8,1>:F 65535:F [270] MUL(16) %177<1>:F : %155<8,8,1>:F 65535:F [272] MUL(16) %178<1>:F : %157<8,8,1>:F 65535:F [274] MOV(16) %179<1>:D : %175<8,8,1>:F [276] MOV(16) %180<1>:D : %176<8,8,1>:F [278] MOV(16) %181<1>:D : %177<8,8,1>:F [280] MOV(16) %182<1>:D : %178<8,8,1>:F [282] MUL(16) %183<1>:F : %159<8,8,1>:F 65535:F [284] MUL(16) %184<1>:F : %161<8,8,1>:F 65535:F [286] MUL(16) %185<1>:F : %163<8,8,1>:F 65535:F [288] MUL(16) %186<1>:F : %165<8,8,1>:F 65535:F [290] MOV(16) %187<1>:D : %183<8,8,1>:F [292] MOV(16) %188<1>:D : %184<8,8,1>:F [294] MOV(16) %189<1>:D : %185<8,8,1>:F [296] MOV(16) %190<1>:D : %186<8,8,1>:F [298] L19: [300] ENDIF(16) : 0:D [302] L2: [304] CMP.le(16) arf : %23<8,8,1>:UW 0x2:UW [306](f0.1) JMPI(1) : 0:D [308](f0.1) IF(16) : 0:D [310] CMP.l(16) arf : %54<0,1,0>:D 3:D [312](f191) MOV(16) %23<1>:UW : 0x5:UW [314] L20: [316] ENDIF(16) : 0:D [318] L3: [320] CMP.le(16) arf : %23<8,8,1>:UW 0x3:UW [322](f0.1) JMPI(1) : 0:D [324](f0.1) IF(16) : 0:D [326] CMP.neq(16) arf : %54<0,1,0>:D 3:D [328](f192) MOV(16) %23<1>:UW : 0x6:UW [330] L21: [332] ENDIF(16) : 0:D [334] L4: [336] CMP.le(16) arf : %23<8,8,1>:UW 0x4:UW [338](f0.1) IF(16) : 0:D [340] ADD(1) %193<0>:D : %55<0,1,0>:D 131070:D [342] ADD(1) %194<0>:D : %55<0,1,0>:D 262140:D [344] MUL(16) %195<1>:UD : %171<8,8,1>:UD 0x2:UW [346] ADD(16) %196<1>:D : %55<0,1,0>:D %195<8,8,1>:D [348] ADD(16) %582<1>:UD : %196<8,8,1>:UD -%55<0,1,0>:UD [350] AND(16) %749<1>:UD : %582<8,8,1>:UD 0xfffffffc:UD [352] UNTYPED_READ(16) %748<1>:UD : %749<8,8,1>:UD 0x4:UD [354] AND(16) %750<1>:UD : %582<8,8,1>:UD 0x3:UD [356] SHL(16) %750<1>:UD : %750<8,8,1>:UD 0x3:UD [358] SHR(16) %748<1>:UD : %748<8,8,1>:UD %750<8,8,1>:UD [360] MOV(16) %197<1>:UW : %748<16,8,2>:UW [362] MOV(16) %198<1>:D : %197<8,8,1>:UW [364] MUL(16) %199<1>:UD : %172<8,8,1>:UD 0x2:UW [366] ADD(16) %200<1>:D : %55<0,1,0>:D %199<8,8,1>:D [368] ADD(16) %584<1>:UD : %200<8,8,1>:UD -%55<0,1,0>:UD [370] AND(16) %746<1>:UD : %584<8,8,1>:UD 0xfffffffc:UD [372] UNTYPED_READ(16) %745<1>:UD : %746<8,8,1>:UD 0x4:UD [374] AND(16) %747<1>:UD : %584<8,8,1>:UD 0x3:UD [376] SHL(16) %747<1>:UD : %747<8,8,1>:UD 0x3:UD [378] SHR(16) %745<1>:UD : %745<8,8,1>:UD %747<8,8,1>:UD [380] MOV(16) %201<1>:UW : %745<16,8,2>:UW [382] MOV(16) %202<1>:D : %201<8,8,1>:UW [384] MUL(16) %203<1>:UD : %173<8,8,1>:UD 0x2:UW [386] ADD(16) %204<1>:D : %55<0,1,0>:D %203<8,8,1>:D [388] ADD(16) %586<1>:UD : %204<8,8,1>:UD -%55<0,1,0>:UD [390] AND(16) %743<1>:UD : %586<8,8,1>:UD 0xfffffffc:UD [392] UNTYPED_READ(16) %742<1>:UD : %743<8,8,1>:UD 0x4:UD [394] AND(16) %744<1>:UD : %586<8,8,1>:UD 0x3:UD [396] SHL(16) %744<1>:UD : %744<8,8,1>:UD 0x3:UD [398] SHR(16) %742<1>:UD : %742<8,8,1>:UD %744<8,8,1>:UD [400] MOV(16) %205<1>:UW : %742<16,8,2>:UW [402] MOV(16) %206<1>:D : %205<8,8,1>:UW [404] MUL(16) %207<1>:UD : %174<8,8,1>:UD 0x2:UW [406] ADD(16) %208<1>:D : %55<0,1,0>:D %207<8,8,1>:D [408] ADD(16) %588<1>:UD : %208<8,8,1>:UD -%55<0,1,0>:UD [410] AND(16) %740<1>:UD : %588<8,8,1>:UD 0xfffffffc:UD [412] UNTYPED_READ(16) %739<1>:UD : %740<8,8,1>:UD 0x4:UD [414] AND(16) %741<1>:UD : %588<8,8,1>:UD 0x3:UD [416] SHL(16) %741<1>:UD : %741<8,8,1>:UD 0x3:UD [418] SHR(16) %739<1>:UD : %739<8,8,1>:UD %741<8,8,1>:UD [420] MOV(16) %209<1>:UW : %739<16,8,2>:UW [422] MOV(16) %210<1>:D : %209<8,8,1>:UW [424] MUL(16) %211<1>:UD : %179<8,8,1>:UD 0x2:UW [426] ADD(16) %212<1>:D : %193<0,1,0>:D %211<8,8,1>:D [428] ADD(16) %590<1>:UD : %212<8,8,1>:UD -%55<0,1,0>:UD [430] AND(16) %737<1>:UD : %590<8,8,1>:UD 0xfffffffc:UD [432] UNTYPED_READ(16) %736<1>:UD : %737<8,8,1>:UD 0x4:UD [434] AND(16) %738<1>:UD : %590<8,8,1>:UD 0x3:UD [436] SHL(16) %738<1>:UD : %738<8,8,1>:UD 0x3:UD [438] SHR(16) %736<1>:UD : %736<8,8,1>:UD %738<8,8,1>:UD [440] MOV(16) %213<1>:UW : %736<16,8,2>:UW [442] MOV(16) %214<1>:D : %213<8,8,1>:UW [444] MUL(16) %215<1>:UD : %180<8,8,1>:UD 0x2:UW [446] ADD(16) %216<1>:D : %193<0,1,0>:D %215<8,8,1>:D [448] ADD(16) %592<1>:UD : %216<8,8,1>:UD -%55<0,1,0>:UD [450] AND(16) %734<1>:UD : %592<8,8,1>:UD 0xfffffffc:UD [452] UNTYPED_READ(16) %733<1>:UD : %734<8,8,1>:UD 0x4:UD [454] AND(16) %735<1>:UD : %592<8,8,1>:UD 0x3:UD [456] SHL(16) %735<1>:UD : %735<8,8,1>:UD 0x3:UD [458] SHR(16) %733<1>:UD : %733<8,8,1>:UD %735<8,8,1>:UD [460] MOV(16) %217<1>:UW : %733<16,8,2>:UW [462] MOV(16) %218<1>:D : %217<8,8,1>:UW [464] MUL(16) %219<1>:UD : %181<8,8,1>:UD 0x2:UW [466] ADD(16) %220<1>:D : %193<0,1,0>:D %219<8,8,1>:D [468] ADD(16) %594<1>:UD : %220<8,8,1>:UD -%55<0,1,0>:UD [470] AND(16) %731<1>:UD : %594<8,8,1>:UD 0xfffffffc:UD [472] UNTYPED_READ(16) %730<1>:UD : %731<8,8,1>:UD 0x4:UD [474] AND(16) %732<1>:UD : %594<8,8,1>:UD 0x3:UD [476] SHL(16) %732<1>:UD : %732<8,8,1>:UD 0x3:UD [478] SHR(16) %730<1>:UD : %730<8,8,1>:UD %732<8,8,1>:UD [480] MOV(16) %221<1>:UW : %730<16,8,2>:UW [482] MOV(16) %222<1>:D : %221<8,8,1>:UW [484] MUL(16) %223<1>:UD : %182<8,8,1>:UD 0x2:UW [486] ADD(16) %224<1>:D : %193<0,1,0>:D %223<8,8,1>:D [488] ADD(16) %596<1>:UD : %224<8,8,1>:UD -%55<0,1,0>:UD [490] AND(16) %728<1>:UD : %596<8,8,1>:UD 0xfffffffc:UD [492] UNTYPED_READ(16) %727<1>:UD : %728<8,8,1>:UD 0x4:UD [494] AND(16) %729<1>:UD : %596<8,8,1>:UD 0x3:UD [496] SHL(16) %729<1>:UD : %729<8,8,1>:UD 0x3:UD [498] SHR(16) %727<1>:UD : %727<8,8,1>:UD %729<8,8,1>:UD [500] MOV(16) %225<1>:UW : %727<16,8,2>:UW [502] MOV(16) %226<1>:D : %225<8,8,1>:UW [504] MUL(16) %227<1>:UD : %187<8,8,1>:UD 0x2:UW [506] ADD(16) %228<1>:D : %194<0,1,0>:D %227<8,8,1>:D [508] ADD(16) %598<1>:UD : %228<8,8,1>:UD -%55<0,1,0>:UD [510] AND(16) %725<1>:UD : %598<8,8,1>:UD 0xfffffffc:UD [512] UNTYPED_READ(16) %724<1>:UD : %725<8,8,1>:UD 0x4:UD [514] AND(16) %726<1>:UD : %598<8,8,1>:UD 0x3:UD [516] SHL(16) %726<1>:UD : %726<8,8,1>:UD 0x3:UD [518] SHR(16) %724<1>:UD : %724<8,8,1>:UD %726<8,8,1>:UD [520] MOV(16) %229<1>:UW : %724<16,8,2>:UW [522] MOV(16) %230<1>:D : %229<8,8,1>:UW [524] MUL(16) %231<1>:UD : %188<8,8,1>:UD 0x2:UW [526] ADD(16) %232<1>:D : %194<0,1,0>:D %231<8,8,1>:D [528] ADD(16) %600<1>:UD : %232<8,8,1>:UD -%55<0,1,0>:UD [530] AND(16) %722<1>:UD : %600<8,8,1>:UD 0xfffffffc:UD [532] UNTYPED_READ(16) %721<1>:UD : %722<8,8,1>:UD 0x4:UD [534] AND(16) %723<1>:UD : %600<8,8,1>:UD 0x3:UD [536] SHL(16) %723<1>:UD : %723<8,8,1>:UD 0x3:UD [538] SHR(16) %721<1>:UD : %721<8,8,1>:UD %723<8,8,1>:UD [540] MOV(16) %233<1>:UW : %721<16,8,2>:UW [542] MOV(16) %234<1>:D : %233<8,8,1>:UW [544] MUL(16) %235<1>:UD : %189<8,8,1>:UD 0x2:UW [546] ADD(16) %236<1>:D : %194<0,1,0>:D %235<8,8,1>:D [548] ADD(16) %602<1>:UD : %236<8,8,1>:UD -%55<0,1,0>:UD [550] AND(16) %719<1>:UD : %602<8,8,1>:UD 0xfffffffc:UD [552] UNTYPED_READ(16) %718<1>:UD : %719<8,8,1>:UD 0x4:UD [554] AND(16) %720<1>:UD : %602<8,8,1>:UD 0x3:UD [556] SHL(16) %720<1>:UD : %720<8,8,1>:UD 0x3:UD [558] SHR(16) %718<1>:UD : %718<8,8,1>:UD %720<8,8,1>:UD [560] MOV(16) %237<1>:UW : %718<16,8,2>:UW [562] MOV(16) %238<1>:D : %237<8,8,1>:UW [564] MUL(16) %239<1>:UD : %190<8,8,1>:UD 0x2:UW [566] ADD(16) %240<1>:D : %194<0,1,0>:D %239<8,8,1>:D [568] ADD(16) %604<1>:UD : %240<8,8,1>:UD -%55<0,1,0>:UD [570] AND(16) %716<1>:UD : %604<8,8,1>:UD 0xfffffffc:UD [572] UNTYPED_READ(16) %715<1>:UD : %716<8,8,1>:UD 0x4:UD [574] AND(16) %717<1>:UD : %604<8,8,1>:UD 0x3:UD [576] SHL(16) %717<1>:UD : %717<8,8,1>:UD 0x3:UD [578] SHR(16) %715<1>:UD : %715<8,8,1>:UD %717<8,8,1>:UD [580] MOV(16) %241<1>:UW : %715<16,8,2>:UW [582] MOV(16) %242<1>:D : %241<8,8,1>:UW [584] MOV(16) %293<1>:F : %230<8,8,1>:F [586] MOV(16) %295<1>:F : %234<8,8,1>:F [588] MOV(16) %297<1>:F : %238<8,8,1>:F [590] MOV(16) %299<1>:F : %242<8,8,1>:F [592] MOV(16) %301<1>:F : %214<8,8,1>:F [594] MOV(16) %303<1>:F : %218<8,8,1>:F [596] MOV(16) %305<1>:F : %222<8,8,1>:F [598] MOV(16) %307<1>:F : %226<8,8,1>:F [600] MOV(16) %309<1>:F : %198<8,8,1>:F [602] MOV(16) %311<1>:F : %202<8,8,1>:F [604] MOV(16) %313<1>:F : %206<8,8,1>:F [606] MOV(16) %315<1>:F : %210<8,8,1>:F [608] MOV(16) %23<1>:UW : 0x8:UW [610] L22: [612] ENDIF(16) : 0:D [614] L5: [616] CMP.le(16) arf : %23<8,8,1>:UW 0x5:UW [618](f0.1) IF(16) : 0:D [620] CMP.eq(16) arf : %54<0,1,0>:D 1:D [622](f243) MOV(16) %23<1>:UW : 0x7:UW [624] L23: [626] ENDIF(16) : 0:D [628] L6: [630] CMP.le(16) arf : %23<8,8,1>:UW 0x6:UW [632](f0.1) IF(16) : 0:D [634] MOV(16) %293<1>:F : %187<8,8,1>:F [636] MOV(16) %295<1>:F : %188<8,8,1>:F [638] MOV(16) %297<1>:F : %189<8,8,1>:F [640] MOV(16) %299<1>:F : %190<8,8,1>:F [642] MOV(16) %301<1>:F : %179<8,8,1>:F [644] MOV(16) %303<1>:F : %180<8,8,1>:F [646] MOV(16) %305<1>:F : %181<8,8,1>:F [648] MOV(16) %307<1>:F : %182<8,8,1>:F [650] MOV(16) %309<1>:F : %171<8,8,1>:F [652] MOV(16) %311<1>:F : %172<8,8,1>:F [654] MOV(16) %313<1>:F : %173<8,8,1>:F [656] MOV(16) %315<1>:F : %174<8,8,1>:F [658] MOV(16) %23<1>:UW : 0x8:UW [660] L24: [662] ENDIF(16) : 0:D [664] L7: [666] CMP.le(16) arf : %23<8,8,1>:UW 0x7:UW [668](f0.1) IF(16) : 0:D [670] MUL(16) %244<1>:UD : %171<8,8,1>:UD 0x2:UW [672] ADD(16) %245<1>:D : %55<0,1,0>:D %244<8,8,1>:D [674] ADD(16) %607<1>:UD : %245<8,8,1>:UD -%55<0,1,0>:UD [676] AND(16) %785<1>:UD : %607<8,8,1>:UD 0xfffffffc:UD [678] UNTYPED_READ(16) %784<1>:UD : %785<8,8,1>:UD 0x4:UD [680] AND(16) %786<1>:UD : %607<8,8,1>:UD 0x3:UD [682] SHL(16) %786<1>:UD : %786<8,8,1>:UD 0x3:UD [684] SHR(16) %784<1>:UD : %784<8,8,1>:UD %786<8,8,1>:UD [686] MOV(16) %246<1>:UW : %784<16,8,2>:UW [688] MOV(16) %309<1>:D : %246<8,8,1>:UW [690] MUL(16) %248<1>:UD : %172<8,8,1>:UD 0x2:UW [692] ADD(16) %249<1>:D : %55<0,1,0>:D %248<8,8,1>:D [694] ADD(16) %609<1>:UD : %249<8,8,1>:UD -%55<0,1,0>:UD [696] AND(16) %782<1>:UD : %609<8,8,1>:UD 0xfffffffc:UD [698] UNTYPED_READ(16) %781<1>:UD : %782<8,8,1>:UD 0x4:UD [700] AND(16) %783<1>:UD : %609<8,8,1>:UD 0x3:UD [702] SHL(16) %783<1>:UD : %783<8,8,1>:UD 0x3:UD [704] SHR(16) %781<1>:UD : %781<8,8,1>:UD %783<8,8,1>:UD [706] MOV(16) %250<1>:UW : %781<16,8,2>:UW [708] MOV(16) %311<1>:D : %250<8,8,1>:UW [710] MUL(16) %252<1>:UD : %173<8,8,1>:UD 0x2:UW [712] ADD(16) %253<1>:D : %55<0,1,0>:D %252<8,8,1>:D [714] ADD(16) %611<1>:UD : %253<8,8,1>:UD -%55<0,1,0>:UD [716] AND(16) %779<1>:UD : %611<8,8,1>:UD 0xfffffffc:UD [718] UNTYPED_READ(16) %778<1>:UD : %779<8,8,1>:UD 0x4:UD [720] AND(16) %780<1>:UD : %611<8,8,1>:UD 0x3:UD [722] SHL(16) %780<1>:UD : %780<8,8,1>:UD 0x3:UD [724] SHR(16) %778<1>:UD : %778<8,8,1>:UD %780<8,8,1>:UD [726] MOV(16) %254<1>:UW : %778<16,8,2>:UW [728] MOV(16) %313<1>:D : %254<8,8,1>:UW [730] MUL(16) %256<1>:UD : %174<8,8,1>:UD 0x2:UW [732] ADD(16) %257<1>:D : %55<0,1,0>:D %256<8,8,1>:D [734] ADD(16) %613<1>:UD : %257<8,8,1>:UD -%55<0,1,0>:UD [736] AND(16) %776<1>:UD : %613<8,8,1>:UD 0xfffffffc:UD [738] UNTYPED_READ(16) %775<1>:UD : %776<8,8,1>:UD 0x4:UD [740] AND(16) %777<1>:UD : %613<8,8,1>:UD 0x3:UD [742] SHL(16) %777<1>:UD : %777<8,8,1>:UD 0x3:UD [744] SHR(16) %775<1>:UD : %775<8,8,1>:UD %777<8,8,1>:UD [746] MOV(16) %258<1>:UW : %775<16,8,2>:UW [748] MOV(16) %315<1>:D : %258<8,8,1>:UW [750] MUL(16) %260<1>:UD : %179<8,8,1>:UD 0x2:UW [752] ADD(16) %261<1>:D : %55<0,1,0>:D %260<8,8,1>:D [754] ADD(16) %615<1>:UD : %261<8,8,1>:UD -%55<0,1,0>:UD [756] AND(16) %773<1>:UD : %615<8,8,1>:UD 0xfffffffc:UD [758] UNTYPED_READ(16) %772<1>:UD : %773<8,8,1>:UD 0x4:UD [760] AND(16) %774<1>:UD : %615<8,8,1>:UD 0x3:UD [762] SHL(16) %774<1>:UD : %774<8,8,1>:UD 0x3:UD [764] SHR(16) %772<1>:UD : %772<8,8,1>:UD %774<8,8,1>:UD [766] MOV(16) %262<1>:UW : %772<16,8,2>:UW [768] MOV(16) %301<1>:D : %262<8,8,1>:UW [770] MUL(16) %264<1>:UD : %180<8,8,1>:UD 0x2:UW [772] ADD(16) %265<1>:D : %55<0,1,0>:D %264<8,8,1>:D [774] ADD(16) %617<1>:UD : %265<8,8,1>:UD -%55<0,1,0>:UD [776] AND(16) %770<1>:UD : %617<8,8,1>:UD 0xfffffffc:UD [778] UNTYPED_READ(16) %769<1>:UD : %770<8,8,1>:UD 0x4:UD [780] AND(16) %771<1>:UD : %617<8,8,1>:UD 0x3:UD [782] SHL(16) %771<1>:UD : %771<8,8,1>:UD 0x3:UD [784] SHR(16) %769<1>:UD : %769<8,8,1>:UD %771<8,8,1>:UD [786] MOV(16) %266<1>:UW : %769<16,8,2>:UW [788] MOV(16) %303<1>:D : %266<8,8,1>:UW [790] MUL(16) %268<1>:UD : %181<8,8,1>:UD 0x2:UW [792] ADD(16) %269<1>:D : %55<0,1,0>:D %268<8,8,1>:D [794] ADD(16) %619<1>:UD : %269<8,8,1>:UD -%55<0,1,0>:UD [796] AND(16) %767<1>:UD : %619<8,8,1>:UD 0xfffffffc:UD [798] UNTYPED_READ(16) %766<1>:UD : %767<8,8,1>:UD 0x4:UD [800] AND(16) %768<1>:UD : %619<8,8,1>:UD 0x3:UD [802] SHL(16) %768<1>:UD : %768<8,8,1>:UD 0x3:UD [804] SHR(16) %766<1>:UD : %766<8,8,1>:UD %768<8,8,1>:UD [806] MOV(16) %270<1>:UW : %766<16,8,2>:UW [808] MOV(16) %305<1>:D : %270<8,8,1>:UW [810] MUL(16) %272<1>:UD : %182<8,8,1>:UD 0x2:UW [812] ADD(16) %273<1>:D : %55<0,1,0>:D %272<8,8,1>:D [814] ADD(16) %621<1>:UD : %273<8,8,1>:UD -%55<0,1,0>:UD [816] AND(16) %764<1>:UD : %621<8,8,1>:UD 0xfffffffc:UD [818] UNTYPED_READ(16) %763<1>:UD : %764<8,8,1>:UD 0x4:UD [820] AND(16) %765<1>:UD : %621<8,8,1>:UD 0x3:UD [822] SHL(16) %765<1>:UD : %765<8,8,1>:UD 0x3:UD [824] SHR(16) %763<1>:UD : %763<8,8,1>:UD %765<8,8,1>:UD [826] MOV(16) %274<1>:UW : %763<16,8,2>:UW [828] MOV(16) %307<1>:D : %274<8,8,1>:UW [830] MUL(16) %276<1>:UD : %187<8,8,1>:UD 0x2:UW [832] ADD(16) %277<1>:D : %55<0,1,0>:D %276<8,8,1>:D [834] ADD(16) %623<1>:UD : %277<8,8,1>:UD -%55<0,1,0>:UD [836] AND(16) %761<1>:UD : %623<8,8,1>:UD 0xfffffffc:UD [838] UNTYPED_READ(16) %760<1>:UD : %761<8,8,1>:UD 0x4:UD [840] AND(16) %762<1>:UD : %623<8,8,1>:UD 0x3:UD [842] SHL(16) %762<1>:UD : %762<8,8,1>:UD 0x3:UD [844] SHR(16) %760<1>:UD : %760<8,8,1>:UD %762<8,8,1>:UD [846] MOV(16) %278<1>:UW : %760<16,8,2>:UW [848] MOV(16) %293<1>:D : %278<8,8,1>:UW [850] MUL(16) %280<1>:UD : %188<8,8,1>:UD 0x2:UW [852] ADD(16) %281<1>:D : %55<0,1,0>:D %280<8,8,1>:D [854] ADD(16) %625<1>:UD : %281<8,8,1>:UD -%55<0,1,0>:UD [856] AND(16) %758<1>:UD : %625<8,8,1>:UD 0xfffffffc:UD [858] UNTYPED_READ(16) %757<1>:UD : %758<8,8,1>:UD 0x4:UD [860] AND(16) %759<1>:UD : %625<8,8,1>:UD 0x3:UD [862] SHL(16) %759<1>:UD : %759<8,8,1>:UD 0x3:UD [864] SHR(16) %757<1>:UD : %757<8,8,1>:UD %759<8,8,1>:UD [866] MOV(16) %282<1>:UW : %757<16,8,2>:UW [868] MOV(16) %295<1>:D : %282<8,8,1>:UW [870] MUL(16) %284<1>:UD : %189<8,8,1>:UD 0x2:UW [872] ADD(16) %285<1>:D : %55<0,1,0>:D %284<8,8,1>:D [874] ADD(16) %627<1>:UD : %285<8,8,1>:UD -%55<0,1,0>:UD [876] AND(16) %755<1>:UD : %627<8,8,1>:UD 0xfffffffc:UD [878] UNTYPED_READ(16) %754<1>:UD : %755<8,8,1>:UD 0x4:UD [880] AND(16) %756<1>:UD : %627<8,8,1>:UD 0x3:UD [882] SHL(16) %756<1>:UD : %756<8,8,1>:UD 0x3:UD [884] SHR(16) %754<1>:UD : %754<8,8,1>:UD %756<8,8,1>:UD [886] MOV(16) %286<1>:UW : %754<16,8,2>:UW [888] MOV(16) %297<1>:D : %286<8,8,1>:UW [890] MUL(16) %288<1>:UD : %190<8,8,1>:UD 0x2:UW [892] ADD(16) %289<1>:D : %55<0,1,0>:D %288<8,8,1>:D [894] ADD(16) %629<1>:UD : %289<8,8,1>:UD -%55<0,1,0>:UD [896] AND(16) %752<1>:UD : %629<8,8,1>:UD 0xfffffffc:UD [898] UNTYPED_READ(16) %751<1>:UD : %752<8,8,1>:UD 0x4:UD [900] AND(16) %753<1>:UD : %629<8,8,1>:UD 0x3:UD [902] SHL(16) %753<1>:UD : %753<8,8,1>:UD 0x3:UD [904] SHR(16) %751<1>:UD : %751<8,8,1>:UD %753<8,8,1>:UD [906] MOV(16) %290<1>:UW : %751<16,8,2>:UW [908] MOV(16) %299<1>:D : %290<8,8,1>:UW [910] L25: [912] ENDIF(16) : 0:D [914] L8: [916] CMP.le(16) arf : %23<8,8,1>:UW 0x8:UW [918](f0.1) IF(16) : 0:D [920] MOV(16) %316<1>:F : %309<8,8,1>:D [922] MOV(16) %317<1>:F : %311<8,8,1>:D [924] MOV(16) %318<1>:F : %313<8,8,1>:D [926] MOV(16) %319<1>:F : %315<8,8,1>:D [928] MUL(16) %357<1>:F : %316<8,8,1>:F 1.5259e-05:F [930] MUL(16) %359<1>:F : %317<8,8,1>:F 1.5259e-05:F [932] MUL(16) %361<1>:F : %318<8,8,1>:F 1.5259e-05:F [934] MUL(16) %363<1>:F : %319<8,8,1>:F 1.5259e-05:F [936] MOV(16) %324<1>:F : %301<8,8,1>:D [938] MOV(16) %325<1>:F : %303<8,8,1>:D [940] MOV(16) %326<1>:F : %305<8,8,1>:D [942] MOV(16) %327<1>:F : %307<8,8,1>:D [944] MUL(16) %349<1>:F : %324<8,8,1>:F 1.5259e-05:F [946] MUL(16) %351<1>:F : %325<8,8,1>:F 1.5259e-05:F [948] MUL(16) %353<1>:F : %326<8,8,1>:F 1.5259e-05:F [950] MUL(16) %355<1>:F : %327<8,8,1>:F 1.5259e-05:F [952] MOV(16) %332<1>:F : %293<8,8,1>:D [954] MOV(16) %333<1>:F : %295<8,8,1>:D [956] MOV(16) %334<1>:F : %297<8,8,1>:D [958] MOV(16) %335<1>:F : %299<8,8,1>:D [960] MUL(16) %341<1>:F : %332<8,8,1>:F 1.5259e-05:F [962] MUL(16) %343<1>:F : %333<8,8,1>:F 1.5259e-05:F [964] MUL(16) %345<1>:F : %334<8,8,1>:F 1.5259e-05:F [966] MUL(16) %347<1>:F : %335<8,8,1>:F 1.5259e-05:F [968] L26: [970] ENDIF(16) : 0:D [972] L9: [974] CMP.le(16) arf : %23<8,8,1>:UW 0x9:UW [976](f0.1) IF(16) : 0:D [978] CMP.eq(16) arf : %56<0,1,0>:D 0:D [980](f364) IF(16) : 0:D [982] L10: [984] MOV(1) %643<0>:F : 0.5:F [986] MAD(16) %365<1>:F : %643<0,1,0>:F %357<8,8,1>:F %57<0,1,0>:F [988] MAD(16) %366<1>:F : %643<0,1,0>:F %359<8,8,1>:F %57<0,1,0>:F [990] MAD(16) %367<1>:F : %643<0,1,0>:F %361<8,8,1>:F %57<0,1,0>:F [992] MAD(16) %368<1>:F : %643<0,1,0>:F %363<8,8,1>:F %57<0,1,0>:F [994] MOV(16) %369<1>:D : %365<8,8,1>:F [996] MOV(16) %370<1>:D : %366<8,8,1>:F [998] MOV(16) %371<1>:D : %367<8,8,1>:F [1000] MOV(16) %372<1>:D : %368<8,8,1>:F [1002] SEL_CMP(16) %374<1>:D : %369<8,8,1>:D 65535:D [1004] CMP.g(16) arf : %369<8,8,1>:D 0:D [1006] SEL_CMP(16) %377<1>:D : %370<8,8,1>:D 65535:D [1008] CMP.g(16) arf : %370<8,8,1>:D 0:D [1010] SEL_CMP(16) %380<1>:D : %371<8,8,1>:D 65535:D [1012] CMP.g(16) arf : %371<8,8,1>:D 0:D [1014] SEL_CMP(16) %383<1>:D : %372<8,8,1>:D 65535:D [1016] CMP.g(16) arf : %372<8,8,1>:D 0:D [1018] MOV(16) %804<2>:W : %374<8,8,1>:D [1020] MOV(16) %385<1>:W : %804<16,8,2>:W [1022](f375) SEL(16) %386<1>:W : %385<8,8,1>:W 0:W [1024] MOV(16) %803<2>:W : %377<8,8,1>:D [1026] MOV(16) %387<1>:W : %803<16,8,2>:W [1028](f378) SEL(16) %388<1>:W : %387<8,8,1>:W 0:W [1030] MOV(16) %802<2>:W : %380<8,8,1>:D [1032] MOV(16) %389<1>:W : %802<16,8,2>:W [1034](f381) SEL(16) %390<1>:W : %389<8,8,1>:W 0:W [1036] MOV(16) %801<2>:W : %383<8,8,1>:D [1038] MOV(16) %391<1>:W : %801<16,8,2>:W [1040](f384) SEL(16) %392<1>:W : %391<8,8,1>:W 0:W [1042] MAD(16) %393<1>:F : %643<0,1,0>:F %349<8,8,1>:F %57<0,1,0>:F [1044] MAD(16) %394<1>:F : %643<0,1,0>:F %351<8,8,1>:F %57<0,1,0>:F [1046] MAD(16) %395<1>:F : %643<0,1,0>:F %353<8,8,1>:F %57<0,1,0>:F [1048] MAD(16) %396<1>:F : %643<0,1,0>:F %355<8,8,1>:F %57<0,1,0>:F [1050] MOV(16) %397<1>:D : %393<8,8,1>:F [1052] MOV(16) %398<1>:D : %394<8,8,1>:F [1054] MOV(16) %399<1>:D : %395<8,8,1>:F [1056] MOV(16) %400<1>:D : %396<8,8,1>:F [1058] SEL_CMP(16) %402<1>:D : %397<8,8,1>:D 65535:D [1060] CMP.g(16) arf : %397<8,8,1>:D 0:D [1062] SEL_CMP(16) %405<1>:D : %398<8,8,1>:D 65535:D [1064] CMP.g(16) arf : %398<8,8,1>:D 0:D [1066] SEL_CMP(16) %408<1>:D : %399<8,8,1>:D 65535:D [1068] CMP.g(16) arf : %399<8,8,1>:D 0:D [1070] SEL_CMP(16) %411<1>:D : %400<8,8,1>:D 65535:D [1072] CMP.g(16) arf : %400<8,8,1>:D 0:D [1074] MOV(16) %800<2>:W : %402<8,8,1>:D [1076] MOV(16) %413<1>:W : %800<16,8,2>:W [1078](f403) SEL(16) %414<1>:W : %413<8,8,1>:W 0:W [1080] MOV(16) %799<2>:W : %405<8,8,1>:D [1082] MOV(16) %415<1>:W : %799<16,8,2>:W [1084](f406) SEL(16) %416<1>:W : %415<8,8,1>:W 0:W [1086] MOV(16) %798<2>:W : %408<8,8,1>:D [1088] MOV(16) %417<1>:W : %798<16,8,2>:W [1090](f409) SEL(16) %418<1>:W : %417<8,8,1>:W 0:W [1092] MOV(16) %797<2>:W : %411<8,8,1>:D [1094] MOV(16) %419<1>:W : %797<16,8,2>:W [1096](f412) SEL(16) %420<1>:W : %419<8,8,1>:W 0:W [1098] MAD(16) %421<1>:F : %643<0,1,0>:F %341<8,8,1>:F %57<0,1,0>:F [1100] MAD(16) %422<1>:F : %643<0,1,0>:F %343<8,8,1>:F %57<0,1,0>:F [1102] MAD(16) %423<1>:F : %643<0,1,0>:F %345<8,8,1>:F %57<0,1,0>:F [1104] MAD(16) %424<1>:F : %643<0,1,0>:F %347<8,8,1>:F %57<0,1,0>:F [1106] MOV(16) %425<1>:D : %421<8,8,1>:F [1108] MOV(16) %426<1>:D : %422<8,8,1>:F [1110] MOV(16) %427<1>:D : %423<8,8,1>:F [1112] MOV(16) %428<1>:D : %424<8,8,1>:F [1114] SEL_CMP(16) %430<1>:D : %425<8,8,1>:D 65535:D [1116] CMP.g(16) arf : %425<8,8,1>:D 0:D [1118] SEL_CMP(16) %433<1>:D : %426<8,8,1>:D 65535:D [1120] CMP.g(16) arf : %426<8,8,1>:D 0:D [1122] SEL_CMP(16) %436<1>:D : %427<8,8,1>:D 65535:D [1124] CMP.g(16) arf : %427<8,8,1>:D 0:D [1126] SEL_CMP(16) %439<1>:D : %428<8,8,1>:D 65535:D [1128] CMP.g(16) arf : %428<8,8,1>:D 0:D [1130] MOV(16) %796<2>:W : %430<8,8,1>:D [1132] MOV(16) %441<1>:W : %796<16,8,2>:W [1134](f431) SEL(16) %442<1>:W : %441<8,8,1>:W 0:W [1136] MOV(16) %795<2>:W : %433<8,8,1>:D [1138] MOV(16) %443<1>:W : %795<16,8,2>:W [1140](f434) SEL(16) %444<1>:W : %443<8,8,1>:W 0:W [1142] MOV(16) %794<2>:W : %436<8,8,1>:D [1144] MOV(16) %445<1>:W : %794<16,8,2>:W [1146](f437) SEL(16) %446<1>:W : %445<8,8,1>:W 0:W [1148] MOV(16) %793<2>:W : %439<8,8,1>:D [1150] MOV(16) %447<1>:W : %793<16,8,2>:W [1152](f440) SEL(16) %448<1>:W : %447<8,8,1>:W 0:W [1154] MUL(16) %449<1>:UD : %60<8,8,1>:UD 0x8:UW [1156] ADD(16) %450<1>:D : %41<0,1,0>:D %449<8,8,1>:D [1158] ADD(16) %704<1>:UD : %450<8,8,1>:UD -%41<0,1,0>:UD [1160] PACK_BYTE(16) %791<1>:UD : %386<8,8,1>:UW %388<8,8,1>:UW [1162] PACK_BYTE(16) %792<1>:UD : %390<8,8,1>:UW %392<8,8,1>:UW [1164] UNTYPED_WRITE(16) : %704<8,8,1>:UD %791<8,8,1>:UD %792<8,8,1>:UD 0x2:UD [1166] MUL(16) %451<1>:UD : %67<8,8,1>:UD 0x8:UW [1168] ADD(16) %452<1>:D : %41<0,1,0>:D %451<8,8,1>:D [1170] ADD(16) %706<1>:UD : %452<8,8,1>:UD -%41<0,1,0>:UD [1172] PACK_BYTE(16) %789<1>:UD : %414<8,8,1>:UW %416<8,8,1>:UW [1174] PACK_BYTE(16) %790<1>:UD : %418<8,8,1>:UW %420<8,8,1>:UW [1176] UNTYPED_WRITE(16) : %706<8,8,1>:UD %789<8,8,1>:UD %790<8,8,1>:UD 0x2:UD [1178] MUL(16) %453<1>:UD : %75<8,8,1>:UD 0x8:UW [1180] ADD(16) %454<1>:D : %41<0,1,0>:D %453<8,8,1>:D [1182] ADD(16) %708<1>:UD : %454<8,8,1>:UD -%41<0,1,0>:UD [1184] PACK_BYTE(16) %787<1>:UD : %442<8,8,1>:UW %444<8,8,1>:UW [1186] PACK_BYTE(16) %788<1>:UD : %446<8,8,1>:UW %448<8,8,1>:UW [1188] UNTYPED_WRITE(16) : %708<8,8,1>:UD %787<8,8,1>:UD %788<8,8,1>:UD 0x2:UD [1190] L11: [1192] ELSE(16) : 0:D [1194] L16: [1196] MUL(16) %455<1>:UD : %60<8,8,1>:UD 0x10:UW [1198] ADD(16) %456<1>:D : %41<0,1,0>:D %455<8,8,1>:D [1200] ADD(16) %710<1>:UD : %456<8,8,1>:UD -%41<0,1,0>:UD [1202] UNTYPED_WRITE(16) : %710<8,8,1>:UD %357<8,8,1>:UD %359<8,8,1>:UD %361<8,8,1>:UD %363<8,8,1>:UD 0x2:UD [1204] MUL(16) %457<1>:UD : %67<8,8,1>:UD 0x10:UW [1206] ADD(16) %458<1>:D : %41<0,1,0>:D %457<8,8,1>:D [1208] ADD(16) %712<1>:UD : %458<8,8,1>:UD -%41<0,1,0>:UD [1210] UNTYPED_WRITE(16) : %712<8,8,1>:UD %349<8,8,1>:UD %351<8,8,1>:UD %353<8,8,1>:UD %355<8,8,1>:UD 0x2:UD [1212] MUL(16) %459<1>:UD : %75<8,8,1>:UD 0x10:UW [1214] ADD(16) %460<1>:D : %41<0,1,0>:D %459<8,8,1>:D [1216] ADD(16) %714<1>:UD : %460<8,8,1>:UD -%41<0,1,0>:UD [1218] UNTYPED_WRITE(16) : %714<8,8,1>:UD %341<8,8,1>:UD %343<8,8,1>:UD %345<8,8,1>:UD %347<8,8,1>:UD 0x2:UD [1220] L15: [1222] ENDIF(16) : 0:D [1224] L14: [1226] ENDIF(16) : 0:D [1228](f0.1) L12: [1230] CMP.le(16) arf : %23<8,8,1>:UW 0xc:UW [1232](f0.1) L13: [1234](f0.1) EOT(16) : matrixLinearRgbToRgb_Planar's SELECTION IR end. CL kernel source: //----------------------------------------------------------------------------- #define LUMA_RGB( r, g, b )( 0.25f * (r) + 0.625f * (g) + 0.125f * (b) ) #define LUMA( clr )( 0.25f * (clr).x + 0.625f * (clr).y + 0.125f * (clr).z ) float luma( __read_only image2d_t img, int2 pos ); float lumaC( __global float4 const * pSrc, uint nRowPixels, int2 pos ); float lumaP( __global float const * pSrc, uint nRowPixels, uint nPlanePixels, int2 pos ); void loadLumaLDS(__local float *pixels, __global float const * restrict src, const int lrp, const uint rowPixels, const uint nPlanePixels, const int size, const int pad, const int globalWidth, const int globalHeight, const int groupId, const int workGroupSize); //----------------------------------------------------------------------------- float lumaP( __global float const * pSrc, uint nRowPixels, uint nPlanePixels, int2 pos ) { float r = pSrc[pos.x + pos.y * nRowPixels]; float g = pSrc[pos.x + pos.y * nRowPixels + nPlanePixels]; float b = pSrc[pos.x + pos.y * nRowPixels + 2 * nPlanePixels]; return LUMA_RGB( r, g, b ); } //----------------------------------------------------------------------------- void loadLumaLDS(__local float *pixels, __global float const * restrict src, const int lrp, const uint rowPixels, const uint nPlanePixels, const int size, const int pad, const int globalWidth, const int globalHeight, const int groupId, const int workGroupSize) { const int lsize = lrp * lrp; int srcx = get_group_id(0) * size - pad; int srcy = get_group_id(1) * size - pad; int loadOffset = groupId; while (loadOffset < lsize) { int x = srcx + (loadOffset % lrp); int y = srcy + (loadOffset / lrp); x = (x < 0) ? -x : x; x = (x >= globalWidth) ? (2 * (globalWidth - 1) - x) : x; y = (y < 0) ? -y : y; y = (y >= globalHeight) ? (2 * (globalHeight - 1) - y) : y; // pixels[loadOffset] = src[x + y * rowPixels]; pixels[loadOffset] = lumaP( src, rowPixels, nPlanePixels, (int2)( x, y ) ); loadOffset += workGroupSize; } } //----------------------------------------------------------------------------- #define KERNEL_SIZE 16 // Size of the 2D kernel in pixels #define PAD 2 #define LRP (KERNEL_SIZE + 2 * PAD) // local row pixels //----------------------------------------------------------------------------- __kernel __attribute__((reqd_work_group_size(16, 16, 1))) void rgbSharpen_PlanarLds( __global float * pDst, __global float const * restrict pSrc, uint nRowPixels, uint nPlanePixels, uint nWidth, uint nHeight, int nMip, float fSharpness, int nSensitivity, const unsigned int destFormat, const float fWhite ) { __local float pixels[LRP * LRP]; __local float blurr[LRP * KERNEL_SIZE]; const int2 localPos = (int2)( get_local_id(0), get_local_id(1) ); const int2 pos = (int2)( get_global_id(0), get_global_id(1) ); const int nWorkGroupSize = KERNEL_SIZE * KERNEL_SIZE; // convert 2D positions into 1D indices const int groupIdx = localPos.x + localPos.y * KERNEL_SIZE; loadLumaLDS( pixels, pSrc, LRP, nRowPixels, nPlanePixels, KERNEL_SIZE, PAD, nWidth, nHeight, groupIdx, nWorkGroupSize ); barrier(CLK_LOCAL_MEM_FENCE); // save the original color float r = pSrc[pos.x + pos.y * nRowPixels]; float g = pSrc[pos.x + pos.y * nRowPixels + nPlanePixels]; float b = pSrc[pos.x + pos.y * nRowPixels + 2 * nPlanePixels]; // perform a reduction by separating the 2D kernel into two passes of a 1D kernel // moves us from a 20x20 kernel to 20x16 // 1D Vertical Kernel // 1 // 2 // 4 // 2 // 1 // 1D index into pixels int loadOff = groupIdx; const int lsize = LRP * KERNEL_SIZE; while ( loadOff < lsize ) { float fSum; int x = (loadOff % LRP); int y = PAD + (loadOff / LRP); int pixOff = x + y * LRP; fSum = pixels[pixOff - 2 * LRP] + 2.f * ( pixels[pixOff - LRP] + pixels[pixOff + LRP] ) + 4.f * pixels[pixOff] + pixels[pixOff + 2 * LRP]; blurr[loadOff] = fSum; loadOff += nWorkGroupSize; } barrier(CLK_LOCAL_MEM_FENCE); // blurr[] now contains the results of the 1D Vertical kernel // apply the 1D Horizontal kernel & sharpen const int blurrOff = localPos.x + PAD + localPos.y * LRP; // save the original luma float lumaOrig = LUMA_RGB( r, g, b ); float lumaBlur = 0.f; float fMipDiv = 1.f / ( 1 << nMip ); float fSS = ( nSensitivity * 128.f ) / 65535.f; float fCutoff = fSS * 0.5f; float fInvCutoff = 1.f / fCutoff; lumaBlur = blurr[blurrOff - 2] + 2.f * ( blurr[blurrOff - 1] + blurr[blurrOff + 1] ) + 4.f * blurr[blurrOff] + blurr[blurrOff + 2]; lumaBlur = lumaBlur * 0.01; // subtract blurr from original luma float fSharp = lumaOrig - lumaBlur; float fAbsDif, fTmp; // apply strength to difference fSharp *= fSharpness; // get the absolute value fAbsDif = fabs( fSharp ); // do cutoff here... // calculate the diff when it's between the cutoff & ss fTmp = ( ( fAbsDif - fCutoff ) * fSharp ) * fInvCutoff; // if adiff < cutoff ... vTmp = 0 else vTmp remains as above fTmp = fAbsDif < fCutoff ? 0.f : fTmp; // if adiff < ss ... vDif = vTmp else vDif remains the same fSharp = fAbsDif < fSS ? fTmp : fSharp; fSharp *= fMipDiv; fSharp += nMip > 0 ? fSharp * 0.5f : 0.f; // we now have the sharpened luma, apply it to each color channel // add the sharpened luminance change to the original color r += fSharp; g += fSharp; b += fSharp; // clamp to 0 (don't want any negative values) r = max( r, 0.f ); g = max( g, 0.f ); b = max( b, 0.f ); // store to output image // only output valid pixels if ( pos.x < (int)nWidth && pos.y < (int)nHeight ) { if (destFormat == 0) { pDst[pos.x + pos.y * nRowPixels] = r; pDst[pos.x + pos.y * nRowPixels + nPlanePixels] = g; pDst[pos.x + pos.y * nRowPixels + 2 * nPlanePixels] = b; } else { __global unsigned short int *pShortDst = (__global unsigned short int *)(pDst); int ri, gi, bi; // clamp to the ushort range [0..65535] ri = clamp( (int)( r * fWhite + 0.5f ), 0, 65535 ); gi = clamp( (int)( g * fWhite + 0.5f ), 0, 65535 ); bi = clamp( (int)( b * fWhite + 0.5f ), 0, 65535 ); pShortDst[pos.x + pos.y * nRowPixels] = (ushort)(ri); pShortDst[pos.x + pos.y * nRowPixels + nPlanePixels] = (ushort)(gi); pShortDst[pos.x + pos.y * nRowPixels + 2 * nPlanePixels] = (ushort)(bi); } } } //----------------------------------------------------------------------------- __kernel void rgbSharpen_Planar( __global float * pDst, __global float const * pSrc, uint nRowPixels, uint nPlanePixels, int nMip, float fSharpness, int nSensitivity, const unsigned int destFormat, const float fWhite ) { int2 pos = (int2)( get_global_id(0), get_global_id(1) ); // save the original color float r = pSrc[pos.x + pos.y * nRowPixels]; float g = pSrc[pos.x + pos.y * nRowPixels + nPlanePixels]; float b = pSrc[pos.x + pos.y * nRowPixels + 2 * nPlanePixels]; // pixels in the pad get coppied through if ( pos.x < 2 || pos.y < 2 || pos.x >= (int)get_global_size(0) - 2 || pos.y >= (int)get_global_size(1) - 2 ) { pDst[pos.x + pos.y * nRowPixels] = r; pDst[pos.x + pos.y * nRowPixels + nPlanePixels] = g; pDst[pos.x + pos.y * nRowPixels + 2 * nPlanePixels] = b; return; } // save the original luma float lumaOrig = LUMA_RGB( r, g, b ); float lumaBlur = 0.f; float fMipDiv = 1.f / ( 1 << nMip ); float fSS = ( nSensitivity * 128.f ) / 65535.f; float fCutoff = fSS * 0.5f; float fInvCutoff = 1.f / fCutoff; // convert each color to luminance and apply the following kernel: // 1 2 4 2 1 // 2 4 8 4 2 // 4 8 16 8 4 // 2 4 8 4 2 // 1 2 4 2 1 lumaBlur += lumaP( pSrc, nRowPixels, nPlanePixels, pos + (int2)( -2, -2 ) ) + 2.f * lumaP( pSrc, nRowPixels, nPlanePixels, pos + (int2)( -1, -2 ) ) + 4.f * lumaP( pSrc, nRowPixels, nPlanePixels, pos + (int2)( 0, -2 ) ) + 2.f * lumaP( pSrc, nRowPixels, nPlanePixels, pos + (int2)( 1, -2 ) ) + lumaP( pSrc, nRowPixels, nPlanePixels, pos + (int2)( 2, -2 ) ); lumaBlur += 2.f * lumaP( pSrc, nRowPixels, nPlanePixels, pos + (int2)( -2, -1 ) ) + 4.f * lumaP( pSrc, nRowPixels, nPlanePixels, pos + (int2)( -1, -1 ) ) + 8.f * lumaP( pSrc, nRowPixels, nPlanePixels, pos + (int2)( 0, -1 ) ) + 4.f * lumaP( pSrc, nRowPixels, nPlanePixels, pos + (int2)( 1, -1 ) ) + 2.f * lumaP( pSrc, nRowPixels, nPlanePixels, pos + (int2)( 2, -1 ) ); lumaBlur += 4.f * lumaP( pSrc, nRowPixels, nPlanePixels, pos + (int2)( -2, 0 ) ) + 8.f * lumaP( pSrc, nRowPixels, nPlanePixels, pos + (int2)( -1, 0 ) ) + 16.f * lumaOrig + 8.f * lumaP( pSrc, nRowPixels, nPlanePixels, pos + (int2)( 1, 0 ) ) + 4.f * lumaP( pSrc, nRowPixels, nPlanePixels, pos + (int2)( 2, 0 ) ); lumaBlur += 2.f * lumaP( pSrc, nRowPixels, nPlanePixels, pos + (int2)( -2, 1 ) ) + 4.f * lumaP( pSrc, nRowPixels, nPlanePixels, pos + (int2)( -1, 1 ) ) + 8.f * lumaP( pSrc, nRowPixels, nPlanePixels, pos + (int2)( 0, 1 ) ) + 4.f * lumaP( pSrc, nRowPixels, nPlanePixels, pos + (int2)( 1, 1 ) ) + 2.f * lumaP( pSrc, nRowPixels, nPlanePixels, pos + (int2)( 2, 1 ) ); lumaBlur += lumaP( pSrc, nRowPixels, nPlanePixels, pos + (int2)( -2, 2 ) ) + 2.f * lumaP( pSrc, nRowPixels, nPlanePixels, pos + (int2)( -1, 2 ) ) + 4.f * lumaP( pSrc, nRowPixels, nPlanePixels, pos + (int2)( 0, 2 ) ) + 2.f * lumaP( pSrc, nRowPixels, nPlanePixels, pos + (int2)( 1, 2 ) ) + lumaP( pSrc, nRowPixels, nPlanePixels, pos + (int2)( 2, 2 ) ); lumaBlur = lumaBlur * 0.01; // subtract blurr from original luma float fSharp = lumaOrig - lumaBlur; float fAbsDif, fTmp; // apply strength to difference fSharp *= fSharpness; // get the absolute value fAbsDif = fabs( fSharp ); // do cutoff here... // calculate the diff when it's between the cutoff & ss fTmp = ( ( fAbsDif - fCutoff ) * fSharp ) * fInvCutoff; // if adiff < cutoff ... vTmp = 0 else vTmp remains as above fTmp = fAbsDif < fCutoff ? 0.f : fTmp; // if adiff < ss ... vDif = vTmp else vDif remains the same fSharp = fAbsDif < fSS ? fTmp : fSharp; fSharp *= fMipDiv; fSharp += nMip > 0 ? fSharp * 0.5f : 0.f; // we now have the sharpened luma, apply it to each color channel // add the sharpened luminance change to the original color r += fSharp; g += fSharp; b += fSharp; // clamp to 0 (don't want any negative values) r = max( r, 0.f ); g = max( g, 0.f ); b = max( b, 0.f ); // store to output image if (destFormat == 0) { pDst[pos.x + pos.y * nRowPixels] = r; pDst[pos.x + pos.y * nRowPixels + nPlanePixels] = g; pDst[pos.x + pos.y * nRowPixels + 2 * nPlanePixels] = b; } else { __global unsigned short int *pShortDst = (__global unsigned short int *)(pDst); int ri, gi, bi; // clamp to the ushort range [0..65535] ri = clamp( (int)( r * fWhite + 0.5f ), 0, 65535 ); gi = clamp( (int)( g * fWhite + 0.5f ), 0, 65535 ); bi = clamp( (int)( b * fWhite + 0.5f ), 0, 65535 ); pShortDst[pos.x + pos.y * nRowPixels] = (ushort)(ri); pShortDst[pos.x + pos.y * nRowPixels + nPlanePixels] = (ushort)(gi); pShortDst[pos.x + pos.y * nRowPixels + 2 * nPlanePixels] = (ushort)(bi); } } //----------------------------------------------------------------------------- float lumaC( __global float4 const * pSrc, uint nRowPixels, int2 pos ) { float4 clr = pSrc[pos.x + pos.y * nRowPixels / 4]; return LUMA( clr ); } //----------------------------------------------------------------------------- __kernel void rgbSharpen_Chunky( __global float4 * pDst, __global float4 const * pSrc, uint nRowPixels, uint nPlanePixels, int nMip, float fSharpness, int nSensitivity ) { int2 pos = (int2)( get_global_id(0), get_global_id(1) ); // save the original color float4 clr = pSrc[pos.x + pos.y * nRowPixels / 4]; // pixels in the pad get coppied through if ( pos.x < 2 || pos.y < 2 || pos.x >= (int)get_global_size(0) - 2 || pos.y >= (int)get_global_size(1) - 2 ) { pDst[pos.x + pos.y * nRowPixels / 4] = clr; return; } // save the original luma float lumaOrig = LUMA( clr ); float lumaBlur = 0.f; float fMipDiv = 1.f / ( 1 << nMip ); float fSS = ( nSensitivity * 128.f ) / 65535.f; float fCutoff = fSS * 0.5f; float fInvCutoff = 1.f / fCutoff; // convert each color to luminance and apply the following kernel: // 1 2 4 2 1 // 2 4 8 4 2 // 4 8 16 8 4 // 2 4 8 4 2 // 1 2 4 2 1 lumaBlur += lumaC( pSrc, nRowPixels, pos + (int2)( -2, -2 ) ) + 2.f * lumaC( pSrc, nRowPixels, pos + (int2)( -1, -2 ) ) + 4.f * lumaC( pSrc, nRowPixels, pos + (int2)( 0, -2 ) ) + 2.f * lumaC( pSrc, nRowPixels, pos + (int2)( 1, -2 ) ) + lumaC( pSrc, nRowPixels, pos + (int2)( 2, -2 ) ); lumaBlur += 2.f * lumaC( pSrc, nRowPixels, pos + (int2)( -2, -1 ) ) + 4.f * lumaC( pSrc, nRowPixels, pos + (int2)( -1, -1 ) ) + 8.f * lumaC( pSrc, nRowPixels, pos + (int2)( 0, -1 ) ) + 4.f * lumaC( pSrc, nRowPixels, pos + (int2)( 1, -1 ) ) + 2.f * lumaC( pSrc, nRowPixels, pos + (int2)( 2, -1 ) ); lumaBlur += 4.f * lumaC( pSrc, nRowPixels, pos + (int2)( -2, 0 ) ) + 8.f * lumaC( pSrc, nRowPixels, pos + (int2)( -1, 0 ) ) + 16.f * lumaOrig + 8.f * lumaC( pSrc, nRowPixels, pos + (int2)( 1, 0 ) ) + 4.f * lumaC( pSrc, nRowPixels, pos + (int2)( 2, 0 ) ); lumaBlur += 2.f * lumaC( pSrc, nRowPixels, pos + (int2)( -2, 1 ) ) + 4.f * lumaC( pSrc, nRowPixels, pos + (int2)( -1, 1 ) ) + 8.f * lumaC( pSrc, nRowPixels, pos + (int2)( 0, 1 ) ) + 4.f * lumaC( pSrc, nRowPixels, pos + (int2)( 1, 1 ) ) + 2.f * lumaC( pSrc, nRowPixels, pos + (int2)( 2, 1 ) ); lumaBlur += lumaC( pSrc, nRowPixels, pos + (int2)( -2, 2 ) ) + 2.f * lumaC( pSrc, nRowPixels, pos + (int2)( -1, 2 ) ) + 4.f * lumaC( pSrc, nRowPixels, pos + (int2)( 0, 2 ) ) + 2.f * lumaC( pSrc, nRowPixels, pos + (int2)( 1, 2 ) ) + lumaC( pSrc, nRowPixels, pos + (int2)( 2, 2 ) ); lumaBlur = lumaBlur * 0.01; // subtract blurr from original luma float fSharp = lumaOrig - lumaBlur; float fAbsDif, fTmp; // apply strength to difference fSharp *= fSharpness; // get the absolute value fAbsDif = fabs( fSharp ); // do cutoff here... // calculate the diff when it's between the cutoff & ss fTmp = ( ( fAbsDif - fCutoff ) * fSharp ) * fInvCutoff; // if adiff < cutoff ... vTmp = 0 else vTmp remains as above fTmp = fAbsDif < fCutoff ? 0.f : fTmp; // if adiff < ss ... vDif = vTmp else vDif remains the same fSharp = fAbsDif < fSS ? fTmp : fSharp; fSharp *= fMipDiv; fSharp += nMip > 0 ? fSharp * 0.5f : 0.f; // we now have the sharpened luma, apply it to each color channel // add the sharpened luminance change to the original color clr.xyz += fSharp; // clamp to 0 (don't want any negative values) clr = max( clr, 0.f ); // clr = min( clr, 1.f ); // store to output image pDst[pos.x + pos.y * nRowPixels / 4] = clr; } //----------------------------------------------------------------------------- __constant sampler_t imageSampler = CLK_NORMALIZED_COORDS_FALSE | CLK_ADDRESS_CLAMP | CLK_FILTER_NEAREST; //----------------------------------------------------------------------------- float luma( __read_only image2d_t img, int2 pos ) { float4 clr = read_imagef( img, imageSampler, pos ); // From the SharpenFilter // quasi luminance (probably a lot faster with little visual difference) // .25 * r + .625 * g + .125 * b float f = LUMA( clr ); return f; } //----------------------------------------------------------------------------- __kernel void rgbSharpen_Image2D( __write_only image2d_t dstImg, __read_only image2d_t srcImg, int nMip, float fSharpness, int nSensitivity ) { int2 pos = (int2)( get_global_id(0), get_global_id(1) ); // save the original color float4 clr = read_imagef( srcImg, imageSampler, pos ); // pixels in the pad get coppied through if ( pos.x < 2 || pos.y < 2 || pos.x >= (int)get_global_size(0) - 2 || pos.y >= (int)get_global_size(1) - 2 ) { write_imagef( dstImg, pos, clr ); return; } // save the original luma float lumaOrig = LUMA( clr ); float lumaBlur = 0.f; float fMipDiv = 1.f / ( 1 << nMip ); float fSS = ( nSensitivity * 128.f ) / 65535.f; float fCutoff = fSS * 0.5f; float fInvCutoff = 1.f / fCutoff; // convert each color to luminance and apply the following kernel: // 1 2 4 2 1 // 2 4 8 4 2 // 4 8 16 8 4 // 2 4 8 4 2 // 1 2 4 2 1 lumaBlur += luma( srcImg, pos + (int2)( -2, -2 ) ) + 2.f * luma( srcImg, pos + (int2)( -1, -2 ) ) + 4.f * luma( srcImg, pos + (int2)( 0, -2 ) ) + 2.f * luma( srcImg, pos + (int2)( 1, -2 ) ) + luma( srcImg, pos + (int2)( 2, -2 ) ); lumaBlur += 2.f * luma( srcImg, pos + (int2)( -2, -1 ) ) + 4.f * luma( srcImg, pos + (int2)( -1, -1 ) ) + 8.f * luma( srcImg, pos + (int2)( 0, -1 ) ) + 4.f * luma( srcImg, pos + (int2)( 1, -1 ) ) + 2.f * luma( srcImg, pos + (int2)( 2, -1 ) ); lumaBlur += 4.f * luma( srcImg, pos + (int2)( -2, 0 ) ) + 8.f * luma( srcImg, pos + (int2)( -1, 0 ) ) + 16.f * lumaOrig + 8.f * luma( srcImg, pos + (int2)( 1, 0 ) ) + 4.f * luma( srcImg, pos + (int2)( 2, 0 ) ); lumaBlur += 2.f * luma( srcImg, pos + (int2)( -2, 1 ) ) + 4.f * luma( srcImg, pos + (int2)( -1, 1 ) ) + 8.f * luma( srcImg, pos + (int2)( 0, 1 ) ) + 4.f * luma( srcImg, pos + (int2)( 1, 1 ) ) + 2.f * luma( srcImg, pos + (int2)( 2, 1 ) ); lumaBlur += luma( srcImg, pos + (int2)( -2, 2 ) ) + 2.f * luma( srcImg, pos + (int2)( -1, 2 ) ) + 4.f * luma( srcImg, pos + (int2)( 0, 2 ) ) + 2.f * luma( srcImg, pos + (int2)( 1, 2 ) ) + luma( srcImg, pos + (int2)( 2, 2 ) ); lumaBlur = lumaBlur * 0.01; // subtract blurr from original luma float fSharp = lumaOrig - lumaBlur; float fAbsDif, fTmp; // apply strength to difference fSharp *= fSharpness; // get the absolute value fAbsDif = fabs( fSharp ); // do cutoff here... // calculate the diff when it's between the cutoff & ss fTmp = ( ( fAbsDif - fCutoff ) * fSharp ) * fInvCutoff; // if adiff < cutoff ... vTmp = 0 else vTmp remains as above fTmp = fAbsDif < fCutoff ? 0.f : fTmp; // if adiff < ss ... vDif = vTmp else vDif remains the same fSharp = fAbsDif < fSS ? fTmp : fSharp; fSharp *= fMipDiv; fSharp += nMip > 0 ? fSharp * 0.5f : 0.f; // we now have the sharpened luma, apply it to each color channel // add the sharpened luminance change to the original color clr.xyz += fSharp; // clamp to 0 (don't want any negative values) clr = max( clr, 0.f ); // clr = min( clr, 1.f ); // store to output image write_imagef( dstImg, pos, clr ); } //----------------------------------------------------------------------------- .decl_function rgbSharpen_Chunky ## 697 registers ## .decl.dword %0 local_id_0 .decl.dword %1 local_id_1 .decl.dword %2 local_id_2 .decl.dword %3 group_id_0 .decl.dword %4 group_id_1 .decl.dword %5 group_id_2 .decl.dword %6 num_groups_0 .decl.dword %7 num_groups_1 .decl.dword %8 num_groups_2 .decl.dword %9 local_size_0 .decl.dword %10 local_size_1 .decl.dword %11 local_size_2 .decl.dword %12 enqueued_local_size_0 .decl.dword %13 enqueued_local_size_1 .decl.dword %14 enqueued_local_size_2 .decl.dword %15 global_size_0 .decl.dword %16 global_size_1 .decl.dword %17 global_size_2 .decl.dword %18 global_offset_0 .decl.dword %19 global_offset_1 .decl.dword %20 global_offset_2 .decl.dword %21 stack_pointer .decl.qword %22 stack_buffer .decl.word %23 block_ip .decl.dword %24 barrier_id .decl.dword %25 thread_number .decl.dword %26 work_dimension .decl.dword %27 zero .decl.dword %28 one .decl.word %29 retVal .decl.dword %30 dwblockip .decl.qword %31 profiling_buffer_pointer .decl.dword %32 profiling_timestamps0 .decl.dword %33 profiling_timestamps1 .decl.dword %34 profiling_timestamps2 .decl.dword %35 profiling_timestamps3 .decl.dword %36 profiling_timestamps4 .decl.dword %37 threadid .decl.qword %38 constant_addrspace_start .decl.qword %39 stack_size .decl.qword %40 enqueue_buffer_pointer .decl.dword %41 .decl.dword %42 .decl.dword %43 .decl.dword %44 .decl.dword %45 .decl.dword %46 .decl.dword %47 .decl.dword %48 .decl.dword %49 .decl.dword %50 .decl.dword %51 .decl.dword %52 .decl.dword %53 .decl.dword %54 .decl.dword %55 .decl.dword %56 .decl.dword %57 .decl.dword %58 .decl.dword %59 .decl.dword %60 .decl.dword %61 .decl.dword %62 .decl.bool %63 .decl.bool %64 .decl.bool %65 .decl.dword %66 .decl.bool %67 .decl.dword %68 .decl.bool %69 .decl.dword %70 .decl.dword %71 .decl.dword %72 .decl.dword %73 .decl.dword %74 .decl.dword %75 .decl.dword %76 .decl.dword %77 .decl.dword %78 .decl.dword %79 .decl.dword %80 .decl.dword %81 .decl.dword %82 .decl.dword %83 .decl.dword %84 .decl.dword %85 .decl.dword %86 .decl.dword %87 .decl.dword %88 .decl.dword %89 .decl.dword %90 .decl.dword %91 .decl.dword %92 .decl.dword %93 .decl.dword %94 .decl.dword %95 .decl.dword %96 .decl.dword %97 .decl.dword %98 .decl.dword %99 .decl.dword %100 .decl.dword %101 .decl.dword %102 .decl.dword %103 .decl.dword %104 .decl.dword %105 .decl.dword %106 .decl.dword %107 .decl.dword %108 .decl.dword %109 .decl.dword %110 .decl.dword %111 .decl.dword %112 .decl.dword %113 .decl.dword %114 .decl.dword %115 .decl.dword %116 .decl.dword %117 .decl.dword %118 .decl.dword %119 .decl.dword %120 .decl.dword %121 .decl.dword %122 .decl.dword %123 .decl.dword %124 .decl.dword %125 .decl.dword %126 .decl.dword %127 .decl.dword %128 .decl.dword %129 .decl.dword %130 .decl.dword %131 .decl.dword %132 .decl.dword %133 .decl.dword %134 .decl.dword %135 .decl.dword %136 .decl.dword %137 .decl.dword %138 .decl.dword %139 .decl.dword %140 .decl.dword %141 .decl.dword %142 .decl.dword %143 .decl.dword %144 .decl.dword %145 .decl.dword %146 .decl.dword %147 .decl.dword %148 .decl.dword %149 .decl.dword %150 .decl.dword %151 .decl.dword %152 .decl.dword %153 .decl.dword %154 .decl.dword %155 .decl.dword %156 .decl.dword %157 .decl.dword %158 .decl.dword %159 .decl.dword %160 .decl.dword %161 .decl.dword %162 .decl.dword %163 .decl.dword %164 .decl.dword %165 .decl.dword %166 .decl.dword %167 .decl.dword %168 .decl.dword %169 .decl.dword %170 .decl.dword %171 .decl.dword %172 .decl.dword %173 .decl.dword %174 .decl.dword %175 .decl.dword %176 .decl.dword %177 .decl.dword %178 .decl.dword %179 .decl.dword %180 .decl.dword %181 .decl.dword %182 .decl.dword %183 .decl.dword %184 .decl.dword %185 .decl.dword %186 .decl.dword %187 .decl.dword %188 .decl.dword %189 .decl.dword %190 .decl.dword %191 .decl.dword %192 .decl.dword %193 .decl.dword %194 .decl.dword %195 .decl.dword %196 .decl.dword %197 .decl.dword %198 .decl.dword %199 .decl.dword %200 .decl.dword %201 .decl.dword %202 .decl.dword %203 .decl.dword %204 .decl.dword %205 .decl.dword %206 .decl.dword %207 .decl.dword %208 .decl.dword %209 .decl.dword %210 .decl.dword %211 .decl.dword %212 .decl.dword %213 .decl.dword %214 .decl.dword %215 .decl.dword %216 .decl.dword %217 .decl.dword %218 .decl.dword %219 .decl.dword %220 .decl.dword %221 .decl.dword %222 .decl.dword %223 .decl.dword %224 .decl.dword %225 .decl.dword %226 .decl.dword %227 .decl.dword %228 .decl.dword %229 .decl.dword %230 .decl.dword %231 .decl.dword %232 .decl.dword %233 .decl.dword %234 .decl.dword %235 .decl.dword %236 .decl.dword %237 .decl.dword %238 .decl.dword %239 .decl.dword %240 .decl.dword %241 .decl.dword %242 .decl.dword %243 .decl.dword %244 .decl.dword %245 .decl.dword %246 .decl.dword %247 .decl.dword %248 .decl.dword %249 .decl.dword %250 .decl.dword %251 .decl.dword %252 .decl.dword %253 .decl.dword %254 .decl.dword %255 .decl.dword %256 .decl.dword %257 .decl.dword %258 .decl.dword %259 .decl.dword %260 .decl.dword %261 .decl.dword %262 .decl.dword %263 .decl.dword %264 .decl.dword %265 .decl.dword %266 .decl.dword %267 .decl.dword %268 .decl.dword %269 .decl.dword %270 .decl.dword %271 .decl.dword %272 .decl.dword %273 .decl.dword %274 .decl.dword %275 .decl.dword %276 .decl.dword %277 .decl.dword %278 .decl.dword %279 .decl.dword %280 .decl.dword %281 .decl.dword %282 .decl.dword %283 .decl.dword %284 .decl.dword %285 .decl.dword %286 .decl.dword %287 .decl.dword %288 .decl.dword %289 .decl.dword %290 .decl.dword %291 .decl.dword %292 .decl.dword %293 .decl.dword %294 .decl.dword %295 .decl.dword %296 .decl.dword %297 .decl.dword %298 .decl.dword %299 .decl.dword %300 .decl.dword %301 .decl.dword %302 .decl.dword %303 .decl.dword %304 .decl.dword %305 .decl.dword %306 .decl.dword %307 .decl.dword %308 .decl.dword %309 .decl.dword %310 .decl.dword %311 .decl.dword %312 .decl.dword %313 .decl.dword %314 .decl.dword %315 .decl.dword %316 .decl.dword %317 .decl.dword %318 .decl.dword %319 .decl.dword %320 .decl.dword %321 .decl.dword %322 .decl.dword %323 .decl.dword %324 .decl.dword %325 .decl.dword %326 .decl.dword %327 .decl.dword %328 .decl.dword %329 .decl.dword %330 .decl.dword %331 .decl.dword %332 .decl.dword %333 .decl.dword %334 .decl.dword %335 .decl.dword %336 .decl.dword %337 .decl.dword %338 .decl.dword %339 .decl.dword %340 .decl.dword %341 .decl.dword %342 .decl.dword %343 .decl.dword %344 .decl.dword %345 .decl.dword %346 .decl.dword %347 .decl.dword %348 .decl.dword %349 .decl.dword %350 .decl.dword %351 .decl.dword %352 .decl.dword %353 .decl.dword %354 .decl.dword %355 .decl.dword %356 .decl.dword %357 .decl.dword %358 .decl.dword %359 .decl.dword %360 .decl.dword %361 .decl.dword %362 .decl.dword %363 .decl.dword %364 .decl.dword %365 .decl.dword %366 .decl.dword %367 .decl.dword %368 .decl.dword %369 .decl.dword %370 .decl.dword %371 .decl.dword %372 .decl.dword %373 .decl.dword %374 .decl.dword %375 .decl.dword %376 .decl.dword %377 .decl.dword %378 .decl.dword %379 .decl.dword %380 .decl.dword %381 .decl.dword %382 .decl.dword %383 .decl.dword %384 .decl.dword %385 .decl.dword %386 .decl.dword %387 .decl.dword %388 .decl.dword %389 .decl.dword %390 .decl.dword %391 .decl.dword %392 .decl.dword %393 .decl.dword %394 .decl.dword %395 .decl.dword %396 .decl.dword %397 .decl.dword %398 .decl.dword %399 .decl.dword %400 .decl.dword %401 .decl.dword %402 .decl.dword %403 .decl.dword %404 .decl.dword %405 .decl.dword %406 .decl.dword %407 .decl.dword %408 .decl.dword %409 .decl.dword %410 .decl.dword %411 .decl.dword %412 .decl.dword %413 .decl.dword %414 .decl.dword %415 .decl.dword %416 .decl.dword %417 .decl.dword %418 .decl.dword %419 .decl.dword %420 .decl.dword %421 .decl.dword %422 .decl.dword %423 .decl.dword %424 .decl.dword %425 .decl.dword %426 .decl.dword %427 .decl.dword %428 .decl.dword %429 .decl.qword %430 .decl.qword %431 .decl.dword %432 .decl.dword %433 .decl.dword %434 .decl.dword %435 .decl.dword %436 .decl.dword %437 .decl.dword %438 .decl.bool %439 .decl.dword %440 .decl.bool %441 .decl.dword %442 .decl.dword %443 .decl.bool %444 .decl.dword %445 .decl.dword %446 .decl.dword %447 .decl.dword %448 .decl.dword %449 .decl.dword %450 .decl.dword %451 .decl.dword %452 .decl.dword %453 .decl.dword %454 .decl.dword %455 .decl.dword %456 .decl.dword %457 .decl.dword %458 .decl.dword %459 .decl.dword %460 .decl.dword %461 .decl.dword %462 .decl.dword %463 .decl.dword %464 .decl.dword %465 .decl.dword %466 .decl.dword %467 .decl.dword %468 .decl.dword %469 .decl.dword %470 .decl.dword %471 .decl.dword %472 .decl.dword %473 .decl.dword %474 .decl.dword %475 .decl.dword %476 .decl.dword %477 .decl.dword %478 .decl.dword %479 .decl.dword %480 .decl.dword %481 .decl.dword %482 .decl.dword %483 .decl.dword %484 .decl.dword %485 .decl.dword %486 .decl.dword %487 .decl.dword %488 .decl.dword %489 .decl.dword %490 .decl.dword %491 .decl.dword %492 .decl.dword %493 .decl.dword %494 .decl.dword %495 .decl.dword %496 .decl.dword %497 .decl.dword %498 .decl.dword %499 .decl.dword %500 .decl.dword %501 .decl.dword %502 .decl.dword %503 .decl.dword %504 .decl.dword %505 .decl.dword %506 .decl.dword %507 .decl.dword %508 .decl.dword %509 .decl.dword %510 .decl.dword %511 .decl.dword %512 .decl.dword %513 .decl.dword %514 .decl.dword %515 .decl.dword %516 .decl.dword %517 .decl.dword %518 .decl.dword %519 .decl.dword %520 .decl.dword %521 .decl.dword %522 .decl.dword %523 .decl.dword %524 .decl.dword %525 .decl.dword %526 .decl.dword %527 .decl.dword %528 .decl.dword %529 .decl.dword %530 .decl.dword %531 .decl.dword %532 .decl.dword %533 .decl.dword %534 .decl.dword %535 .decl.dword %536 .decl.dword %537 .decl.dword %538 .decl.dword %539 .decl.dword %540 .decl.dword %541 .decl.dword %542 .decl.dword %543 .decl.dword %544 .decl.dword %545 .decl.dword %546 .decl.dword %547 .decl.dword %548 .decl.dword %549 .decl.dword %550 .decl.dword %551 .decl.dword %552 .decl.dword %553 .decl.dword %554 .decl.dword %555 .decl.dword %556 .decl.dword %557 .decl.dword %558 .decl.dword %559 .decl.dword %560 .decl.dword %561 .decl.dword %562 .decl.dword %563 .decl.dword %564 .decl.dword %565 .decl.dword %566 .decl.dword %567 .decl.dword %568 .decl.dword %569 .decl.dword %570 .decl.dword %571 .decl.dword %572 .decl.dword %573 .decl.dword %574 .decl.dword %575 .decl.dword %576 .decl.dword %577 .decl.dword %578 .decl.dword %579 .decl.dword %580 .decl.dword %581 .decl.dword %582 .decl.dword %583 .decl.dword %584 .decl.dword %585 .decl.dword %586 .decl.dword %587 .decl.dword %588 .decl.dword %589 .decl.dword %590 .decl.dword %591 .decl.dword %592 .decl.dword %593 .decl.dword %594 .decl.dword %595 .decl.dword %596 .decl.dword %597 .decl.dword %598 .decl.dword %599 .decl.dword %600 .decl.dword %601 .decl.dword %602 .decl.dword %603 .decl.dword %604 .decl.dword %605 .decl.dword %606 .decl.dword %607 .decl.dword %608 .decl.dword %609 .decl.dword %610 .decl.dword %611 .decl.dword %612 .decl.dword %613 .decl.dword %614 .decl.dword %615 .decl.dword %616 .decl.dword %617 .decl.dword %618 .decl.dword %619 .decl.dword %620 .decl.dword %621 .decl.dword %622 .decl.dword %623 .decl.dword %624 .decl.dword %625 .decl.dword %626 .decl.dword %627 .decl.dword %628 .decl.dword %629 .decl.dword %630 .decl.dword %631 .decl.dword %632 .decl.dword %633 .decl.dword %634 .decl.dword %635 .decl.dword %636 .decl.dword %637 .decl.dword %638 .decl.dword %639 .decl.dword %640 .decl.dword %641 .decl.dword %642 .decl.dword %643 .decl.dword %644 .decl.dword %645 .decl.dword %646 .decl.dword %647 .decl.dword %648 .decl.dword %649 .decl.dword %650 .decl.dword %651 .decl.dword %652 .decl.dword %653 .decl.dword %654 .decl.dword %655 .decl.dword %656 .decl.dword %657 .decl.dword %658 .decl.dword %659 .decl.dword %660 .decl.dword %661 .decl.dword %662 .decl.dword %663 .decl.dword %664 .decl.dword %665 .decl.dword %666 .decl.dword %667 .decl.dword %668 .decl.dword %669 .decl.dword %670 .decl.dword %671 .decl.dword %672 .decl.dword %673 .decl.dword %674 .decl.dword %675 .decl.dword %676 .decl.dword %677 .decl.qword %678 .decl.bool %679 .decl.dword %680 .decl.bool %681 .decl.dword %682 .decl.dword %683 .decl.dword %684 .decl.dword %685 .decl.bool %686 .decl.dword %687 .decl.bool %688 .decl.dword %689 .decl.bool %690 .decl.dword %691 .decl.bool %692 .decl.dword %693 .decl.dword %694 .decl.dword %695 .decl.dword %696 ## 7 input registers ## decl_input.global %41 pDst decl_input.global %42 pSrc decl_input.value %43 nRowPixels decl_input.value %44 nPlanePixels decl_input.value %45 nMip decl_input.value %46 fSharpness decl_input.value %47 nSensitivity ## 0 output register ## ## 0 pushed register ## 7 blocks ## LABEL $0 MUL.int32 %48 %3 %12 ADD.int32 %49 %48 %0 ADD.int32 %50 %49 %18 MUL.int32 %51 %4 %13 ADD.int32 %52 %51 %1 ADD.int32 %53 %52 %19 MUL.int32 %54 %53 %43 LOADI.uint32 %459 2 SHR.uint32 %55 %54 %459 ADD.int32 %56 %55 %50 LOADI.uint32 %460 16 MUL.int32 %57 %460 %56 ADD.int32 %58 %42 %57 SUB.uint32 %461 %58 %42 LOAD.float.global.aligned {%59 %60 %61 %62} %461 bti:3 LT.int32 %63 %50 %459 LT.int32 %64 %53 %459 OR.bool %65 %63 %64 BRA<%65> -> label$4 LABEL $1 LOADI.uint32 %464 4294967294 ADD.int32 %66 %15 %464 GE.int32 %67 %50 %66 BRA<%67> -> label$4 LABEL $2 LOADI.uint32 %465 4294967294 ADD.int32 %68 %16 %465 GE.int32 %69 %53 %68 BRA<%69> -> label$4 LABEL $3 LOADI.float %466 0.625 MUL.float %70 %60 %466 LOADI.float %467 0.25 MAD.float %71 %467 %59 %70 LOADI.float %468 0.125 MAD.float %72 %468 %61 %71 LOADI.uint32 %469 31 AND.int32 %73 %45 %469 LOADI.uint32 %470 1 SHL.int32 %74 %470 %73 CVT.float.int32 %75 %74 LOADI.float %471 1 DIV.float %76 %471 %75 CVT.float.int32 %77 %47 LOADI.float %472 128 MUL.float %78 %77 %472 LOADI.float %473 65535 DIV.float %79 %78 %473 LOADI.float %474 0.5 MUL.float %80 %79 %474 DIV.float %81 %471 %80 LOADI.uint32 %476 4294967294 ADD.int32 %82 %50 %476 ADD.int32 %83 %53 %476 MUL.int32 %84 %83 %43 LOADI.uint32 %478 2 SHR.uint32 %85 %84 %478 ADD.int32 %86 %85 %82 LOADI.uint32 %479 16 MUL.int32 %87 %479 %86 ADD.int32 %88 %42 %87 SUB.uint32 %480 %88 %42 LOAD.float.global.aligned {%89 %90 %91 %92} %480 bti:3 MUL.float %93 %90 %466 MAD.float %94 %467 %89 %93 MAD.float %95 %468 %91 %94 LOADI.uint32 %484 4294967295 ADD.int32 %96 %50 %484 ADD.int32 %97 %53 %476 MUL.int32 %98 %97 %43 SHR.uint32 %99 %98 %478 ADD.int32 %100 %99 %96 MUL.int32 %101 %479 %100 ADD.int32 %102 %42 %101 SUB.uint32 %488 %102 %42 LOAD.float.global.aligned {%103 %104 %105 %106} %488 bti:3 MUL.float %107 %104 %466 MAD.float %108 %467 %103 %107 MAD.float %109 %468 %105 %108 LOADI.float %492 2 MAD.float %110 %492 %109 %95 ADD.int32 %111 %53 %476 MUL.int32 %112 %111 %43 SHR.uint32 %113 %112 %478 ADD.int32 %114 %113 %50 MUL.int32 %115 %479 %114 ADD.int32 %116 %42 %115 SUB.uint32 %496 %116 %42 LOAD.float.global.aligned {%117 %118 %119 %120} %496 bti:3 MUL.float %121 %118 %466 MAD.float %122 %467 %117 %121 MAD.float %123 %468 %119 %122 LOADI.float %500 4 MAD.float %124 %500 %123 %110 ADD.int32 %125 %50 %470 ADD.int32 %126 %53 %476 MUL.int32 %127 %126 %43 SHR.uint32 %128 %127 %478 ADD.int32 %129 %128 %125 MUL.int32 %130 %479 %129 ADD.int32 %131 %42 %130 SUB.uint32 %505 %131 %42 LOAD.float.global.aligned {%132 %133 %134 %135} %505 bti:3 MUL.float %136 %133 %466 MAD.float %137 %467 %132 %136 MAD.float %138 %468 %134 %137 MAD.float %139 %492 %138 %124 ADD.int32 %140 %50 %478 ADD.int32 %141 %53 %476 MUL.int32 %142 %141 %43 SHR.uint32 %143 %142 %478 ADD.int32 %144 %143 %140 MUL.int32 %145 %479 %144 ADD.int32 %146 %42 %145 SUB.uint32 %514 %146 %42 LOAD.float.global.aligned {%147 %148 %149 %150} %514 bti:3 MUL.float %151 %148 %466 MAD.float %152 %467 %147 %151 MAD.float %153 %468 %149 %152 ADD.float %154 %139 %153 LOADI.float %518 0 ADD.float %155 %154 %518 ADD.int32 %156 %50 %476 ADD.int32 %157 %53 %484 MUL.int32 %158 %157 %43 SHR.uint32 %159 %158 %478 ADD.int32 %160 %159 %156 MUL.int32 %161 %479 %160 ADD.int32 %162 %42 %161 SUB.uint32 %523 %162 %42 LOAD.float.global.aligned {%163 %164 %165 %166} %523 bti:3 MUL.float %167 %164 %466 MAD.float %168 %467 %163 %167 MAD.float %169 %468 %165 %168 ADD.int32 %170 %50 %484 ADD.int32 %171 %53 %484 MUL.int32 %172 %171 %43 SHR.uint32 %173 %172 %478 ADD.int32 %174 %173 %170 MUL.int32 %175 %479 %174 ADD.int32 %176 %42 %175 SUB.uint32 %531 %176 %42 LOAD.float.global.aligned {%177 %178 %179 %180} %531 bti:3 MUL.float %181 %178 %466 MAD.float %182 %467 %177 %181 MAD.float %183 %468 %179 %182 MUL.float %184 %183 %500 MAD.float %185 %492 %169 %184 ADD.int32 %186 %53 %484 MUL.int32 %187 %186 %43 SHR.uint32 %188 %187 %478 ADD.int32 %189 %188 %50 MUL.int32 %190 %479 %189 ADD.int32 %191 %42 %190 SUB.uint32 %540 %191 %42 LOAD.float.global.aligned {%192 %193 %194 %195} %540 bti:3 MUL.float %196 %193 %466 MAD.float %197 %467 %192 %196 MAD.float %198 %468 %194 %197 LOADI.float %544 8 MAD.float %199 %544 %198 %185 ADD.int32 %200 %50 %470 ADD.int32 %201 %53 %484 MUL.int32 %202 %201 %43 SHR.uint32 %203 %202 %478 ADD.int32 %204 %203 %200 MUL.int32 %205 %479 %204 ADD.int32 %206 %42 %205 SUB.uint32 %549 %206 %42 LOAD.float.global.aligned {%207 %208 %209 %210} %549 bti:3 MUL.float %211 %208 %466 MAD.float %212 %467 %207 %211 MAD.float %213 %468 %209 %212 MAD.float %214 %500 %213 %199 ADD.int32 %215 %50 %478 ADD.int32 %216 %53 %484 MUL.int32 %217 %216 %43 SHR.uint32 %218 %217 %478 ADD.int32 %219 %218 %215 MUL.int32 %220 %479 %219 ADD.int32 %221 %42 %220 SUB.uint32 %558 %221 %42 LOAD.float.global.aligned {%222 %223 %224 %225} %558 bti:3 MUL.float %226 %223 %466 MAD.float %227 %467 %222 %226 MAD.float %228 %468 %224 %227 MAD.float %229 %492 %228 %214 ADD.float %230 %155 %229 ADD.int32 %231 %50 %476 ADD.int32 %232 %231 %55 MUL.int32 %233 %479 %232 ADD.int32 %234 %42 %233 SUB.uint32 %565 %234 %42 LOAD.float.global.aligned {%235 %236 %237 %238} %565 bti:3 MUL.float %239 %236 %466 MAD.float %240 %467 %235 %239 MAD.float %241 %468 %237 %240 ADD.int32 %242 %50 %484 ADD.int32 %243 %242 %55 MUL.int32 %244 %479 %243 ADD.int32 %245 %42 %244 SUB.uint32 %571 %245 %42 LOAD.float.global.aligned {%246 %247 %248 %249} %571 bti:3 MUL.float %250 %247 %466 MAD.float %251 %467 %246 %250 MAD.float %252 %468 %248 %251 MUL.float %253 %252 %544 MAD.float %254 %500 %241 %253 LOADI.float %577 16 MAD.float %255 %577 %72 %254 ADD.int32 %256 %50 %470 ADD.int32 %257 %256 %55 MUL.int32 %258 %479 %257 ADD.int32 %259 %42 %258 SUB.uint32 %580 %259 %42 LOAD.float.global.aligned {%260 %261 %262 %263} %580 bti:3 MUL.float %264 %261 %466 MAD.float %265 %467 %260 %264 MAD.float %266 %468 %262 %265 MAD.float %267 %544 %266 %255 ADD.int32 %268 %50 %478 ADD.int32 %269 %268 %55 MUL.int32 %270 %479 %269 ADD.int32 %271 %42 %270 SUB.uint32 %587 %271 %42 LOAD.float.global.aligned {%272 %273 %274 %275} %587 bti:3 MUL.float %276 %273 %466 MAD.float %277 %467 %272 %276 MAD.float %278 %468 %274 %277 MAD.float %279 %500 %278 %267 ADD.float %280 %230 %279 ADD.int32 %281 %50 %476 ADD.int32 %282 %53 %470 MUL.int32 %283 %282 %43 SHR.uint32 %284 %283 %478 ADD.int32 %285 %284 %281 MUL.int32 %286 %479 %285 ADD.int32 %287 %42 %286 SUB.uint32 %596 %287 %42 LOAD.float.global.aligned {%288 %289 %290 %291} %596 bti:3 MUL.float %292 %289 %466 MAD.float %293 %467 %288 %292 MAD.float %294 %468 %290 %293 ADD.int32 %295 %50 %484 ADD.int32 %296 %53 %470 MUL.int32 %297 %296 %43 SHR.uint32 %298 %297 %478 ADD.int32 %299 %298 %295 MUL.int32 %300 %479 %299 ADD.int32 %301 %42 %300 SUB.uint32 %604 %301 %42 LOAD.float.global.aligned {%302 %303 %304 %305} %604 bti:3 MUL.float %306 %303 %466 MAD.float %307 %467 %302 %306 MAD.float %308 %468 %304 %307 MUL.float %309 %308 %500 MAD.float %310 %492 %294 %309 ADD.int32 %311 %53 %470 MUL.int32 %312 %311 %43 SHR.uint32 %313 %312 %478 ADD.int32 %314 %313 %50 MUL.int32 %315 %479 %314 ADD.int32 %316 %42 %315 SUB.uint32 %613 %316 %42 LOAD.float.global.aligned {%317 %318 %319 %320} %613 bti:3 MUL.float %321 %318 %466 MAD.float %322 %467 %317 %321 MAD.float %323 %468 %319 %322 MAD.float %324 %544 %323 %310 ADD.int32 %325 %50 %470 ADD.int32 %326 %53 %470 MUL.int32 %327 %326 %43 SHR.uint32 %328 %327 %478 ADD.int32 %329 %328 %325 MUL.int32 %330 %479 %329 ADD.int32 %331 %42 %330 SUB.uint32 %622 %331 %42 LOAD.float.global.aligned {%332 %333 %334 %335} %622 bti:3 MUL.float %336 %333 %466 MAD.float %337 %467 %332 %336 MAD.float %338 %468 %334 %337 MAD.float %339 %500 %338 %324 ADD.int32 %340 %50 %478 ADD.int32 %341 %53 %470 MUL.int32 %342 %341 %43 SHR.uint32 %343 %342 %478 ADD.int32 %344 %343 %340 MUL.int32 %345 %479 %344 ADD.int32 %346 %42 %345 SUB.uint32 %631 %346 %42 LOAD.float.global.aligned {%347 %348 %349 %350} %631 bti:3 MUL.float %351 %348 %466 MAD.float %352 %467 %347 %351 MAD.float %353 %468 %349 %352 MAD.float %354 %492 %353 %339 ADD.float %355 %280 %354 ADD.int32 %356 %50 %476 ADD.int32 %357 %53 %478 MUL.int32 %358 %357 %43 SHR.uint32 %359 %358 %478 ADD.int32 %360 %359 %356 MUL.int32 %361 %479 %360 ADD.int32 %362 %42 %361 SUB.uint32 %640 %362 %42 LOAD.float.global.aligned {%363 %364 %365 %366} %640 bti:3 MUL.float %367 %364 %466 MAD.float %368 %467 %363 %367 MAD.float %369 %468 %365 %368 ADD.int32 %370 %50 %484 ADD.int32 %371 %53 %478 MUL.int32 %372 %371 %43 SHR.uint32 %373 %372 %478 ADD.int32 %374 %373 %370 MUL.int32 %375 %479 %374 ADD.int32 %376 %42 %375 SUB.uint32 %648 %376 %42 LOAD.float.global.aligned {%377 %378 %379 %380} %648 bti:3 MUL.float %381 %378 %466 MAD.float %382 %467 %377 %381 MAD.float %383 %468 %379 %382 MAD.float %384 %492 %383 %369 ADD.int32 %385 %53 %478 MUL.int32 %386 %385 %43 SHR.uint32 %387 %386 %478 ADD.int32 %388 %387 %50 MUL.int32 %389 %479 %388 ADD.int32 %390 %42 %389 SUB.uint32 %656 %390 %42 LOAD.float.global.aligned {%391 %392 %393 %394} %656 bti:3 MUL.float %395 %392 %466 MAD.float %396 %467 %391 %395 MAD.float %397 %468 %393 %396 MAD.float %398 %500 %397 %384 ADD.int32 %399 %50 %470 ADD.int32 %400 %53 %478 MUL.int32 %401 %400 %43 SHR.uint32 %402 %401 %478 ADD.int32 %403 %402 %399 MUL.int32 %404 %479 %403 ADD.int32 %405 %42 %404 SUB.uint32 %665 %405 %42 LOAD.float.global.aligned {%406 %407 %408 %409} %665 bti:3 MUL.float %410 %407 %466 MAD.float %411 %467 %406 %410 MAD.float %412 %468 %408 %411 MAD.float %413 %492 %412 %398 ADD.int32 %414 %50 %478 ADD.int32 %415 %53 %478 MUL.int32 %416 %415 %43 SHR.uint32 %417 %416 %478 ADD.int32 %418 %417 %414 MUL.int32 %419 %479 %418 ADD.int32 %420 %42 %419 SUB.uint32 %674 %420 %42 LOAD.float.global.aligned {%421 %422 %423 %424} %674 bti:3 MUL.float %425 %422 %466 MAD.float %426 %467 %421 %425 MAD.float %427 %468 %423 %426 ADD.float %428 %413 %427 ADD.float %429 %355 %428 CVT.double.float %430 %429 LOADI.double %678 0.01 MUL.double %431 %430 %678 CVT.float.double %432 %431 SUB.float %433 %72 %432 MUL.float %434 %433 %46 ABS.float %435 %434 SUB.float %436 %435 %80 MUL.float %437 %434 %436 MUL.float %438 %81 %437 LT.float %439 %435 %80 SEL.float %440 %439 %518 %438 LT.float %441 %435 %79 SEL.float %442 %441 %440 %434 MUL.float %443 %76 %442 LOADI.uint32 %682 0 GT.int32 %444 %45 %682 MUL.float %445 %443 %474 SEL.float %446 %444 %445 %518 ADD.float %447 %443 %446 ADD.float %448 %59 %447 ADD.float %449 %60 %447 ADD.float %450 %61 %447 GE.float %686 %448 %518 SEL.float %451 %686 %448 %518 GE.float %688 %449 %518 SEL.float %452 %688 %449 %518 GE.float %690 %450 %518 SEL.float %453 %690 %450 %518 GE.float %692 %62 %518 SEL.float %454 %692 %62 %518 MUL.int32 %455 %479 %56 ADD.int32 %456 %41 %455 SUB.uint32 %694 %456 %41 STORE.float.global.aligned %694 {%451 %452 %453 %454} bti:2 BRA -> label$5 LABEL $4 LOADI.uint32 %695 16 MUL.int32 %457 %695 %56 ADD.int32 %458 %41 %457 SUB.uint32 %696 %458 %41 STORE.float.global.aligned %696 {%59 %60 %61 %62} bti:2 LABEL $5 LABEL $6 RET .end_function .decl_function rgbSharpen_Image2D ## 541 registers ## .decl.dword %0 local_id_0 .decl.dword %1 local_id_1 .decl.dword %2 local_id_2 .decl.dword %3 group_id_0 .decl.dword %4 group_id_1 .decl.dword %5 group_id_2 .decl.dword %6 num_groups_0 .decl.dword %7 num_groups_1 .decl.dword %8 num_groups_2 .decl.dword %9 local_size_0 .decl.dword %10 local_size_1 .decl.dword %11 local_size_2 .decl.dword %12 enqueued_local_size_0 .decl.dword %13 enqueued_local_size_1 .decl.dword %14 enqueued_local_size_2 .decl.dword %15 global_size_0 .decl.dword %16 global_size_1 .decl.dword %17 global_size_2 .decl.dword %18 global_offset_0 .decl.dword %19 global_offset_1 .decl.dword %20 global_offset_2 .decl.dword %21 stack_pointer .decl.qword %22 stack_buffer .decl.word %23 block_ip .decl.dword %24 barrier_id .decl.dword %25 thread_number .decl.dword %26 work_dimension .decl.dword %27 zero .decl.dword %28 one .decl.word %29 retVal .decl.dword %30 dwblockip .decl.qword %31 profiling_buffer_pointer .decl.dword %32 profiling_timestamps0 .decl.dword %33 profiling_timestamps1 .decl.dword %34 profiling_timestamps2 .decl.dword %35 profiling_timestamps3 .decl.dword %36 profiling_timestamps4 .decl.dword %37 threadid .decl.qword %38 constant_addrspace_start .decl.qword %39 stack_size .decl.qword %40 enqueue_buffer_pointer .decl.dword %41 .decl.dword %42 .decl.dword %43 .decl.dword %44 .decl.dword %45 .decl.dword %46 .decl.dword %47 .decl.dword %48 .decl.dword %49 .decl.dword %50 .decl.dword %51 .decl.dword %52 .decl.dword %53 .decl.dword %54 .decl.dword %55 .decl.dword %56 .decl.dword %57 .decl.bool %58 .decl.bool %59 .decl.bool %60 .decl.dword %61 .decl.bool %62 .decl.dword %63 .decl.bool %64 .decl.dword %65 .decl.dword %66 .decl.dword %67 .decl.dword %68 .decl.dword %69 .decl.dword %70 .decl.dword %71 .decl.dword %72 .decl.dword %73 .decl.dword %74 .decl.dword %75 .decl.dword %76 .decl.dword %77 .decl.dword %78 .decl.dword %79 .decl.dword %80 .decl.dword %81 .decl.dword %82 .decl.dword %83 .decl.dword %84 .decl.dword %85 .decl.dword %86 .decl.dword %87 .decl.dword %88 .decl.dword %89 .decl.dword %90 .decl.dword %91 .decl.dword %92 .decl.dword %93 .decl.dword %94 .decl.dword %95 .decl.dword %96 .decl.dword %97 .decl.dword %98 .decl.dword %99 .decl.dword %100 .decl.dword %101 .decl.dword %102 .decl.dword %103 .decl.dword %104 .decl.dword %105 .decl.dword %106 .decl.dword %107 .decl.dword %108 .decl.dword %109 .decl.dword %110 .decl.dword %111 .decl.dword %112 .decl.dword %113 .decl.dword %114 .decl.dword %115 .decl.dword %116 .decl.dword %117 .decl.dword %118 .decl.dword %119 .decl.dword %120 .decl.dword %121 .decl.dword %122 .decl.dword %123 .decl.dword %124 .decl.dword %125 .decl.dword %126 .decl.dword %127 .decl.dword %128 .decl.dword %129 .decl.dword %130 .decl.dword %131 .decl.dword %132 .decl.dword %133 .decl.dword %134 .decl.dword %135 .decl.dword %136 .decl.dword %137 .decl.dword %138 .decl.dword %139 .decl.dword %140 .decl.dword %141 .decl.dword %142 .decl.dword %143 .decl.dword %144 .decl.dword %145 .decl.dword %146 .decl.dword %147 .decl.dword %148 .decl.dword %149 .decl.dword %150 .decl.dword %151 .decl.dword %152 .decl.dword %153 .decl.dword %154 .decl.dword %155 .decl.dword %156 .decl.dword %157 .decl.dword %158 .decl.dword %159 .decl.dword %160 .decl.dword %161 .decl.dword %162 .decl.dword %163 .decl.dword %164 .decl.dword %165 .decl.dword %166 .decl.dword %167 .decl.dword %168 .decl.dword %169 .decl.dword %170 .decl.dword %171 .decl.dword %172 .decl.dword %173 .decl.dword %174 .decl.dword %175 .decl.dword %176 .decl.dword %177 .decl.dword %178 .decl.dword %179 .decl.dword %180 .decl.dword %181 .decl.dword %182 .decl.dword %183 .decl.dword %184 .decl.dword %185 .decl.dword %186 .decl.dword %187 .decl.dword %188 .decl.dword %189 .decl.dword %190 .decl.dword %191 .decl.dword %192 .decl.dword %193 .decl.dword %194 .decl.dword %195 .decl.dword %196 .decl.dword %197 .decl.dword %198 .decl.dword %199 .decl.dword %200 .decl.dword %201 .decl.dword %202 .decl.dword %203 .decl.dword %204 .decl.dword %205 .decl.dword %206 .decl.dword %207 .decl.dword %208 .decl.dword %209 .decl.dword %210 .decl.dword %211 .decl.dword %212 .decl.dword %213 .decl.dword %214 .decl.dword %215 .decl.dword %216 .decl.dword %217 .decl.dword %218 .decl.dword %219 .decl.dword %220 .decl.dword %221 .decl.dword %222 .decl.dword %223 .decl.dword %224 .decl.dword %225 .decl.dword %226 .decl.dword %227 .decl.dword %228 .decl.dword %229 .decl.dword %230 .decl.dword %231 .decl.dword %232 .decl.dword %233 .decl.dword %234 .decl.dword %235 .decl.dword %236 .decl.dword %237 .decl.dword %238 .decl.dword %239 .decl.dword %240 .decl.dword %241 .decl.dword %242 .decl.dword %243 .decl.dword %244 .decl.dword %245 .decl.dword %246 .decl.dword %247 .decl.dword %248 .decl.dword %249 .decl.dword %250 .decl.dword %251 .decl.dword %252 .decl.dword %253 .decl.dword %254 .decl.dword %255 .decl.dword %256 .decl.dword %257 .decl.dword %258 .decl.dword %259 .decl.dword %260 .decl.dword %261 .decl.dword %262 .decl.dword %263 .decl.dword %264 .decl.dword %265 .decl.dword %266 .decl.dword %267 .decl.dword %268 .decl.dword %269 .decl.dword %270 .decl.dword %271 .decl.dword %272 .decl.dword %273 .decl.dword %274 .decl.dword %275 .decl.dword %276 .decl.dword %277 .decl.dword %278 .decl.dword %279 .decl.dword %280 .decl.dword %281 .decl.dword %282 .decl.dword %283 .decl.dword %284 .decl.dword %285 .decl.dword %286 .decl.dword %287 .decl.dword %288 .decl.dword %289 .decl.dword %290 .decl.dword %291 .decl.dword %292 .decl.dword %293 .decl.dword %294 .decl.dword %295 .decl.dword %296 .decl.dword %297 .decl.dword %298 .decl.dword %299 .decl.dword %300 .decl.dword %301 .decl.dword %302 .decl.dword %303 .decl.dword %304 .decl.dword %305 .decl.dword %306 .decl.dword %307 .decl.dword %308 .decl.dword %309 .decl.dword %310 .decl.dword %311 .decl.dword %312 .decl.dword %313 .decl.dword %314 .decl.dword %315 .decl.dword %316 .decl.dword %317 .decl.dword %318 .decl.dword %319 .decl.dword %320 .decl.dword %321 .decl.dword %322 .decl.dword %323 .decl.dword %324 .decl.dword %325 .decl.dword %326 .decl.dword %327 .decl.dword %328 .decl.dword %329 .decl.dword %330 .decl.dword %331 .decl.dword %332 .decl.dword %333 .decl.dword %334 .decl.dword %335 .decl.dword %336 .decl.dword %337 .decl.dword %338 .decl.dword %339 .decl.dword %340 .decl.dword %341 .decl.dword %342 .decl.dword %343 .decl.dword %344 .decl.dword %345 .decl.dword %346 .decl.dword %347 .decl.dword %348 .decl.dword %349 .decl.dword %350 .decl.dword %351 .decl.dword %352 .decl.qword %353 .decl.qword %354 .decl.dword %355 .decl.dword %356 .decl.dword %357 .decl.dword %358 .decl.dword %359 .decl.dword %360 .decl.dword %361 .decl.bool %362 .decl.dword %363 .decl.bool %364 .decl.dword %365 .decl.dword %366 .decl.bool %367 .decl.dword %368 .decl.dword %369 .decl.dword %370 .decl.dword %371 .decl.dword %372 .decl.dword %373 .decl.dword %374 .decl.dword %375 .decl.dword %376 .decl.dword %377 .decl.dword %378 .decl.dword %379 .decl.dword %380 .decl.dword %381 .decl.dword %382 .decl.dword %383 .decl.dword %384 .decl.dword %385 .decl.dword %386 .decl.dword %387 .decl.dword %388 .decl.dword %389 .decl.dword %390 .decl.dword %391 .decl.dword %392 .decl.dword %393 .decl.dword %394 .decl.dword %395 .decl.dword %396 .decl.dword %397 .decl.dword %398 .decl.dword %399 .decl.dword %400 .decl.dword %401 .decl.dword %402 .decl.dword %403 .decl.dword %404 .decl.dword %405 .decl.dword %406 .decl.dword %407 .decl.dword %408 .decl.dword %409 .decl.dword %410 .decl.dword %411 .decl.dword %412 .decl.dword %413 .decl.dword %414 .decl.dword %415 .decl.dword %416 .decl.dword %417 .decl.dword %418 .decl.dword %419 .decl.dword %420 .decl.dword %421 .decl.dword %422 .decl.dword %423 .decl.dword %424 .decl.dword %425 .decl.dword %426 .decl.dword %427 .decl.dword %428 .decl.dword %429 .decl.dword %430 .decl.dword %431 .decl.dword %432 .decl.dword %433 .decl.dword %434 .decl.dword %435 .decl.dword %436 .decl.dword %437 .decl.dword %438 .decl.dword %439 .decl.dword %440 .decl.dword %441 .decl.dword %442 .decl.dword %443 .decl.dword %444 .decl.dword %445 .decl.dword %446 .decl.dword %447 .decl.dword %448 .decl.dword %449 .decl.dword %450 .decl.dword %451 .decl.dword %452 .decl.dword %453 .decl.dword %454 .decl.dword %455 .decl.dword %456 .decl.dword %457 .decl.dword %458 .decl.dword %459 .decl.dword %460 .decl.dword %461 .decl.dword %462 .decl.dword %463 .decl.dword %464 .decl.dword %465 .decl.dword %466 .decl.dword %467 .decl.dword %468 .decl.dword %469 .decl.dword %470 .decl.dword %471 .decl.dword %472 .decl.dword %473 .decl.dword %474 .decl.dword %475 .decl.dword %476 .decl.dword %477 .decl.dword %478 .decl.dword %479 .decl.dword %480 .decl.dword %481 .decl.dword %482 .decl.dword %483 .decl.dword %484 .decl.dword %485 .decl.dword %486 .decl.dword %487 .decl.dword %488 .decl.dword %489 .decl.dword %490 .decl.dword %491 .decl.dword %492 .decl.dword %493 .decl.dword %494 .decl.dword %495 .decl.dword %496 .decl.dword %497 .decl.dword %498 .decl.dword %499 .decl.dword %500 .decl.dword %501 .decl.dword %502 .decl.dword %503 .decl.dword %504 .decl.dword %505 .decl.dword %506 .decl.dword %507 .decl.dword %508 .decl.dword %509 .decl.dword %510 .decl.dword %511 .decl.dword %512 .decl.dword %513 .decl.dword %514 .decl.dword %515 .decl.dword %516 .decl.dword %517 .decl.dword %518 .decl.dword %519 .decl.dword %520 .decl.dword %521 .decl.dword %522 .decl.dword %523 .decl.dword %524 .decl.dword %525 .decl.qword %526 .decl.bool %527 .decl.dword %528 .decl.bool %529 .decl.dword %530 .decl.dword %531 .decl.dword %532 .decl.dword %533 .decl.bool %534 .decl.dword %535 .decl.bool %536 .decl.dword %537 .decl.bool %538 .decl.dword %539 .decl.bool %540 ## 5 input registers ## decl_input.image %41 dstImg decl_input.image %42 srcImg decl_input.value %43 nMip decl_input.value %44 fSharpness decl_input.value %45 nSensitivity ## 0 output register ## ## 0 pushed register ## 7 blocks ## LABEL $0 MUL.int32 %46 %3 %12 ADD.int32 %47 %46 %0 ADD.int32 %48 %47 %18 MUL.int32 %49 %4 %13 ADD.int32 %50 %49 %1 ADD.int32 %51 %50 %19 CVT.float.int32 %52 %48 CVT.float.int32 %53 %51 SAMPLE.float.float surface id 3 coord u %52 coord v %53 %54 %55 %56 %57 sampler idx 0 LOADI.uint32 %378 2 LT.int32 %58 %48 %378 LT.int32 %59 %51 %378 OR.bool %60 %58 %59 BRA<%60> -> label$4 LABEL $1 LOADI.uint32 %380 4294967294 ADD.int32 %61 %15 %380 GE.int32 %62 %48 %61 BRA<%62> -> label$4 LABEL $2 LOADI.uint32 %381 4294967294 ADD.int32 %63 %16 %381 GE.int32 %64 %51 %63 BRA<%64> -> label$4 LABEL $3 LOADI.float %382 0.625 MUL.float %65 %55 %382 LOADI.float %383 0.25 MAD.float %66 %383 %54 %65 LOADI.float %384 0.125 MAD.float %67 %384 %56 %66 LOADI.uint32 %385 31 AND.int32 %68 %43 %385 LOADI.uint32 %386 1 SHL.int32 %69 %386 %68 CVT.float.int32 %70 %69 LOADI.float %387 1 DIV.float %71 %387 %70 CVT.float.int32 %72 %45 LOADI.float %388 128 MUL.float %73 %72 %388 LOADI.float %389 65535 DIV.float %74 %73 %389 LOADI.float %390 0.5 MUL.float %75 %74 %390 DIV.float %76 %387 %75 LOADI.uint32 %392 4294967294 ADD.int32 %77 %48 %392 ADD.int32 %78 %51 %392 CVT.float.int32 %79 %77 CVT.float.int32 %80 %78 SAMPLE.float.float surface id 3 coord u %79 coord v %80 %81 %82 %83 %84 sampler idx 0 MUL.float %85 %82 %382 MAD.float %86 %383 %81 %85 MAD.float %87 %384 %83 %86 LOADI.uint32 %397 4294967295 ADD.int32 %88 %48 %397 ADD.int32 %89 %51 %392 CVT.float.int32 %90 %88 CVT.float.int32 %91 %89 SAMPLE.float.float surface id 3 coord u %90 coord v %91 %92 %93 %94 %95 sampler idx 0 MUL.float %96 %93 %382 MAD.float %97 %383 %92 %96 MAD.float %98 %384 %94 %97 LOADI.float %402 2 MAD.float %99 %402 %98 %87 ADD.int32 %100 %51 %392 CVT.float.int32 %101 %100 SAMPLE.float.float surface id 3 coord u %52 coord v %101 %102 %103 %104 %105 sampler idx 0 MUL.float %106 %103 %382 MAD.float %107 %383 %102 %106 MAD.float %108 %384 %104 %107 LOADI.float %407 4 MAD.float %109 %407 %108 %99 ADD.int32 %110 %48 %386 ADD.int32 %111 %51 %392 CVT.float.int32 %112 %110 CVT.float.int32 %113 %111 SAMPLE.float.float surface id 3 coord u %112 coord v %113 %114 %115 %116 %117 sampler idx 0 MUL.float %118 %115 %382 MAD.float %119 %383 %114 %118 MAD.float %120 %384 %116 %119 MAD.float %121 %402 %120 %109 LOADI.uint32 %414 2 ADD.int32 %122 %48 %414 ADD.int32 %123 %51 %392 CVT.float.int32 %124 %122 CVT.float.int32 %125 %123 SAMPLE.float.float surface id 3 coord u %124 coord v %125 %126 %127 %128 %129 sampler idx 0 MUL.float %130 %127 %382 MAD.float %131 %383 %126 %130 MAD.float %132 %384 %128 %131 ADD.float %133 %121 %132 LOADI.float %419 0 ADD.float %134 %133 %419 ADD.int32 %135 %48 %392 ADD.int32 %136 %51 %397 CVT.float.int32 %137 %135 CVT.float.int32 %138 %136 SAMPLE.float.float surface id 3 coord u %137 coord v %138 %139 %140 %141 %142 sampler idx 0 MUL.float %143 %140 %382 MAD.float %144 %383 %139 %143 MAD.float %145 %384 %141 %144 ADD.int32 %146 %48 %397 ADD.int32 %147 %51 %397 CVT.float.int32 %148 %146 CVT.float.int32 %149 %147 SAMPLE.float.float surface id 3 coord u %148 coord v %149 %150 %151 %152 %153 sampler idx 0 MUL.float %154 %151 %382 MAD.float %155 %383 %150 %154 MAD.float %156 %384 %152 %155 MUL.float %157 %156 %407 MAD.float %158 %402 %145 %157 ADD.int32 %159 %51 %397 CVT.float.int32 %160 %159 SAMPLE.float.float surface id 3 coord u %52 coord v %160 %161 %162 %163 %164 sampler idx 0 MUL.float %165 %162 %382 MAD.float %166 %383 %161 %165 MAD.float %167 %384 %163 %166 LOADI.float %436 8 MAD.float %168 %436 %167 %158 ADD.int32 %169 %48 %386 ADD.int32 %170 %51 %397 CVT.float.int32 %171 %169 CVT.float.int32 %172 %170 SAMPLE.float.float surface id 3 coord u %171 coord v %172 %173 %174 %175 %176 sampler idx 0 MUL.float %177 %174 %382 MAD.float %178 %383 %173 %177 MAD.float %179 %384 %175 %178 MAD.float %180 %407 %179 %168 ADD.int32 %181 %48 %414 ADD.int32 %182 %51 %397 CVT.float.int32 %183 %181 CVT.float.int32 %184 %182 SAMPLE.float.float surface id 3 coord u %183 coord v %184 %185 %186 %187 %188 sampler idx 0 MUL.float %189 %186 %382 MAD.float %190 %383 %185 %189 MAD.float %191 %384 %187 %190 MAD.float %192 %402 %191 %180 ADD.float %193 %134 %192 ADD.int32 %194 %48 %392 CVT.float.int32 %195 %194 SAMPLE.float.float surface id 3 coord u %195 coord v %53 %196 %197 %198 %199 sampler idx 0 MUL.float %200 %197 %382 MAD.float %201 %383 %196 %200 MAD.float %202 %384 %198 %201 ADD.int32 %203 %48 %397 CVT.float.int32 %204 %203 SAMPLE.float.float surface id 3 coord u %204 coord v %53 %205 %206 %207 %208 sampler idx 0 MUL.float %209 %206 %382 MAD.float %210 %383 %205 %209 MAD.float %211 %384 %207 %210 MUL.float %212 %211 %436 MAD.float %213 %407 %202 %212 LOADI.float %459 16 MAD.float %214 %459 %67 %213 ADD.int32 %215 %48 %386 CVT.float.int32 %216 %215 SAMPLE.float.float surface id 3 coord u %216 coord v %53 %217 %218 %219 %220 sampler idx 0 MUL.float %221 %218 %382 MAD.float %222 %383 %217 %221 MAD.float %223 %384 %219 %222 MAD.float %224 %436 %223 %214 ADD.int32 %225 %48 %414 CVT.float.int32 %226 %225 SAMPLE.float.float surface id 3 coord u %226 coord v %53 %227 %228 %229 %230 sampler idx 0 MUL.float %231 %228 %382 MAD.float %232 %383 %227 %231 MAD.float %233 %384 %229 %232 MAD.float %234 %407 %233 %224 ADD.float %235 %193 %234 ADD.int32 %236 %48 %392 ADD.int32 %237 %51 %386 CVT.float.int32 %238 %236 CVT.float.int32 %239 %237 SAMPLE.float.float surface id 3 coord u %238 coord v %239 %240 %241 %242 %243 sampler idx 0 MUL.float %244 %241 %382 MAD.float %245 %383 %240 %244 MAD.float %246 %384 %242 %245 ADD.int32 %247 %48 %397 ADD.int32 %248 %51 %386 CVT.float.int32 %249 %247 CVT.float.int32 %250 %248 SAMPLE.float.float surface id 3 coord u %249 coord v %250 %251 %252 %253 %254 sampler idx 0 MUL.float %255 %252 %382 MAD.float %256 %383 %251 %255 MAD.float %257 %384 %253 %256 MUL.float %258 %257 %407 MAD.float %259 %402 %246 %258 ADD.int32 %260 %51 %386 CVT.float.int32 %261 %260 SAMPLE.float.float surface id 3 coord u %52 coord v %261 %262 %263 %264 %265 sampler idx 0 MUL.float %266 %263 %382 MAD.float %267 %383 %262 %266 MAD.float %268 %384 %264 %267 MAD.float %269 %436 %268 %259 ADD.int32 %270 %48 %386 ADD.int32 %271 %51 %386 CVT.float.int32 %272 %270 CVT.float.int32 %273 %271 SAMPLE.float.float surface id 3 coord u %272 coord v %273 %274 %275 %276 %277 sampler idx 0 MUL.float %278 %275 %382 MAD.float %279 %383 %274 %278 MAD.float %280 %384 %276 %279 MAD.float %281 %407 %280 %269 ADD.int32 %282 %48 %414 ADD.int32 %283 %51 %386 CVT.float.int32 %284 %282 CVT.float.int32 %285 %283 SAMPLE.float.float surface id 3 coord u %284 coord v %285 %286 %287 %288 %289 sampler idx 0 MUL.float %290 %287 %382 MAD.float %291 %383 %286 %290 MAD.float %292 %384 %288 %291 MAD.float %293 %402 %292 %281 ADD.float %294 %235 %293 ADD.int32 %295 %48 %392 ADD.int32 %296 %51 %414 CVT.float.int32 %297 %295 CVT.float.int32 %298 %296 SAMPLE.float.float surface id 3 coord u %297 coord v %298 %299 %300 %301 %302 sampler idx 0 MUL.float %303 %300 %382 MAD.float %304 %383 %299 %303 MAD.float %305 %384 %301 %304 ADD.int32 %306 %48 %397 ADD.int32 %307 %51 %414 CVT.float.int32 %308 %306 CVT.float.int32 %309 %307 SAMPLE.float.float surface id 3 coord u %308 coord v %309 %310 %311 %312 %313 sampler idx 0 MUL.float %314 %311 %382 MAD.float %315 %383 %310 %314 MAD.float %316 %384 %312 %315 MAD.float %317 %402 %316 %305 ADD.int32 %318 %51 %414 CVT.float.int32 %319 %318 SAMPLE.float.float surface id 3 coord u %52 coord v %319 %320 %321 %322 %323 sampler idx 0 MUL.float %324 %321 %382 MAD.float %325 %383 %320 %324 MAD.float %326 %384 %322 %325 MAD.float %327 %407 %326 %317 ADD.int32 %328 %48 %386 ADD.int32 %329 %51 %414 CVT.float.int32 %330 %328 CVT.float.int32 %331 %329 SAMPLE.float.float surface id 3 coord u %330 coord v %331 %332 %333 %334 %335 sampler idx 0 MUL.float %336 %333 %382 MAD.float %337 %383 %332 %336 MAD.float %338 %384 %334 %337 MAD.float %339 %402 %338 %327 ADD.int32 %340 %48 %414 ADD.int32 %341 %51 %414 CVT.float.int32 %342 %340 CVT.float.int32 %343 %341 SAMPLE.float.float surface id 3 coord u %342 coord v %343 %344 %345 %346 %347 sampler idx 0 MUL.float %348 %345 %382 MAD.float %349 %383 %344 %348 MAD.float %350 %384 %346 %349 ADD.float %351 %339 %350 ADD.float %352 %294 %351 CVT.double.float %353 %352 LOADI.double %526 0.01 MUL.double %354 %353 %526 CVT.float.double %355 %354 SUB.float %356 %67 %355 MUL.float %357 %356 %44 ABS.float %358 %357 SUB.float %359 %358 %75 MUL.float %360 %357 %359 MUL.float %361 %76 %360 LT.float %362 %358 %75 SEL.float %363 %362 %419 %361 LT.float %364 %358 %74 SEL.float %365 %364 %363 %357 MUL.float %366 %71 %365 LOADI.uint32 %530 0 GT.int32 %367 %43 %530 MUL.float %368 %366 %390 SEL.float %369 %367 %368 %419 ADD.float %370 %366 %369 ADD.float %371 %54 %370 ADD.float %372 %55 %370 ADD.float %373 %56 %370 GE.float %534 %371 %419 SEL.float %374 %534 %371 %419 GE.float %536 %372 %419 SEL.float %375 %536 %372 %419 GE.float %538 %373 %419 SEL.float %376 %538 %373 %419 GE.float %540 %57 %419 SEL.float %377 %540 %57 %419 TYPED_WRITE.float surface id 2 coord u %48 coord v %51 %374 %375 %376 %377 BRA -> label$5 LABEL $4 TYPED_WRITE.float surface id 2 coord u %48 coord v %51 %54 %55 %56 %57 LABEL $5 LABEL $6 RET .end_function .decl_function rgbSharpen_Planar ## 939 registers ## .decl.dword %0 local_id_0 .decl.dword %1 local_id_1 .decl.dword %2 local_id_2 .decl.dword %3 group_id_0 .decl.dword %4 group_id_1 .decl.dword %5 group_id_2 .decl.dword %6 num_groups_0 .decl.dword %7 num_groups_1 .decl.dword %8 num_groups_2 .decl.dword %9 local_size_0 .decl.dword %10 local_size_1 .decl.dword %11 local_size_2 .decl.dword %12 enqueued_local_size_0 .decl.dword %13 enqueued_local_size_1 .decl.dword %14 enqueued_local_size_2 .decl.dword %15 global_size_0 .decl.dword %16 global_size_1 .decl.dword %17 global_size_2 .decl.dword %18 global_offset_0 .decl.dword %19 global_offset_1 .decl.dword %20 global_offset_2 .decl.dword %21 stack_pointer .decl.qword %22 stack_buffer .decl.word %23 block_ip .decl.dword %24 barrier_id .decl.dword %25 thread_number .decl.dword %26 work_dimension .decl.dword %27 zero .decl.dword %28 one .decl.word %29 retVal .decl.dword %30 dwblockip .decl.qword %31 profiling_buffer_pointer .decl.dword %32 profiling_timestamps0 .decl.dword %33 profiling_timestamps1 .decl.dword %34 profiling_timestamps2 .decl.dword %35 profiling_timestamps3 .decl.dword %36 profiling_timestamps4 .decl.dword %37 threadid .decl.qword %38 constant_addrspace_start .decl.qword %39 stack_size .decl.qword %40 enqueue_buffer_pointer .decl.dword %41 .decl.dword %42 .decl.dword %43 .decl.dword %44 .decl.dword %45 .decl.dword %46 .decl.dword %47 .decl.dword %48 .decl.dword %49 .decl.dword %50 .decl.dword %51 .decl.dword %52 .decl.dword %53 .decl.dword %54 .decl.dword %55 .decl.dword %56 .decl.dword %57 .decl.dword %58 .decl.dword %59 .decl.dword %60 .decl.dword %61 .decl.dword %62 .decl.dword %63 .decl.dword %64 .decl.dword %65 .decl.dword %66 .decl.dword %67 .decl.dword %68 .decl.dword %69 .decl.bool %70 .decl.bool %71 .decl.bool %72 .decl.dword %73 .decl.bool %74 .decl.dword %75 .decl.bool %76 .decl.dword %77 .decl.dword %78 .decl.dword %79 .decl.dword %80 .decl.dword %81 .decl.dword %82 .decl.dword %83 .decl.dword %84 .decl.dword %85 .decl.dword %86 .decl.dword %87 .decl.dword %88 .decl.dword %89 .decl.dword %90 .decl.dword %91 .decl.dword %92 .decl.dword %93 .decl.dword %94 .decl.dword %95 .decl.dword %96 .decl.dword %97 .decl.dword %98 .decl.dword %99 .decl.dword %100 .decl.dword %101 .decl.dword %102 .decl.dword %103 .decl.dword %104 .decl.dword %105 .decl.dword %106 .decl.dword %107 .decl.dword %108 .decl.dword %109 .decl.dword %110 .decl.dword %111 .decl.dword %112 .decl.dword %113 .decl.dword %114 .decl.dword %115 .decl.dword %116 .decl.dword %117 .decl.dword %118 .decl.dword %119 .decl.dword %120 .decl.dword %121 .decl.dword %122 .decl.dword %123 .decl.dword %124 .decl.dword %125 .decl.dword %126 .decl.dword %127 .decl.dword %128 .decl.dword %129 .decl.dword %130 .decl.dword %131 .decl.dword %132 .decl.dword %133 .decl.dword %134 .decl.dword %135 .decl.dword %136 .decl.dword %137 .decl.dword %138 .decl.dword %139 .decl.dword %140 .decl.dword %141 .decl.dword %142 .decl.dword %143 .decl.dword %144 .decl.dword %145 .decl.dword %146 .decl.dword %147 .decl.dword %148 .decl.dword %149 .decl.dword %150 .decl.dword %151 .decl.dword %152 .decl.dword %153 .decl.dword %154 .decl.dword %155 .decl.dword %156 .decl.dword %157 .decl.dword %158 .decl.dword %159 .decl.dword %160 .decl.dword %161 .decl.dword %162 .decl.dword %163 .decl.dword %164 .decl.dword %165 .decl.dword %166 .decl.dword %167 .decl.dword %168 .decl.dword %169 .decl.dword %170 .decl.dword %171 .decl.dword %172 .decl.dword %173 .decl.dword %174 .decl.dword %175 .decl.dword %176 .decl.dword %177 .decl.dword %178 .decl.dword %179 .decl.dword %180 .decl.dword %181 .decl.dword %182 .decl.dword %183 .decl.dword %184 .decl.dword %185 .decl.dword %186 .decl.dword %187 .decl.dword %188 .decl.dword %189 .decl.dword %190 .decl.dword %191 .decl.dword %192 .decl.dword %193 .decl.dword %194 .decl.dword %195 .decl.dword %196 .decl.dword %197 .decl.dword %198 .decl.dword %199 .decl.dword %200 .decl.dword %201 .decl.dword %202 .decl.dword %203 .decl.dword %204 .decl.dword %205 .decl.dword %206 .decl.dword %207 .decl.dword %208 .decl.dword %209 .decl.dword %210 .decl.dword %211 .decl.dword %212 .decl.dword %213 .decl.dword %214 .decl.dword %215 .decl.dword %216 .decl.dword %217 .decl.dword %218 .decl.dword %219 .decl.dword %220 .decl.dword %221 .decl.dword %222 .decl.dword %223 .decl.dword %224 .decl.dword %225 .decl.dword %226 .decl.dword %227 .decl.dword %228 .decl.dword %229 .decl.dword %230 .decl.dword %231 .decl.dword %232 .decl.dword %233 .decl.dword %234 .decl.dword %235 .decl.dword %236 .decl.dword %237 .decl.dword %238 .decl.dword %239 .decl.dword %240 .decl.dword %241 .decl.dword %242 .decl.dword %243 .decl.dword %244 .decl.dword %245 .decl.dword %246 .decl.dword %247 .decl.dword %248 .decl.dword %249 .decl.dword %250 .decl.dword %251 .decl.dword %252 .decl.dword %253 .decl.dword %254 .decl.dword %255 .decl.dword %256 .decl.dword %257 .decl.dword %258 .decl.dword %259 .decl.dword %260 .decl.dword %261 .decl.dword %262 .decl.dword %263 .decl.dword %264 .decl.dword %265 .decl.dword %266 .decl.dword %267 .decl.dword %268 .decl.dword %269 .decl.dword %270 .decl.dword %271 .decl.dword %272 .decl.dword %273 .decl.dword %274 .decl.dword %275 .decl.dword %276 .decl.dword %277 .decl.dword %278 .decl.dword %279 .decl.dword %280 .decl.dword %281 .decl.dword %282 .decl.dword %283 .decl.dword %284 .decl.dword %285 .decl.dword %286 .decl.dword %287 .decl.dword %288 .decl.dword %289 .decl.dword %290 .decl.dword %291 .decl.dword %292 .decl.dword %293 .decl.dword %294 .decl.dword %295 .decl.dword %296 .decl.dword %297 .decl.dword %298 .decl.dword %299 .decl.dword %300 .decl.dword %301 .decl.dword %302 .decl.dword %303 .decl.dword %304 .decl.dword %305 .decl.dword %306 .decl.dword %307 .decl.dword %308 .decl.dword %309 .decl.dword %310 .decl.dword %311 .decl.dword %312 .decl.dword %313 .decl.dword %314 .decl.dword %315 .decl.dword %316 .decl.dword %317 .decl.dword %318 .decl.dword %319 .decl.dword %320 .decl.dword %321 .decl.dword %322 .decl.dword %323 .decl.dword %324 .decl.dword %325 .decl.dword %326 .decl.dword %327 .decl.dword %328 .decl.dword %329 .decl.dword %330 .decl.dword %331 .decl.dword %332 .decl.dword %333 .decl.dword %334 .decl.dword %335 .decl.dword %336 .decl.dword %337 .decl.dword %338 .decl.dword %339 .decl.dword %340 .decl.dword %341 .decl.dword %342 .decl.dword %343 .decl.dword %344 .decl.dword %345 .decl.dword %346 .decl.dword %347 .decl.dword %348 .decl.dword %349 .decl.dword %350 .decl.dword %351 .decl.dword %352 .decl.dword %353 .decl.dword %354 .decl.dword %355 .decl.dword %356 .decl.dword %357 .decl.dword %358 .decl.dword %359 .decl.dword %360 .decl.dword %361 .decl.dword %362 .decl.dword %363 .decl.dword %364 .decl.dword %365 .decl.dword %366 .decl.dword %367 .decl.dword %368 .decl.dword %369 .decl.dword %370 .decl.dword %371 .decl.dword %372 .decl.dword %373 .decl.dword %374 .decl.dword %375 .decl.dword %376 .decl.dword %377 .decl.dword %378 .decl.dword %379 .decl.dword %380 .decl.dword %381 .decl.dword %382 .decl.dword %383 .decl.dword %384 .decl.dword %385 .decl.dword %386 .decl.dword %387 .decl.dword %388 .decl.dword %389 .decl.dword %390 .decl.dword %391 .decl.dword %392 .decl.dword %393 .decl.dword %394 .decl.dword %395 .decl.dword %396 .decl.dword %397 .decl.dword %398 .decl.dword %399 .decl.dword %400 .decl.dword %401 .decl.dword %402 .decl.dword %403 .decl.dword %404 .decl.dword %405 .decl.dword %406 .decl.dword %407 .decl.dword %408 .decl.dword %409 .decl.dword %410 .decl.dword %411 .decl.dword %412 .decl.dword %413 .decl.dword %414 .decl.dword %415 .decl.dword %416 .decl.dword %417 .decl.dword %418 .decl.dword %419 .decl.dword %420 .decl.dword %421 .decl.dword %422 .decl.dword %423 .decl.dword %424 .decl.dword %425 .decl.dword %426 .decl.dword %427 .decl.dword %428 .decl.dword %429 .decl.dword %430 .decl.dword %431 .decl.dword %432 .decl.dword %433 .decl.dword %434 .decl.dword %435 .decl.dword %436 .decl.dword %437 .decl.dword %438 .decl.dword %439 .decl.dword %440 .decl.dword %441 .decl.dword %442 .decl.dword %443 .decl.dword %444 .decl.dword %445 .decl.dword %446 .decl.dword %447 .decl.dword %448 .decl.dword %449 .decl.dword %450 .decl.dword %451 .decl.dword %452 .decl.dword %453 .decl.dword %454 .decl.dword %455 .decl.dword %456 .decl.dword %457 .decl.dword %458 .decl.dword %459 .decl.dword %460 .decl.dword %461 .decl.dword %462 .decl.dword %463 .decl.dword %464 .decl.dword %465 .decl.dword %466 .decl.dword %467 .decl.dword %468 .decl.dword %469 .decl.dword %470 .decl.dword %471 .decl.dword %472 .decl.dword %473 .decl.dword %474 .decl.dword %475 .decl.dword %476 .decl.dword %477 .decl.dword %478 .decl.dword %479 .decl.dword %480 .decl.dword %481 .decl.dword %482 .decl.dword %483 .decl.dword %484 .decl.dword %485 .decl.dword %486 .decl.dword %487 .decl.dword %488 .decl.dword %489 .decl.dword %490 .decl.dword %491 .decl.dword %492 .decl.dword %493 .decl.dword %494 .decl.dword %495 .decl.dword %496 .decl.dword %497 .decl.dword %498 .decl.dword %499 .decl.dword %500 .decl.dword %501 .decl.dword %502 .decl.dword %503 .decl.dword %504 .decl.dword %505 .decl.dword %506 .decl.dword %507 .decl.dword %508 .decl.dword %509 .decl.dword %510 .decl.dword %511 .decl.dword %512 .decl.dword %513 .decl.dword %514 .decl.dword %515 .decl.dword %516 .decl.dword %517 .decl.dword %518 .decl.dword %519 .decl.dword %520 .decl.dword %521 .decl.dword %522 .decl.dword %523 .decl.dword %524 .decl.dword %525 .decl.dword %526 .decl.dword %527 .decl.dword %528 .decl.dword %529 .decl.dword %530 .decl.dword %531 .decl.dword %532 .decl.qword %533 .decl.qword %534 .decl.dword %535 .decl.dword %536 .decl.dword %537 .decl.dword %538 .decl.dword %539 .decl.dword %540 .decl.dword %541 .decl.bool %542 .decl.dword %543 .decl.bool %544 .decl.dword %545 .decl.dword %546 .decl.bool %547 .decl.dword %548 .decl.dword %549 .decl.dword %550 .decl.dword %551 .decl.dword %552 .decl.dword %553 .decl.dword %554 .decl.dword %555 .decl.dword %556 .decl.bool %557 .decl.dword %558 .decl.dword %559 .decl.bool %560 .decl.dword %561 .decl.bool %562 .decl.dword %563 .decl.dword %564 .decl.bool %565 .decl.dword %566 .decl.bool %567 .decl.dword %568 .decl.dword %569 .decl.bool %570 .decl.dword %571 .decl.bool %572 .decl.word %573 .decl.word %574 .decl.dword %575 .decl.dword %576 .decl.word %577 .decl.word %578 .decl.dword %579 .decl.dword %580 .decl.word %581 .decl.word %582 .decl.dword %583 .decl.dword %584 .decl.dword %585 .decl.dword %586 .decl.dword %587 .decl.dword %588 .decl.dword %589 .decl.dword %590 .decl.dword %591 .decl.dword %592 .decl.dword %593 .decl.dword %594 .decl.dword %595 .decl.dword %596 .decl.dword %597 .decl.dword %598 .decl.dword %599 .decl.dword %600 .decl.dword %601 .decl.dword %602 .decl.dword %603 .decl.dword %604 .decl.dword %605 .decl.dword %606 .decl.dword %607 .decl.dword %608 .decl.dword %609 .decl.dword %610 .decl.dword %611 .decl.dword %612 .decl.dword %613 .decl.dword %614 .decl.dword %615 .decl.dword %616 .decl.dword %617 .decl.dword %618 .decl.dword %619 .decl.dword %620 .decl.dword %621 .decl.dword %622 .decl.dword %623 .decl.dword %624 .decl.dword %625 .decl.dword %626 .decl.dword %627 .decl.dword %628 .decl.dword %629 .decl.dword %630 .decl.dword %631 .decl.dword %632 .decl.dword %633 .decl.dword %634 .decl.dword %635 .decl.dword %636 .decl.dword %637 .decl.dword %638 .decl.dword %639 .decl.dword %640 .decl.dword %641 .decl.dword %642 .decl.dword %643 .decl.dword %644 .decl.dword %645 .decl.dword %646 .decl.dword %647 .decl.dword %648 .decl.dword %649 .decl.dword %650 .decl.dword %651 .decl.dword %652 .decl.dword %653 .decl.dword %654 .decl.dword %655 .decl.dword %656 .decl.dword %657 .decl.dword %658 .decl.dword %659 .decl.dword %660 .decl.dword %661 .decl.dword %662 .decl.dword %663 .decl.dword %664 .decl.dword %665 .decl.dword %666 .decl.dword %667 .decl.dword %668 .decl.dword %669 .decl.dword %670 .decl.dword %671 .decl.dword %672 .decl.dword %673 .decl.dword %674 .decl.dword %675 .decl.dword %676 .decl.dword %677 .decl.dword %678 .decl.dword %679 .decl.dword %680 .decl.dword %681 .decl.dword %682 .decl.dword %683 .decl.dword %684 .decl.dword %685 .decl.dword %686 .decl.dword %687 .decl.dword %688 .decl.dword %689 .decl.dword %690 .decl.dword %691 .decl.dword %692 .decl.dword %693 .decl.dword %694 .decl.dword %695 .decl.dword %696 .decl.dword %697 .decl.dword %698 .decl.dword %699 .decl.dword %700 .decl.dword %701 .decl.dword %702 .decl.dword %703 .decl.dword %704 .decl.dword %705 .decl.dword %706 .decl.dword %707 .decl.dword %708 .decl.dword %709 .decl.dword %710 .decl.dword %711 .decl.dword %712 .decl.dword %713 .decl.dword %714 .decl.dword %715 .decl.dword %716 .decl.dword %717 .decl.dword %718 .decl.dword %719 .decl.dword %720 .decl.dword %721 .decl.dword %722 .decl.dword %723 .decl.dword %724 .decl.dword %725 .decl.dword %726 .decl.dword %727 .decl.dword %728 .decl.dword %729 .decl.dword %730 .decl.dword %731 .decl.dword %732 .decl.dword %733 .decl.dword %734 .decl.dword %735 .decl.dword %736 .decl.dword %737 .decl.dword %738 .decl.dword %739 .decl.dword %740 .decl.dword %741 .decl.dword %742 .decl.dword %743 .decl.dword %744 .decl.dword %745 .decl.dword %746 .decl.dword %747 .decl.dword %748 .decl.dword %749 .decl.dword %750 .decl.dword %751 .decl.dword %752 .decl.dword %753 .decl.dword %754 .decl.dword %755 .decl.dword %756 .decl.dword %757 .decl.dword %758 .decl.dword %759 .decl.dword %760 .decl.dword %761 .decl.dword %762 .decl.dword %763 .decl.dword %764 .decl.dword %765 .decl.dword %766 .decl.dword %767 .decl.dword %768 .decl.dword %769 .decl.dword %770 .decl.dword %771 .decl.dword %772 .decl.dword %773 .decl.dword %774 .decl.dword %775 .decl.dword %776 .decl.dword %777 .decl.dword %778 .decl.dword %779 .decl.dword %780 .decl.dword %781 .decl.dword %782 .decl.dword %783 .decl.dword %784 .decl.dword %785 .decl.dword %786 .decl.dword %787 .decl.dword %788 .decl.dword %789 .decl.dword %790 .decl.dword %791 .decl.dword %792 .decl.dword %793 .decl.dword %794 .decl.dword %795 .decl.dword %796 .decl.dword %797 .decl.dword %798 .decl.dword %799 .decl.dword %800 .decl.dword %801 .decl.dword %802 .decl.dword %803 .decl.dword %804 .decl.dword %805 .decl.dword %806 .decl.dword %807 .decl.dword %808 .decl.dword %809 .decl.dword %810 .decl.dword %811 .decl.dword %812 .decl.dword %813 .decl.dword %814 .decl.dword %815 .decl.dword %816 .decl.dword %817 .decl.dword %818 .decl.dword %819 .decl.dword %820 .decl.dword %821 .decl.dword %822 .decl.dword %823 .decl.dword %824 .decl.dword %825 .decl.dword %826 .decl.dword %827 .decl.dword %828 .decl.dword %829 .decl.dword %830 .decl.dword %831 .decl.dword %832 .decl.dword %833 .decl.dword %834 .decl.dword %835 .decl.dword %836 .decl.dword %837 .decl.dword %838 .decl.dword %839 .decl.dword %840 .decl.dword %841 .decl.dword %842 .decl.dword %843 .decl.dword %844 .decl.dword %845 .decl.dword %846 .decl.dword %847 .decl.dword %848 .decl.dword %849 .decl.dword %850 .decl.dword %851 .decl.dword %852 .decl.dword %853 .decl.dword %854 .decl.dword %855 .decl.dword %856 .decl.dword %857 .decl.dword %858 .decl.dword %859 .decl.dword %860 .decl.dword %861 .decl.dword %862 .decl.dword %863 .decl.dword %864 .decl.dword %865 .decl.dword %866 .decl.dword %867 .decl.dword %868 .decl.dword %869 .decl.dword %870 .decl.dword %871 .decl.dword %872 .decl.dword %873 .decl.dword %874 .decl.dword %875 .decl.dword %876 .decl.dword %877 .decl.dword %878 .decl.dword %879 .decl.dword %880 .decl.dword %881 .decl.dword %882 .decl.dword %883 .decl.dword %884 .decl.dword %885 .decl.dword %886 .decl.dword %887 .decl.dword %888 .decl.dword %889 .decl.dword %890 .decl.dword %891 .decl.qword %892 .decl.bool %893 .decl.dword %894 .decl.bool %895 .decl.dword %896 .decl.dword %897 .decl.dword %898 .decl.dword %899 .decl.bool %900 .decl.dword %901 .decl.bool %902 .decl.dword %903 .decl.bool %904 .decl.dword %905 .decl.dword %906 .decl.dword %907 .decl.dword %908 .decl.dword %909 .decl.dword %910 .decl.dword %911 .decl.dword %912 .decl.dword %913 .decl.dword %914 .decl.dword %915 .decl.dword %916 .decl.dword %917 .decl.word %918 .decl.dword %919 .decl.dword %920 .decl.word %921 .decl.dword %922 .decl.dword %923 .decl.word %924 .decl.dword %925 .decl.dword %926 .decl.dword %927 .decl.dword %928 .decl.dword %929 .decl.dword %930 .decl.dword %931 .decl.dword %932 .decl.dword %933 .decl.dword %934 .decl.dword %935 .decl.dword %936 .decl.dword %937 .decl.dword %938 ## 9 input registers ## decl_input.global %41 pDst decl_input.global %42 pSrc decl_input.value %43 nRowPixels decl_input.value %44 nPlanePixels decl_input.value %45 nMip decl_input.value %46 fSharpness decl_input.value %47 nSensitivity decl_input.value %48 destFormat decl_input.value %49 fWhite ## 0 output register ## ## 0 pushed register ## 9 blocks ## LABEL $0 MUL.int32 %50 %3 %12 ADD.int32 %51 %50 %0 ADD.int32 %52 %51 %18 MUL.int32 %53 %4 %13 ADD.int32 %54 %53 %1 ADD.int32 %55 %54 %19 MUL.int32 %56 %55 %43 ADD.int32 %57 %56 %52 LOADI.uint32 %597 4 MUL.int32 %58 %597 %57 ADD.int32 %59 %42 %58 SUB.uint32 %598 %59 %42 LOAD.float.global.aligned {%60} %598 bti:3 ADD.int32 %61 %57 %44 MUL.int32 %62 %597 %61 ADD.int32 %63 %42 %62 SUB.uint32 %600 %63 %42 LOAD.float.global.aligned {%64} %600 bti:3 LOADI.uint32 %601 1 SHL.int32 %65 %44 %601 ADD.int32 %66 %57 %65 MUL.int32 %67 %597 %66 ADD.int32 %68 %42 %67 SUB.uint32 %603 %68 %42 LOAD.float.global.aligned {%69} %603 bti:3 LOADI.uint32 %604 2 LT.int32 %70 %52 %604 LT.int32 %71 %55 %604 OR.bool %72 %70 %71 BRA<%72> -> label$6 LABEL $1 LOADI.uint32 %606 4294967294 ADD.int32 %73 %15 %606 GE.int32 %74 %52 %73 BRA<%74> -> label$6 LABEL $2 LOADI.uint32 %607 4294967294 ADD.int32 %75 %16 %607 GE.int32 %76 %55 %75 BRA<%76> -> label$6 LABEL $3 LOADI.float %608 0.625 MUL.float %77 %64 %608 LOADI.float %609 0.25 MAD.float %78 %609 %60 %77 LOADI.float %610 0.125 MAD.float %79 %610 %69 %78 LOADI.uint32 %611 31 AND.int32 %80 %45 %611 LOADI.uint32 %612 1 SHL.int32 %81 %612 %80 CVT.float.int32 %82 %81 LOADI.float %613 1 DIV.float %83 %613 %82 CVT.float.int32 %84 %47 LOADI.float %614 128 MUL.float %85 %84 %614 LOADI.float %615 65535 DIV.float %86 %85 %615 LOADI.float %616 0.5 MUL.float %87 %86 %616 DIV.float %88 %613 %87 LOADI.uint32 %618 4294967294 ADD.int32 %89 %52 %618 ADD.int32 %90 %55 %618 MUL.int32 %91 %90 %43 ADD.int32 %92 %91 %89 LOADI.uint32 %620 4 MUL.int32 %93 %620 %92 ADD.int32 %94 %42 %93 SUB.uint32 %621 %94 %42 LOAD.float.global.aligned {%95} %621 bti:3 ADD.int32 %96 %92 %44 MUL.int32 %97 %620 %96 ADD.int32 %98 %42 %97 SUB.uint32 %623 %98 %42 LOAD.float.global.aligned {%99} %623 bti:3 ADD.int32 %100 %92 %65 MUL.int32 %101 %620 %100 ADD.int32 %102 %42 %101 SUB.uint32 %625 %102 %42 LOAD.float.global.aligned {%103} %625 bti:3 MUL.float %104 %99 %608 MAD.float %105 %609 %95 %104 MAD.float %106 %610 %103 %105 LOADI.uint32 %629 4294967295 ADD.int32 %107 %52 %629 ADD.int32 %108 %55 %618 MUL.int32 %109 %108 %43 ADD.int32 %110 %109 %107 MUL.int32 %111 %620 %110 ADD.int32 %112 %42 %111 SUB.uint32 %632 %112 %42 LOAD.float.global.aligned {%113} %632 bti:3 ADD.int32 %114 %110 %44 MUL.int32 %115 %620 %114 ADD.int32 %116 %42 %115 SUB.uint32 %634 %116 %42 LOAD.float.global.aligned {%117} %634 bti:3 ADD.int32 %118 %110 %65 MUL.int32 %119 %620 %118 ADD.int32 %120 %42 %119 SUB.uint32 %636 %120 %42 LOAD.float.global.aligned {%121} %636 bti:3 MUL.float %122 %117 %608 MAD.float %123 %609 %113 %122 MAD.float %124 %610 %121 %123 LOADI.float %640 2 MAD.float %125 %640 %124 %106 ADD.int32 %126 %55 %618 MUL.int32 %127 %126 %43 ADD.int32 %128 %127 %52 MUL.int32 %129 %620 %128 ADD.int32 %130 %42 %129 SUB.uint32 %643 %130 %42 LOAD.float.global.aligned {%131} %643 bti:3 ADD.int32 %132 %128 %44 MUL.int32 %133 %620 %132 ADD.int32 %134 %42 %133 SUB.uint32 %645 %134 %42 LOAD.float.global.aligned {%135} %645 bti:3 ADD.int32 %136 %128 %65 MUL.int32 %137 %620 %136 ADD.int32 %138 %42 %137 SUB.uint32 %647 %138 %42 LOAD.float.global.aligned {%139} %647 bti:3 MUL.float %140 %135 %608 MAD.float %141 %609 %131 %140 MAD.float %142 %610 %139 %141 LOADI.float %651 4 MAD.float %143 %651 %142 %125 ADD.int32 %144 %52 %612 ADD.int32 %145 %55 %618 MUL.int32 %146 %145 %43 ADD.int32 %147 %146 %144 MUL.int32 %148 %620 %147 ADD.int32 %149 %42 %148 SUB.uint32 %655 %149 %42 LOAD.float.global.aligned {%150} %655 bti:3 ADD.int32 %151 %147 %44 MUL.int32 %152 %620 %151 ADD.int32 %153 %42 %152 SUB.uint32 %657 %153 %42 LOAD.float.global.aligned {%154} %657 bti:3 ADD.int32 %155 %147 %65 MUL.int32 %156 %620 %155 ADD.int32 %157 %42 %156 SUB.uint32 %659 %157 %42 LOAD.float.global.aligned {%158} %659 bti:3 MUL.float %159 %154 %608 MAD.float %160 %609 %150 %159 MAD.float %161 %610 %158 %160 MAD.float %162 %640 %161 %143 LOADI.uint32 %664 2 ADD.int32 %163 %52 %664 ADD.int32 %164 %55 %618 MUL.int32 %165 %164 %43 ADD.int32 %166 %165 %163 MUL.int32 %167 %620 %166 ADD.int32 %168 %42 %167 SUB.uint32 %667 %168 %42 LOAD.float.global.aligned {%169} %667 bti:3 ADD.int32 %170 %166 %44 MUL.int32 %171 %620 %170 ADD.int32 %172 %42 %171 SUB.uint32 %669 %172 %42 LOAD.float.global.aligned {%173} %669 bti:3 ADD.int32 %174 %166 %65 MUL.int32 %175 %620 %174 ADD.int32 %176 %42 %175 SUB.uint32 %671 %176 %42 LOAD.float.global.aligned {%177} %671 bti:3 MUL.float %178 %173 %608 MAD.float %179 %609 %169 %178 MAD.float %180 %610 %177 %179 ADD.float %181 %162 %180 LOADI.float %675 0 ADD.float %182 %181 %675 ADD.int32 %183 %52 %618 ADD.int32 %184 %55 %629 MUL.int32 %185 %184 %43 ADD.int32 %186 %185 %183 MUL.int32 %187 %620 %186 ADD.int32 %188 %42 %187 SUB.uint32 %679 %188 %42 LOAD.float.global.aligned {%189} %679 bti:3 ADD.int32 %190 %186 %44 MUL.int32 %191 %620 %190 ADD.int32 %192 %42 %191 SUB.uint32 %681 %192 %42 LOAD.float.global.aligned {%193} %681 bti:3 ADD.int32 %194 %186 %65 MUL.int32 %195 %620 %194 ADD.int32 %196 %42 %195 SUB.uint32 %683 %196 %42 LOAD.float.global.aligned {%197} %683 bti:3 MUL.float %198 %193 %608 MAD.float %199 %609 %189 %198 MAD.float %200 %610 %197 %199 ADD.int32 %201 %52 %629 ADD.int32 %202 %55 %629 MUL.int32 %203 %202 %43 ADD.int32 %204 %203 %201 MUL.int32 %205 %620 %204 ADD.int32 %206 %42 %205 SUB.uint32 %690 %206 %42 LOAD.float.global.aligned {%207} %690 bti:3 ADD.int32 %208 %204 %44 MUL.int32 %209 %620 %208 ADD.int32 %210 %42 %209 SUB.uint32 %692 %210 %42 LOAD.float.global.aligned {%211} %692 bti:3 ADD.int32 %212 %204 %65 MUL.int32 %213 %620 %212 ADD.int32 %214 %42 %213 SUB.uint32 %694 %214 %42 LOAD.float.global.aligned {%215} %694 bti:3 MUL.float %216 %211 %608 MAD.float %217 %609 %207 %216 MAD.float %218 %610 %215 %217 MUL.float %219 %218 %651 MAD.float %220 %640 %200 %219 ADD.int32 %221 %55 %629 MUL.int32 %222 %221 %43 ADD.int32 %223 %222 %52 MUL.int32 %224 %620 %223 ADD.int32 %225 %42 %224 SUB.uint32 %702 %225 %42 LOAD.float.global.aligned {%226} %702 bti:3 ADD.int32 %227 %223 %44 MUL.int32 %228 %620 %227 ADD.int32 %229 %42 %228 SUB.uint32 %704 %229 %42 LOAD.float.global.aligned {%230} %704 bti:3 ADD.int32 %231 %223 %65 MUL.int32 %232 %620 %231 ADD.int32 %233 %42 %232 SUB.uint32 %706 %233 %42 LOAD.float.global.aligned {%234} %706 bti:3 MUL.float %235 %230 %608 MAD.float %236 %609 %226 %235 MAD.float %237 %610 %234 %236 LOADI.float %710 8 MAD.float %238 %710 %237 %220 ADD.int32 %239 %52 %612 ADD.int32 %240 %55 %629 MUL.int32 %241 %240 %43 ADD.int32 %242 %241 %239 MUL.int32 %243 %620 %242 ADD.int32 %244 %42 %243 SUB.uint32 %714 %244 %42 LOAD.float.global.aligned {%245} %714 bti:3 ADD.int32 %246 %242 %44 MUL.int32 %247 %620 %246 ADD.int32 %248 %42 %247 SUB.uint32 %716 %248 %42 LOAD.float.global.aligned {%249} %716 bti:3 ADD.int32 %250 %242 %65 MUL.int32 %251 %620 %250 ADD.int32 %252 %42 %251 SUB.uint32 %718 %252 %42 LOAD.float.global.aligned {%253} %718 bti:3 MUL.float %254 %249 %608 MAD.float %255 %609 %245 %254 MAD.float %256 %610 %253 %255 MAD.float %257 %651 %256 %238 ADD.int32 %258 %52 %664 ADD.int32 %259 %55 %629 MUL.int32 %260 %259 %43 ADD.int32 %261 %260 %258 MUL.int32 %262 %620 %261 ADD.int32 %263 %42 %262 SUB.uint32 %726 %263 %42 LOAD.float.global.aligned {%264} %726 bti:3 ADD.int32 %265 %261 %44 MUL.int32 %266 %620 %265 ADD.int32 %267 %42 %266 SUB.uint32 %728 %267 %42 LOAD.float.global.aligned {%268} %728 bti:3 ADD.int32 %269 %261 %65 MUL.int32 %270 %620 %269 ADD.int32 %271 %42 %270 SUB.uint32 %730 %271 %42 LOAD.float.global.aligned {%272} %730 bti:3 MUL.float %273 %268 %608 MAD.float %274 %609 %264 %273 MAD.float %275 %610 %272 %274 MAD.float %276 %640 %275 %257 ADD.float %277 %182 %276 ADD.int32 %278 %52 %618 ADD.int32 %279 %278 %56 MUL.int32 %280 %620 %279 ADD.int32 %281 %42 %280 SUB.uint32 %737 %281 %42 LOAD.float.global.aligned {%282 %283} %737 bti:3 ADD.int32 %284 %279 %44 MUL.int32 %285 %620 %284 ADD.int32 %286 %42 %285 SUB.uint32 %739 %286 %42 LOAD.float.global.aligned {%287} %739 bti:3 ADD.int32 %288 %279 %65 MUL.int32 %289 %620 %288 ADD.int32 %290 %42 %289 SUB.uint32 %741 %290 %42 LOAD.float.global.aligned {%291} %741 bti:3 MUL.float %292 %287 %608 MAD.float %293 %609 %282 %292 MAD.float %294 %610 %291 %293 ADD.int32 %295 %52 %629 ADD.int32 %296 %295 %56 ADD.int32 %297 %296 %44 MUL.int32 %298 %620 %297 ADD.int32 %299 %42 %298 SUB.uint32 %747 %299 %42 LOAD.float.global.aligned {%300} %747 bti:3 ADD.int32 %301 %296 %65 MUL.int32 %302 %620 %301 ADD.int32 %303 %42 %302 SUB.uint32 %749 %303 %42 LOAD.float.global.aligned {%304} %749 bti:3 MUL.float %305 %300 %608 MAD.float %306 %609 %283 %305 MAD.float %307 %610 %304 %306 MUL.float %308 %307 %710 MAD.float %309 %651 %294 %308 LOADI.float %755 16 MAD.float %310 %755 %79 %309 ADD.int32 %311 %52 %612 ADD.int32 %312 %311 %56 MUL.int32 %313 %620 %312 ADD.int32 %314 %42 %313 SUB.uint32 %758 %314 %42 LOAD.float.global.aligned {%315 %316} %758 bti:3 ADD.int32 %317 %312 %44 MUL.int32 %318 %620 %317 ADD.int32 %319 %42 %318 SUB.uint32 %760 %319 %42 LOAD.float.global.aligned {%320} %760 bti:3 ADD.int32 %321 %312 %65 MUL.int32 %322 %620 %321 ADD.int32 %323 %42 %322 SUB.uint32 %762 %323 %42 LOAD.float.global.aligned {%324} %762 bti:3 MUL.float %325 %320 %608 MAD.float %326 %609 %315 %325 MAD.float %327 %610 %324 %326 MAD.float %328 %710 %327 %310 ADD.int32 %329 %52 %664 ADD.int32 %330 %329 %56 ADD.int32 %331 %330 %44 MUL.int32 %332 %620 %331 ADD.int32 %333 %42 %332 SUB.uint32 %769 %333 %42 LOAD.float.global.aligned {%334} %769 bti:3 ADD.int32 %335 %330 %65 MUL.int32 %336 %620 %335 ADD.int32 %337 %42 %336 SUB.uint32 %771 %337 %42 LOAD.float.global.aligned {%338} %771 bti:3 MUL.float %339 %334 %608 MAD.float %340 %609 %316 %339 MAD.float %341 %610 %338 %340 MAD.float %342 %651 %341 %328 ADD.float %343 %277 %342 ADD.int32 %344 %52 %618 ADD.int32 %345 %55 %612 MUL.int32 %346 %345 %43 ADD.int32 %347 %346 %344 MUL.int32 %348 %620 %347 ADD.int32 %349 %42 %348 SUB.uint32 %779 %349 %42 LOAD.float.global.aligned {%350} %779 bti:3 ADD.int32 %351 %347 %44 MUL.int32 %352 %620 %351 ADD.int32 %353 %42 %352 SUB.uint32 %781 %353 %42 LOAD.float.global.aligned {%354} %781 bti:3 ADD.int32 %355 %347 %65 MUL.int32 %356 %620 %355 ADD.int32 %357 %42 %356 SUB.uint32 %783 %357 %42 LOAD.float.global.aligned {%358} %783 bti:3 MUL.float %359 %354 %608 MAD.float %360 %609 %350 %359 MAD.float %361 %610 %358 %360 ADD.int32 %362 %52 %629 ADD.int32 %363 %55 %612 MUL.int32 %364 %363 %43 ADD.int32 %365 %364 %362 MUL.int32 %366 %620 %365 ADD.int32 %367 %42 %366 SUB.uint32 %790 %367 %42 LOAD.float.global.aligned {%368} %790 bti:3 ADD.int32 %369 %365 %44 MUL.int32 %370 %620 %369 ADD.int32 %371 %42 %370 SUB.uint32 %792 %371 %42 LOAD.float.global.aligned {%372} %792 bti:3 ADD.int32 %373 %365 %65 MUL.int32 %374 %620 %373 ADD.int32 %375 %42 %374 SUB.uint32 %794 %375 %42 LOAD.float.global.aligned {%376} %794 bti:3 MUL.float %377 %372 %608 MAD.float %378 %609 %368 %377 MAD.float %379 %610 %376 %378 MUL.float %380 %379 %651 MAD.float %381 %640 %361 %380 ADD.int32 %382 %55 %612 MUL.int32 %383 %382 %43 ADD.int32 %384 %383 %52 MUL.int32 %385 %620 %384 ADD.int32 %386 %42 %385 SUB.uint32 %802 %386 %42 LOAD.float.global.aligned {%387} %802 bti:3 ADD.int32 %388 %384 %44 MUL.int32 %389 %620 %388 ADD.int32 %390 %42 %389 SUB.uint32 %804 %390 %42 LOAD.float.global.aligned {%391} %804 bti:3 ADD.int32 %392 %384 %65 MUL.int32 %393 %620 %392 ADD.int32 %394 %42 %393 SUB.uint32 %806 %394 %42 LOAD.float.global.aligned {%395} %806 bti:3 MUL.float %396 %391 %608 MAD.float %397 %609 %387 %396 MAD.float %398 %610 %395 %397 MAD.float %399 %710 %398 %381 ADD.int32 %400 %52 %612 ADD.int32 %401 %55 %612 MUL.int32 %402 %401 %43 ADD.int32 %403 %402 %400 MUL.int32 %404 %620 %403 ADD.int32 %405 %42 %404 SUB.uint32 %814 %405 %42 LOAD.float.global.aligned {%406} %814 bti:3 ADD.int32 %407 %403 %44 MUL.int32 %408 %620 %407 ADD.int32 %409 %42 %408 SUB.uint32 %816 %409 %42 LOAD.float.global.aligned {%410} %816 bti:3 ADD.int32 %411 %403 %65 MUL.int32 %412 %620 %411 ADD.int32 %413 %42 %412 SUB.uint32 %818 %413 %42 LOAD.float.global.aligned {%414} %818 bti:3 MUL.float %415 %410 %608 MAD.float %416 %609 %406 %415 MAD.float %417 %610 %414 %416 MAD.float %418 %651 %417 %399 ADD.int32 %419 %52 %664 ADD.int32 %420 %55 %612 MUL.int32 %421 %420 %43 ADD.int32 %422 %421 %419 MUL.int32 %423 %620 %422 ADD.int32 %424 %42 %423 SUB.uint32 %826 %424 %42 LOAD.float.global.aligned {%425} %826 bti:3 ADD.int32 %426 %422 %44 MUL.int32 %427 %620 %426 ADD.int32 %428 %42 %427 SUB.uint32 %828 %428 %42 LOAD.float.global.aligned {%429} %828 bti:3 ADD.int32 %430 %422 %65 MUL.int32 %431 %620 %430 ADD.int32 %432 %42 %431 SUB.uint32 %830 %432 %42 LOAD.float.global.aligned {%433} %830 bti:3 MUL.float %434 %429 %608 MAD.float %435 %609 %425 %434 MAD.float %436 %610 %433 %435 MAD.float %437 %640 %436 %418 ADD.float %438 %343 %437 ADD.int32 %439 %52 %618 ADD.int32 %440 %55 %664 MUL.int32 %441 %440 %43 ADD.int32 %442 %441 %439 MUL.int32 %443 %620 %442 ADD.int32 %444 %42 %443 SUB.uint32 %838 %444 %42 LOAD.float.global.aligned {%445} %838 bti:3 ADD.int32 %446 %442 %44 MUL.int32 %447 %620 %446 ADD.int32 %448 %42 %447 SUB.uint32 %840 %448 %42 LOAD.float.global.aligned {%449} %840 bti:3 ADD.int32 %450 %442 %65 MUL.int32 %451 %620 %450 ADD.int32 %452 %42 %451 SUB.uint32 %842 %452 %42 LOAD.float.global.aligned {%453} %842 bti:3 MUL.float %454 %449 %608 MAD.float %455 %609 %445 %454 MAD.float %456 %610 %453 %455 ADD.int32 %457 %52 %629 ADD.int32 %458 %55 %664 MUL.int32 %459 %458 %43 ADD.int32 %460 %459 %457 MUL.int32 %461 %620 %460 ADD.int32 %462 %42 %461 SUB.uint32 %849 %462 %42 LOAD.float.global.aligned {%463} %849 bti:3 ADD.int32 %464 %460 %44 MUL.int32 %465 %620 %464 ADD.int32 %466 %42 %465 SUB.uint32 %851 %466 %42 LOAD.float.global.aligned {%467} %851 bti:3 ADD.int32 %468 %460 %65 MUL.int32 %469 %620 %468 ADD.int32 %470 %42 %469 SUB.uint32 %853 %470 %42 LOAD.float.global.aligned {%471} %853 bti:3 MUL.float %472 %467 %608 MAD.float %473 %609 %463 %472 MAD.float %474 %610 %471 %473 MAD.float %475 %640 %474 %456 ADD.int32 %476 %55 %664 MUL.int32 %477 %476 %43 ADD.int32 %478 %477 %52 MUL.int32 %479 %620 %478 ADD.int32 %480 %42 %479 SUB.uint32 %860 %480 %42 LOAD.float.global.aligned {%481} %860 bti:3 ADD.int32 %482 %478 %44 MUL.int32 %483 %620 %482 ADD.int32 %484 %42 %483 SUB.uint32 %862 %484 %42 LOAD.float.global.aligned {%485} %862 bti:3 ADD.int32 %486 %478 %65 MUL.int32 %487 %620 %486 ADD.int32 %488 %42 %487 SUB.uint32 %864 %488 %42 LOAD.float.global.aligned {%489} %864 bti:3 MUL.float %490 %485 %608 MAD.float %491 %609 %481 %490 MAD.float %492 %610 %489 %491 MAD.float %493 %651 %492 %475 ADD.int32 %494 %52 %612 ADD.int32 %495 %55 %664 MUL.int32 %496 %495 %43 ADD.int32 %497 %496 %494 MUL.int32 %498 %620 %497 ADD.int32 %499 %42 %498 SUB.uint32 %872 %499 %42 LOAD.float.global.aligned {%500} %872 bti:3 ADD.int32 %501 %497 %44 MUL.int32 %502 %620 %501 ADD.int32 %503 %42 %502 SUB.uint32 %874 %503 %42 LOAD.float.global.aligned {%504} %874 bti:3 ADD.int32 %505 %497 %65 MUL.int32 %506 %620 %505 ADD.int32 %507 %42 %506 SUB.uint32 %876 %507 %42 LOAD.float.global.aligned {%508} %876 bti:3 MUL.float %509 %504 %608 MAD.float %510 %609 %500 %509 MAD.float %511 %610 %508 %510 MAD.float %512 %640 %511 %493 ADD.int32 %513 %52 %664 ADD.int32 %514 %55 %664 MUL.int32 %515 %514 %43 ADD.int32 %516 %515 %513 MUL.int32 %517 %620 %516 ADD.int32 %518 %42 %517 SUB.uint32 %884 %518 %42 LOAD.float.global.aligned {%519} %884 bti:3 ADD.int32 %520 %516 %44 MUL.int32 %521 %620 %520 ADD.int32 %522 %42 %521 SUB.uint32 %886 %522 %42 LOAD.float.global.aligned {%523} %886 bti:3 ADD.int32 %524 %516 %65 MUL.int32 %525 %620 %524 ADD.int32 %526 %42 %525 SUB.uint32 %888 %526 %42 LOAD.float.global.aligned {%527} %888 bti:3 MUL.float %528 %523 %608 MAD.float %529 %609 %519 %528 MAD.float %530 %610 %527 %529 ADD.float %531 %512 %530 ADD.float %532 %438 %531 CVT.double.float %533 %532 LOADI.double %892 0.01 MUL.double %534 %533 %892 CVT.float.double %535 %534 SUB.float %536 %79 %535 MUL.float %537 %536 %46 ABS.float %538 %537 SUB.float %539 %538 %87 MUL.float %540 %537 %539 MUL.float %541 %88 %540 LT.float %542 %538 %87 SEL.float %543 %542 %675 %541 LT.float %544 %538 %86 SEL.float %545 %544 %543 %537 MUL.float %546 %83 %545 LOADI.uint32 %896 0 GT.int32 %547 %45 %896 MUL.float %548 %546 %616 SEL.float %549 %547 %548 %675 ADD.float %550 %546 %549 ADD.float %551 %60 %550 ADD.float %552 %64 %550 ADD.float %553 %69 %550 GE.float %900 %551 %675 SEL.float %554 %900 %551 %675 GE.float %902 %552 %675 SEL.float %555 %902 %552 %675 GE.float %904 %553 %675 SEL.float %556 %904 %553 %675 EQ.int32 %557 %48 %896 IF !<%557> -> label$11 LABEL $4 LOADI.float %906 0.5 MAD.float %558 %554 %49 %906 CVT.int32.float %559 %558 LOADI.uint32 %907 65535 LT.int32 %560 %559 %907 SEL.int32 %561 %560 %559 %907 LOADI.uint32 %909 0 GT.int32 %562 %559 %909 MAD.float %563 %555 %49 %906 CVT.int32.float %564 %563 LT.int32 %565 %564 %907 SEL.int32 %566 %565 %564 %907 GT.int32 %567 %564 %909 MAD.float %568 %556 %49 %906 CVT.int32.float %569 %568 LT.int32 %570 %569 %907 SEL.int32 %571 %570 %569 %907 GT.int32 %572 %569 %909 CVT.int16.int32 %573 %561 LOADI.uint16 %918 0 SEL.int16 %574 %562 %573 %918 LOADI.uint32 %919 2 MUL.int32 %575 %919 %57 ADD.int32 %576 %41 %575 SUB.uint32 %920 %576 %41 STORE.int16.global.unaligned %920 {%574} bti:2 CVT.int16.int32 %577 %566 SEL.int16 %578 %567 %577 %918 MUL.int32 %579 %919 %61 ADD.int32 %580 %41 %579 SUB.uint32 %923 %580 %41 STORE.int16.global.unaligned %923 {%578} bti:2 CVT.int16.int32 %581 %571 SEL.int16 %582 %572 %581 %918 MUL.int32 %583 %919 %66 ADD.int32 %584 %41 %583 SUB.uint32 %926 %584 %41 STORE.int16.global.unaligned %926 {%582} bti:2 LABEL $5 ELSE -> label$10 <**>label: 11 LOADI.uint32 %927 4 MUL.int32 %585 %927 %57 ADD.int32 %586 %41 %585 SUB.uint32 %928 %586 %41 STORE.float.global.aligned %928 {%554} bti:2 MUL.int32 %587 %927 %61 ADD.int32 %588 %41 %587 SUB.uint32 %930 %588 %41 STORE.float.global.aligned %930 {%555} bti:2 MUL.int32 %589 %927 %66 ADD.int32 %590 %41 %589 SUB.uint32 %932 %590 %41 STORE.float.global.aligned %932 {%556} bti:2 ENDIF -> label$10 BRA -> label$7 LABEL $6 LOADI.uint32 %933 4 MUL.int32 %591 %933 %57 ADD.int32 %592 %41 %591 SUB.uint32 %934 %592 %41 STORE.float.global.aligned %934 {%60} bti:2 MUL.int32 %593 %933 %61 ADD.int32 %594 %41 %593 SUB.uint32 %936 %594 %41 STORE.float.global.aligned %936 {%64} bti:2 MUL.int32 %595 %933 %66 ADD.int32 %596 %41 %595 SUB.uint32 %938 %596 %41 STORE.float.global.aligned %938 {%69} bti:2 LABEL $7 LABEL $8 RET .end_function .decl_function rgbSharpen_PlanarLds ## 377 registers ## .decl.dword %0 local_id_0 .decl.dword %1 local_id_1 .decl.dword %2 local_id_2 .decl.dword %3 group_id_0 .decl.dword %4 group_id_1 .decl.dword %5 group_id_2 .decl.dword %6 num_groups_0 .decl.dword %7 num_groups_1 .decl.dword %8 num_groups_2 .decl.dword %9 local_size_0 .decl.dword %10 local_size_1 .decl.dword %11 local_size_2 .decl.dword %12 enqueued_local_size_0 .decl.dword %13 enqueued_local_size_1 .decl.dword %14 enqueued_local_size_2 .decl.dword %15 global_size_0 .decl.dword %16 global_size_1 .decl.dword %17 global_size_2 .decl.dword %18 global_offset_0 .decl.dword %19 global_offset_1 .decl.dword %20 global_offset_2 .decl.dword %21 stack_pointer .decl.qword %22 stack_buffer .decl.word %23 block_ip .decl.dword %24 barrier_id .decl.dword %25 thread_number .decl.dword %26 work_dimension .decl.dword %27 zero .decl.dword %28 one .decl.word %29 retVal .decl.dword %30 dwblockip .decl.qword %31 profiling_buffer_pointer .decl.dword %32 profiling_timestamps0 .decl.dword %33 profiling_timestamps1 .decl.dword %34 profiling_timestamps2 .decl.dword %35 profiling_timestamps3 .decl.dword %36 profiling_timestamps4 .decl.dword %37 threadid .decl.qword %38 constant_addrspace_start .decl.qword %39 stack_size .decl.qword %40 enqueue_buffer_pointer .decl.dword %41 .decl.dword %42 .decl.dword %43 .decl.dword %44 .decl.dword %45 .decl.dword %46 .decl.dword %47 .decl.dword %48 .decl.dword %49 .decl.dword %50 .decl.dword %51 .decl.dword %52 .decl.dword %53 .decl.dword %54 .decl.dword %55 .decl.dword %56 .decl.dword %57 .decl.dword %58 .decl.dword %59 .decl.dword %60 .decl.dword %61 .decl.dword %62 .decl.dword %63 .decl.dword %64 .decl.dword %65 .decl.bool %66 .decl.dword %67 .decl.dword %68 .decl.dword %69 .decl.dword %70 .decl.dword %71 .decl.dword %72 .decl.dword %73 .decl.dword %74 .decl.dword %75 .decl.dword %76 .decl.dword %77 .decl.bool %78 .decl.dword %79 .decl.dword %80 .decl.bool %81 .decl.dword %82 .decl.dword %83 .decl.bool %84 .decl.dword %85 .decl.dword %86 .decl.bool %87 .decl.dword %88 .decl.dword %89 .decl.dword %90 .decl.dword %91 .decl.dword %92 .decl.dword %93 .decl.dword %94 .decl.dword %95 .decl.dword %96 .decl.dword %97 .decl.dword %98 .decl.dword %99 .decl.dword %100 .decl.dword %101 .decl.dword %102 .decl.dword %103 .decl.dword %104 .decl.dword %105 .decl.dword %106 .decl.dword %107 .decl.dword %108 .decl.bool %109 .decl.dword %110 .decl.dword %111 .decl.dword %112 .decl.dword %113 .decl.dword %114 .decl.dword %115 .decl.dword %116 .decl.dword %117 .decl.dword %118 .decl.dword %119 .decl.dword %120 .decl.dword %121 .decl.dword %122 .decl.bool %123 .decl.dword %124 .decl.dword %125 .decl.dword %126 .decl.dword %127 .decl.dword %128 .decl.dword %129 .decl.dword %130 .decl.dword %131 .decl.dword %132 .decl.dword %133 .decl.dword %134 .decl.dword %135 .decl.dword %136 .decl.dword %137 .decl.dword %138 .decl.dword %139 .decl.dword %140 .decl.dword %141 .decl.dword %142 .decl.dword %143 .decl.dword %144 .decl.dword %145 .decl.dword %146 .decl.dword %147 .decl.dword %148 .decl.dword %149 .decl.dword %150 .decl.dword %151 .decl.bool %152 .decl.dword %153 .decl.dword %154 .decl.dword %155 .decl.dword %156 .decl.dword %157 .decl.dword %158 .decl.dword %159 .decl.dword %160 .decl.dword %161 .decl.dword %162 .decl.dword %163 .decl.dword %164 .decl.dword %165 .decl.dword %166 .decl.dword %167 .decl.dword %168 .decl.dword %169 .decl.dword %170 .decl.dword %171 .decl.dword %172 .decl.dword %173 .decl.dword %174 .decl.dword %175 .decl.dword %176 .decl.dword %177 .decl.dword %178 .decl.dword %179 .decl.dword %180 .decl.dword %181 .decl.dword %182 .decl.dword %183 .decl.dword %184 .decl.dword %185 .decl.qword %186 .decl.qword %187 .decl.dword %188 .decl.dword %189 .decl.dword %190 .decl.dword %191 .decl.dword %192 .decl.dword %193 .decl.dword %194 .decl.bool %195 .decl.dword %196 .decl.bool %197 .decl.dword %198 .decl.dword %199 .decl.bool %200 .decl.dword %201 .decl.dword %202 .decl.dword %203 .decl.dword %204 .decl.dword %205 .decl.dword %206 .decl.dword %207 .decl.dword %208 .decl.dword %209 .decl.bool %210 .decl.bool %211 .decl.bool %212 .decl.bool %213 .decl.dword %214 .decl.dword %215 .decl.bool %216 .decl.dword %217 .decl.bool %218 .decl.dword %219 .decl.dword %220 .decl.bool %221 .decl.dword %222 .decl.bool %223 .decl.dword %224 .decl.dword %225 .decl.bool %226 .decl.dword %227 .decl.bool %228 .decl.word %229 .decl.word %230 .decl.dword %231 .decl.dword %232 .decl.word %233 .decl.word %234 .decl.dword %235 .decl.dword %236 .decl.word %237 .decl.word %238 .decl.dword %239 .decl.dword %240 .decl.dword %241 .decl.dword %242 .decl.dword %243 .decl.dword %244 .decl.dword %245 .decl.dword %246 .decl.dword %247 .decl.dword %248 .decl.dword %249 .decl.dword %250 .decl.dword %251 .decl.dword %252 .decl.dword %253 .decl.dword %254 .decl.dword %255 .decl.dword %256 .decl.dword %257 .decl.dword %258 .decl.dword %259 .decl.dword %260 .decl.dword %261 .decl.dword %262 .decl.dword %263 .decl.dword %264 .decl.dword %265 .decl.dword %266 .decl.dword %267 .decl.dword %268 .decl.dword %269 .decl.dword %270 .decl.dword %271 .decl.dword %272 .decl.dword %273 .decl.dword %274 .decl.dword %275 .decl.dword %276 .decl.dword %277 .decl.dword %278 .decl.dword %279 .decl.dword %280 .decl.dword %281 .decl.dword %282 .decl.dword %283 .decl.dword %284 .decl.dword %285 .decl.dword %286 .decl.dword %287 .decl.dword %288 .decl.dword %289 .decl.dword %290 .decl.dword %291 .decl.dword %292 .decl.dword %293 .decl.dword %294 .decl.dword %295 .decl.dword %296 .decl.dword %297 .decl.dword %298 .decl.dword %299 .decl.dword %300 .decl.dword %301 .decl.dword %302 .decl.dword %303 .decl.dword %304 .decl.dword %305 .decl.dword %306 .decl.dword %307 .decl.dword %308 .decl.dword %309 .decl.dword %310 .decl.dword %311 .decl.dword %312 .decl.dword %313 .decl.dword %314 .decl.dword %315 .decl.dword %316 .decl.dword %317 .decl.dword %318 .decl.dword %319 .decl.dword %320 .decl.dword %321 .decl.dword %322 .decl.dword %323 .decl.dword %324 .decl.dword %325 .decl.dword %326 .decl.dword %327 .decl.dword %328 .decl.dword %329 .decl.dword %330 .decl.dword %331 .decl.dword %332 .decl.dword %333 .decl.dword %334 .decl.dword %335 .decl.qword %336 .decl.bool %337 .decl.dword %338 .decl.bool %339 .decl.dword %340 .decl.dword %341 .decl.dword %342 .decl.dword %343 .decl.bool %344 .decl.dword %345 .decl.bool %346 .decl.dword %347 .decl.bool %348 .decl.dword %349 .decl.dword %350 .decl.dword %351 .decl.dword %352 .decl.dword %353 .decl.dword %354 .decl.dword %355 .decl.dword %356 .decl.dword %357 .decl.dword %358 .decl.dword %359 .decl.dword %360 .decl.dword %361 .decl.word %362 .decl.dword %363 .decl.dword %364 .decl.word %365 .decl.dword %366 .decl.dword %367 .decl.word %368 .decl.dword %369 .decl.dword %370 .decl.dword %371 .decl.dword %372 .decl.dword %373 .decl.dword %374 .decl.dword %375 .decl.dword %376 ## 11 input registers ## decl_input.global %41 pDst decl_input.global %42 pSrc decl_input.value %43 nRowPixels decl_input.value %44 nPlanePixels decl_input.value %45 nWidth decl_input.value %46 nHeight decl_input.value %47 nMip decl_input.value %48 fSharpness decl_input.value %49 nSensitivity decl_input.value %50 destFormat decl_input.value %51 fWhite ## 0 output register ## ## 0 pushed register ## 13 blocks ## LABEL $0 LOADI.uint32 %52 4 LOADI.uint32 %53 1604 LABEL $1 MUL.int32 %54 %3 %12 ADD.int32 %55 %54 %0 ADD.int32 %56 %55 %18 MUL.int32 %57 %4 %13 ADD.int32 %58 %57 %1 ADD.int32 %59 %58 %19 LOADI.uint32 %247 4 SHL.int32 %60 %1 %247 ADD.int32 %61 %60 %0 SHL.int32 %62 %3 %247 LOADI.uint32 %249 4294967294 ADD.int32 %63 %62 %249 SHL.int32 %64 %4 %247 ADD.int32 %65 %64 %249 LOADI.uint32 %252 400 GE.int32 %66 %61 %252 LOADI.uint32 %253 1 SHL.int32 %67 %44 %253 IF !<%66> -> label$18 LABEL $2 LOADI.uint32 %254 1 SHL.int32 %68 %46 %254 LOADI.uint32 %255 4294967294 ADD.int32 %69 %68 %255 SHL.int32 %70 %45 %254 ADD.int32 %71 %70 %255 MOV.int32 %73 %61 LABEL $3 LOADI.uint32 %258 20 REM.int32 %74 %73 %258 ADD.int32 %75 %63 %74 DIV.int32 %76 %73 %258 ADD.int32 %77 %65 %76 LOADI.uint32 %260 0 LT.int32 %78 %75 %260 SUB.int32 %79 %260 %75 SEL.int32 %80 %78 %79 %75 LT.int32 %81 %80 %45 SUB.int32 %82 %71 %80 SEL.int32 %83 %81 %80 %82 LT.int32 %84 %77 %260 SUB.int32 %85 %260 %77 SEL.int32 %86 %84 %85 %77 LT.int32 %87 %86 %46 SUB.int32 %88 %69 %86 SEL.int32 %89 %87 %86 %88 MUL.int32 %90 %89 %43 ADD.int32 %91 %90 %83 LOADI.uint32 %264 4 MUL.int32 %92 %264 %91 ADD.int32 %93 %42 %92 SUB.uint32 %265 %93 %42 LOAD.float.global.aligned {%94} %265 bti:3 ADD.int32 %95 %91 %44 MUL.int32 %96 %264 %95 ADD.int32 %97 %42 %96 SUB.uint32 %267 %97 %42 LOAD.float.global.aligned {%98} %267 bti:3 ADD.int32 %99 %91 %67 MUL.int32 %100 %264 %99 ADD.int32 %101 %42 %100 SUB.uint32 %269 %101 %42 LOAD.float.global.aligned {%102} %269 bti:3 LOADI.float %270 0.625 MUL.float %103 %98 %270 LOADI.float %271 0.25 MAD.float %104 %271 %94 %103 LOADI.float %272 0.125 MAD.float %105 %272 %102 %104 MUL.int32 %106 %264 %73 ADD.int32 %107 %52 %106 STORE.float.local.aligned %107 {%105} bti:254 LOADI.uint32 %276 256 ADD.int32 %73 %73 %276 LOADI.uint32 %277 400 LT.int32 %109 %73 %277 WHILE<%109> -> label$3 ENDIF -> label$18 LABEL $4 SYNC.workgroup.local_read.local_write MUL.int32 %110 %59 %43 ADD.int32 %111 %110 %56 LOADI.uint32 %278 4 MUL.int32 %112 %278 %111 ADD.int32 %113 %42 %112 SUB.uint32 %279 %113 %42 LOAD.float.global.aligned {%114} %279 bti:3 ADD.int32 %115 %111 %44 MUL.int32 %116 %278 %115 ADD.int32 %117 %42 %116 SUB.uint32 %281 %117 %42 LOAD.float.global.aligned {%118} %281 bti:3 ADD.int32 %119 %111 %67 MUL.int32 %120 %278 %119 ADD.int32 %121 %42 %120 SUB.uint32 %283 %121 %42 LOAD.float.global.aligned {%122} %283 bti:3 LOADI.uint32 %284 320 GE.int32 %123 %61 %284 MOV.int32 %125 %61 BRA<%123> -> label$6 LABEL $5 LOADI.uint32 %285 40 ADD.int32 %126 %125 %285 LOADI.uint32 %286 4 MUL.int32 %127 %286 %125 ADD.int32 %128 %52 %127 LOADI.uint32 %287 0 LOAD.float.local.aligned {%129} %128 bti:254 LOADI.uint32 %289 20 ADD.int32 %130 %125 %289 MUL.int32 %131 %286 %130 ADD.int32 %132 %52 %131 LOAD.float.local.aligned {%133} %132 bti:254 LOADI.uint32 %293 60 ADD.int32 %134 %125 %293 MUL.int32 %135 %286 %134 ADD.int32 %136 %52 %135 LOAD.float.local.aligned {%137} %136 bti:254 ADD.float %138 %133 %137 LOADI.float %297 2 MAD.float %139 %297 %138 %129 MUL.int32 %140 %286 %126 ADD.int32 %141 %52 %140 LOAD.float.local.aligned {%142} %141 bti:254 LOADI.float %301 4 MAD.float %143 %301 %142 %139 LOADI.uint32 %302 80 ADD.int32 %144 %125 %302 MUL.int32 %145 %286 %144 ADD.int32 %146 %52 %145 LOAD.float.local.aligned {%147} %146 bti:254 ADD.float %148 %147 %143 MUL.int32 %149 %286 %125 ADD.int32 %150 %53 %149 STORE.float.local.aligned %150 {%148} bti:254 LOADI.uint32 %309 256 ADD.int32 %125 %125 %309 LOADI.uint32 %310 320 LT.int32 %152 %125 %310 WHILE<%152> -> label$5 LABEL $6 SYNC.workgroup.local_read.local_write LOADI.uint32 %311 2 ADD.int32 %153 %0 %311 LOADI.uint32 %312 20 MUL.int32 %154 %1 %312 ADD.int32 %155 %153 %154 LOADI.float %313 0.625 MUL.float %156 %118 %313 LOADI.float %314 0.25 MAD.float %157 %314 %114 %156 LOADI.float %315 0.125 MAD.float %158 %315 %122 %157 LOADI.uint32 %316 31 AND.int32 %159 %47 %316 LOADI.uint32 %317 1 SHL.int32 %160 %317 %159 CVT.float.int32 %161 %160 LOADI.float %318 1 DIV.float %162 %318 %161 CVT.float.int32 %163 %49 LOADI.float %319 128 MUL.float %164 %163 %319 LOADI.float %320 65535 DIV.float %165 %164 %320 LOADI.float %321 0.5 MUL.float %166 %165 %321 DIV.float %167 %318 %166 ADD.int32 %168 %154 %0 LOADI.uint32 %323 4 MUL.int32 %169 %323 %168 ADD.int32 %170 %53 %169 LOADI.uint32 %324 0 LOAD.float.local.aligned {%171 %172 %173} %170 bti:254 ADD.int32 %174 %155 %317 MUL.int32 %175 %323 %174 ADD.int32 %176 %53 %175 LOAD.float.local.aligned {%177} %176 bti:254 ADD.float %178 %172 %177 LOADI.float %330 2 MAD.float %179 %330 %178 %171 LOADI.float %331 4 MAD.float %180 %331 %173 %179 ADD.int32 %181 %155 %311 MUL.int32 %182 %323 %181 ADD.int32 %183 %53 %182 LOAD.float.local.aligned {%184} %183 bti:254 ADD.float %185 %184 %180 CVT.double.float %186 %185 LOADI.double %336 0.01 MUL.double %187 %186 %336 CVT.float.double %188 %187 SUB.float %189 %158 %188 MUL.float %190 %189 %48 ABS.float %191 %190 SUB.float %192 %191 %166 MUL.float %193 %190 %192 MUL.float %194 %167 %193 LT.float %195 %191 %166 LOADI.float %338 0 SEL.float %196 %195 %338 %194 LT.float %197 %191 %165 SEL.float %198 %197 %196 %190 MUL.float %199 %162 %198 GT.int32 %200 %47 %324 MUL.float %201 %199 %321 SEL.float %202 %200 %201 %338 ADD.float %203 %199 %202 ADD.float %204 %114 %203 ADD.float %205 %118 %203 ADD.float %206 %122 %203 GE.float %344 %204 %338 SEL.float %207 %344 %204 %338 GE.float %346 %205 %338 SEL.float %208 %346 %205 %338 GE.float %348 %206 %338 SEL.float %209 %348 %206 %338 LT.int32 %210 %56 %45 LT.int32 %211 %59 %46 AND.bool %212 %210 %211 BRA<%212> -> label$8 LABEL $7 BRA -> label$11 LABEL $8 LOADI.uint32 %349 0 EQ.int32 %213 %50 %349 IF !<%213> -> label$17 LABEL $9 LOADI.float %350 0.5 MAD.float %214 %207 %51 %350 CVT.int32.float %215 %214 LOADI.uint32 %351 65535 LT.int32 %216 %215 %351 SEL.int32 %217 %216 %215 %351 LOADI.uint32 %353 0 GT.int32 %218 %215 %353 MAD.float %219 %208 %51 %350 CVT.int32.float %220 %219 LT.int32 %221 %220 %351 SEL.int32 %222 %221 %220 %351 GT.int32 %223 %220 %353 MAD.float %224 %209 %51 %350 CVT.int32.float %225 %224 LT.int32 %226 %225 %351 SEL.int32 %227 %226 %225 %351 GT.int32 %228 %225 %353 CVT.int16.int32 %229 %217 LOADI.uint16 %362 0 SEL.int16 %230 %218 %229 %362 LOADI.uint32 %363 2 MUL.int32 %231 %363 %111 ADD.int32 %232 %41 %231 SUB.uint32 %364 %232 %41 STORE.int16.global.unaligned %364 {%230} bti:2 CVT.int16.int32 %233 %222 SEL.int16 %234 %223 %233 %362 MUL.int32 %235 %363 %115 ADD.int32 %236 %41 %235 SUB.uint32 %367 %236 %41 STORE.int16.global.unaligned %367 {%234} bti:2 CVT.int16.int32 %237 %227 SEL.int16 %238 %228 %237 %362 MUL.int32 %239 %363 %119 ADD.int32 %240 %41 %239 SUB.uint32 %370 %240 %41 STORE.int16.global.unaligned %370 {%238} bti:2 LABEL $10 ELSE -> label$16 <**>label: 17 LOADI.uint32 %371 4 MUL.int32 %241 %371 %111 ADD.int32 %242 %41 %241 SUB.uint32 %372 %242 %41 STORE.float.global.aligned %372 {%207} bti:2 MUL.int32 %243 %371 %115 ADD.int32 %244 %41 %243 SUB.uint32 %374 %244 %41 STORE.float.global.aligned %374 {%208} bti:2 MUL.int32 %245 %371 %119 ADD.int32 %246 %41 %245 SUB.uint32 %376 %246 %41 STORE.float.global.aligned %376 {%209} bti:2 ENDIF -> label$16 LABEL $11 LABEL $12 RET .end_function ASSERTION FAILED: sel.hasDoubleType() at file /builddir/build/BUILD/Beignet-1.3.0-Source/backend/src/backend/gen_insn_selection.cpp, function void gbe::ConvertInstructionPattern::convertBetweenFloatDouble(gbe::Selection::Opaque&, const gbe::ir::ConvertInstruction&, bool&) const, line 6148