Selecting FBConfig GLX_FBCONFIG_ID=131 GLX_BUFFER_SIZE=32 GLX_DOUBLEBUFFER=1 GLX_RED_SIZE=8 GLX_GREEN_SIZE=8 GLX_BLUE_SIZE=8 GLX_ALPHA_SIZE=8 GLX_DEPTH_SIZE=24 GLX_STENCIL_SIZE=8 GLX_SAMPLES_ARB=0 GLX_SAMPLE_BUFFERS_ARB=0 GLX_CONFIG_CAVEAT=NONE Desktop is 1920 x 1200 @ 60 Hz Initialize engine version: 5.2.5f1 (ad2d0368e248) GfxDevice: creating device client; threaded=1 GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX: 4164144 OpenGL: Version: OpenGL 3.0 [3.0 Mesa 12.1.0-devel (git-0e85ff3)] Renderer: Gallium 0.4 on AMD TONGA (DRM 3.2.0 / 4.7.5-gentoo, LLVM 4.0.0) Vendor: X.Org VRAM: 4067 MB Extensions: GL_ARB_multisample GL_EXT_abgr GL_EXT_bgra GL_EXT_blend_color GL_EXT_blend_minmax GL_EXT_blend_subtract GL_EXT_copy_texture GL_EXT_polygon_offset GL_EXT_subtexture GL_EXT_texture_object GL_EXT_vertex_array GL_EXT_compiled_vertex_array GL_EXT_texture GL_EXT_texture3D GL_IBM_rasterpos_clip GL_ARB_point_parameters GL_EXT_draw_range_elements GL_EXT_packed_pixels GL_EXT_point_parameters GL_EXT_rescale_normal GL_EXT_separate_specular_color GL_EXT_texture_edge_clamp GL_SGIS_generate_mipmap GL_SGIS_texture_border_clamp GL_SGIS_texture_edge_clamp GL_SGIS_texture_lod GL_ARB_framebuffer_sRGB GL_ARB_multitexture GL_EXT_framebuffer_sRGB GL_IBM_multimode_draw_arrays GL_IBM_texture_mirrored_repeat GL_ARB_texture_cube_map GL_ARB_texture_env_add GL_ARB_transpose_matrix GL_EXT_blend_func_separate GL_EXT_fog_coord GL_EXT_multi_draw_arrays GL_EXT_secondary_color GL_EXT_texture_env_add GL_EXT_texture_filter_anisotropic GL_EXT_texture_lod_bias GL_INGR_blend_func_separate GL_NV_blend_square GL_NV_light_max_exponent GL_NV_texgen_reflection GL_NV_texture_env_combine4 GL_S3_s3tc GL_SUN_multi_draw_arrays GL_ARB_texture_border_clamp GL_ARB_texture_compression GL_EXT_framebuffer_object GL_EXT_texture_compression_s3tc GL_EXT_texture_env_combine GL_EXT_texture_env_dot3 GL_MESA_window_pos GL_NV_packed_depth_stencil GL_NV_texture_rectangle GL_ARB_depth_texture GL_ARB_occlusion_query GL_ARB_shadow GL_ARB_texture_env_combine GL_ARB_texture_env_crossbar GL_ARB_texture_env_dot3 GL_ARB_texture_mirrored_repeat GL_ARB_window_pos GL_ATI_fragment_shader GL_EXT_stencil_two_side GL_EXT_texture_cube_map GL_NV_depth_clamp GL_NV_fog_distance GL_APPLE_packed_pixels GL_APPLE_vertex_array_object GL_ARB_draw_buffers GL_ARB_fragment_program GL_ARB_fragment_shader GL_ARB_shader_objects GL_ARB_vertex_program GL_ARB_vertex_shader GL_ATI_draw_buffers GL_ATI_texture_env_combine3 GL_ATI_texture_float GL_EXT_depth_bounds_test GL_EXT_shadow_funcs GL_EXT_stencil_wrap GL_MESA_pack_invert GL_NV_primitive_restart GL_ARB_depth_clamp GL_ARB_fragment_program_shadow GL_ARB_half_float_pixel GL_ARB_occlusion_query2 GL_ARB_point_sprite GL_ARB_shading_language_100 GL_ARB_sync GL_ARB_texture_non_power_of_two GL_ARB_vertex_buffer_object GL_ATI_blend_equation_separate GL_EXT_blend_equation_separate GL_OES_read_format GL_ARB_color_buffer_float GL_ARB_pixel_buffer_object GL_ARB_texture_compression_rgtc GL_ARB_texture_float GL_ARB_texture_rectangle GL_ATI_texture_compression_3dc GL_EXT_packed_float GL_EXT_pixel_buffer_object GL_EXT_texture_compression_dxt1 GL_EXT_texture_compression_rgtc GL_EXT_texture_mirror_clamp GL_EXT_texture_rectangle GL_EXT_texture_sRGB GL_EXT_texture_shared_exponent GL_ARB_framebuffer_object GL_EXT_framebuffer_blit GL_EXT_framebuffer_multisample GL_EXT_packed_depth_stencil GL_ARB_vertex_array_object GL_ATI_separate_stencil GL_ATI_texture_mirror_once GL_EXT_draw_buffers2 GL_EXT_draw_instanced GL_EXT_gpu_program_parameters GL_EXT_texture_array GL_EXT_texture_compression_latc GL_EXT_texture_integer GL_EXT_texture_sRGB_decode GL_EXT_timer_query GL_OES_EGL_image GL_AMD_performance_monitor GL_ARB_copy_buffer GL_ARB_depth_buffer_float GL_ARB_draw_instanced GL_ARB_half_float_vertex GL_ARB_instanced_arrays GL_ARB_map_buffer_range GL_ARB_texture_rg GL_ARB_texture_swizzle GL_ARB_vertex_array_bgra GL_EXT_texture_swizzle GL_EXT_vertex_array_bgra GL_NV_conditional_render GL_AMD_conservative_depth GL_AMD_draw_buffers_blend GL_AMD_seamless_cubemap_per_texture GL_AMD_shader_stencil_export GL_ARB_ES2_compatibility GL_ARB_blend_func_extended GL_ARB_debug_output GL_ARB_draw_buffers_blend GL_ARB_draw_elements_base_vertex GL_ARB_explicit_attrib_location GL_ARB_fragment_coord_conventions GL_ARB_provoking_vertex GL_ARB_sample_shading GL_ARB_sampler_objects GL_ARB_seamless_cube_map GL_ARB_shader_stencil_export GL_ARB_shader_texture_lod GL_ARB_texture_cube_map_array GL_ARB_texture_gather GL_ARB_texture_multisample GL_ARB_texture_query_lod GL_ARB_texture_rgb10_a2ui GL_ARB_uniform_buffer_object GL_ARB_vertex_type_2_10_10_10_rev GL_ATI_meminfo GL_EXT_provoking_vertex GL_EXT_texture_snorm GL_MESA_texture_signed_rgba GL_NV_texture_barrier GL_ARB_get_program_binary GL_ARB_robustness GL_ARB_separate_shader_objects GL_ARB_shader_bit_encoding GL_ARB_shader_precision GL_ARB_texture_compression_bptc GL_ARB_timer_query GL_ARB_transform_feedback2 GL_ARB_transform_feedback3 GL_NV_vdpau_interop GL_ANGLE_texture_compression_dxt3 GL_ANGLE_texture_compression_dxt5 GL_ARB_base_instance GL_ARB_compressed_texture_pixel_storage GL_ARB_conservative_depth GL_ARB_internalformat_query GL_ARB_map_buffer_alignment GL_ARB_shader_atomic_counters GL_ARB_shader_image_load_store GL_ARB_shading_language_420pack GL_ARB_shading_language_packing GL_ARB_texture_storage GL_ARB_transform_feedback_instanced GL_EXT_framebuffer_multisample_blit_scaled GL_EXT_transform_feedback GL_AMD_shader_trinary_minmax GL_ARB_ES3_compatibility GL_ARB_arrays_of_arrays GL_ARB_clear_buffer_object GL_ARB_compute_shader GL_ARB_copy_image GL_ARB_explicit_uniform_location GL_ARB_framebuffer_no_attachments GL_ARB_invalidate_subdata GL_ARB_program_interface_query GL_ARB_robust_buffer_access_behavior GL_ARB_shader_image_size GL_ARB_shader_storage_buffer_object GL_ARB_stencil_texturing GL_ARB_texture_query_levels GL_ARB_texture_storage_multisample GL_ARB_texture_view GL_ARB_vertex_attrib_binding GL_KHR_debug GL_AMD_pinned_memory GL_ARB_buffer_storage GL_ARB_clear_texture GL_ARB_internalformat_query2 GL_ARB_multi_bind GL_ARB_query_buffer_object GL_ARB_seamless_cubemap_per_texture GL_ARB_shader_draw_parameters GL_ARB_texture_mirror_clamp_to_edge GL_ARB_texture_stencil8 GL_ARB_vertex_type_10f_11f_11f_rev GL_EXT_shader_integer_mix GL_NVX_gpu_memory_info GL_ARB_clip_control GL_ARB_conditional_render_inverted GL_ARB_cull_distance GL_ARB_derivative_control GL_ARB_get_texture_sub_image GL_ARB_pipeline_statistics_query GL_ARB_shader_texture_image_samples GL_ARB_texture_barrier GL_EXT_polygon_offset_clamp GL_KHR_context_flush_control GL_KHR_robust_buffer_access_behavior GL_ARB_shader_atomic_counter_ops GL_MESA_shader_integer_functions GLX Extensions: GLX_ARB_create_context GLX_ARB_create_context_profile GLX_ARB_create_context_robustness GLX_ARB_fbconfig_float GLX_ARB_framebuffer_sRGB GLX_ARB_get_proc_address GLX_ARB_multisample GLX_EXT_import_context GLX_EXT_visual_info GLX_EXT_visual_rating GLX_EXT_framebuffer_sRGB GLX_EXT_create_context_es2_profile GLX_MESA_copy_sub_buffer GLX_MESA_multithread_makecurrent GLX_MESA_query_renderer GLX_MESA_swap_control GLX_OML_swap_method GLX_OML_sync_control GLX_SGI_make_current_read GLX_SGI_swap_control GLX_SGI_video_sync GLX_SGIS_multisample GLX_SGIX_fbconfig GLX_SGIX_pbuffer GLX_SGIX_visual_select_group GLX_EXT_texture_from_pixmap GLX_INTEL_swap_event GLX_EXT_buffer_age Setting maxVSyncInterval to 4 GL: Detected 4067 MB VRAM !amdgpu.uniform !0 %86 = load <16 x i8>, <16 x i8> addrspace(2)* %85, align 16, !invariant.load !0 %87 = call float @llvm.SI.load.const(<16 x i8> %86, i32 60) %88 = fmul float %22, %87 %89 = fadd float %88, %73 %90 = and i32 %9, 1 %91 = icmp eq i32 %90, 0 br i1 %91, label %endif-block, label %if-true-block if-true-block: ; preds = %main_body %92 = call float @llvm.AMDGPU.clamp.(float %26, float 0.000000e+00, float 1.000000e+00) %93 = call float @llvm.AMDGPU.clamp.(float %27, float 0.000000e+00, float 1.000000e+00) %94 = call float @llvm.AMDGPU.clamp.(float %28, float 0.000000e+00, float 1.000000e+00) %95 = call float @llvm.AMDGPU.clamp.(float %29, float 0.000000e+00, float 1.000000e+00) br label %endif-block endif-block: ; preds = %main_body, %if-true-block %.03 = phi float [ %95, %if-true-block ], [ %29, %main_body ] %.02 = phi float [ %94, %if-true-block ], [ %28, %main_body ] %.01 = phi float [ %93, %if-true-block ], [ %27, %main_body ] %.0 = phi float [ %92, %if-true-block ], [ %26, %main_body ] %96 = bitcast i32 %12 to float %97 = insertvalue <{ float, float, float }> undef, float %96, 2 call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 32, i32 0, float %.0, float %.01, float %.02, float %.03) call void @llvm.SI.export(i32 15, i32 0, i32 1, i32 12, i32 0, float %76, float %81, float %84, float %89) ret <{ float, float, float }> %97 } ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.vs.load.input(<16 x i8>, i32, i32) #0 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #0 ; Function Attrs: nounwind readnone declare float @llvm.AMDGPU.clamp.(float, float, float) #0 ; Function Attrs: nounwind declare void @llvm.SI.export(i32, i32, i32, i32, i32, float, float, float, float) #1 attributes #0 = { nounwind readnone } attributes #1 = { nounwind } !0 = !{} VERT PROPERTY NEXT_SHADER FRAG DCL IN[0] DCL OUT[0], POSITION DCL CONST[0..3] DCL TEMP[0], LOCAL 0: MUL TEMP[0], CONST[0], IN[0].xxxx 1: MAD TEMP[0], CONST[1], IN[0].yyyy, TEMP[0] 2: MAD TEMP[0], CONST[2], IN[0].zzzz, TEMP[0] 3: MAD TEMP[0], CONST[3], IN[0].wwww, TEMP[0] 4: MOV OUT[0], TEMP[0] 5: END radeonsi: Compiling shader 3 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_vs <{ float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32, i32, i32, i32, i32) { main_body: %15 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 0, !amdgpu.uniform !0 %16 = load <16 x i8>, <16 x i8> addrspace(2)* %15, align 16, !invariant.load !0 %17 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %16, i32 0, i32 %14) %18 = extractelement <4 x float> %17, i32 0 %19 = extractelement <4 x float> %17, i32 1 %20 = extractelement <4 x float> %17, i32 2 %21 = extractelement <4 x float> %17, i32 3 %22 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %23 = load <16 x i8>, <16 x i8> addrspace(2)* %22, align 16, !invariant.load !0 %24 = call float @llvm.SI.load.const(<16 x i8> %23, i32 0) %25 = fmul float %24, %18 %26 = call float @llvm.SI.load.const(<16 x i8> %23, i32 4) %27 = fmul float %26, %18 %28 = call float @llvm.SI.load.const(<16 x i8> %23, i32 8) %29 = fmul float %28, %18 %30 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %31 = load <16 x i8>, <16 x i8> addrspace(2)* %30, align 16, !invariant.load !0 %32 = call float @llvm.SI.load.const(<16 x i8> %31, i32 12) %33 = fmul float %32, %18 %34 = call float @llvm.SI.load.const(<16 x i8> %31, i32 16) %35 = fmul float %34, %19 %36 = fadd float %35, %25 %37 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %38 = load <16 x i8>, <16 x i8> addrspace(2)* %37, align 16, !invariant.load !0 %39 = call float @llvm.SI.load.const(<16 x i8> %38, i32 20) %40 = fmul float %39, %19 %41 = fadd float %40, %27 %42 = call float @llvm.SI.load.const(<16 x i8> %38, i32 24) %43 = fmul float %42, %19 %44 = fadd float %43, %29 %45 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %46 = load <16 x i8>, <16 x i8> addrspace(2)* %45, align 16, !invariant.load !0 %47 = call float @llvm.SI.load.const(<16 x i8> %46, i32 28) %48 = fmul float %47, %19 %49 = fadd float %48, %33 %50 = call float @llvm.SI.load.const(<16 x i8> %46, i32 32) %51 = fmul float %50, %20 %52 = fadd float %51, %36 %53 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %54 = load <16 x i8>, <16 x i8> addrspace(2)* %53, align 16, !invariant.load !0 %55 = call float @llvm.SI.load.const(<16 x i8> %54, i32 36) %56 = fmul float %55, %20 %57 = fadd float %56, %41 %58 = call float @llvm.SI.load.const(<16 x i8> %54, i32 40) %59 = fmul float %58, %20 %60 = fadd float %59, %44 %61 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %62 = load <16 x i8>, <16 x i8> addrspace(2)* %61, align 16, !invariant.load !0 %63 = call float @llvm.SI.load.const(<16 x i8> %62, i32 44) %64 = fmul float %63, %20 %65 = fadd float %64, %49 %66 = call float @llvm.SI.load.const(<16 x i8> %62, i32 48) %67 = fmul float %66, %21 %68 = fadd float %67, %52 %69 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %70 = load <16 x i8>, <16 x i8> addrspace(2)* %69, align 16, !invariant.load !0 %71 = call float @llvm.SI.load.const(<16 x i8> %70, i32 52) %72 = fmul float %71, %21 %73 = fadd float %72, %57 %74 = call float @llvm.SI.load.const(<16 x i8> %70, i32 56) %75 = fmul float %74, %21 %76 = fadd float %75, %60 %77 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %78 = load <16 x i8>, <16 x i8> addrspace(2)* %77, align 16, !invariant.load !0 %79 = call float @llvm.SI.load.const(<16 x i8> %78, i32 60) %80 = fmul float %79, %21 %81 = fadd float %80, %65 %82 = bitcast i32 %12 to float %83 = insertvalue <{ float, float, float }> undef, float %82, 2 call void @llvm.SI.export(i32 15, i32 0, i32 1, i32 12, i32 0, float %68, float %73, float %76, float %81) ret <{ float, float, float }> %83 } ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.vs.load.input(<16 x i8>, i32, i32) #0 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #0 ; Function Attrs: nounwind declare void @llvm.SI.export(i32, i32, i32, i32, i32, float, float, float, float) #1 attributes #0 = { nounwind readnone } attributes #1 = { nounwind } !0 = !{} FRAG DCL OUT[0], COLOR IMM[0] FLT32 { 1.0000, 0.0000, 0.0000, 0.0000} 0: MOV OUT[0], IMM[0].xyxx 1: END radeonsi: Compiling shader 4 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_ps <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), float inreg, i32 inreg, <2 x i32>, <2 x i32>, <2 x i32>, <3 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, float, float, float, float, float, i32, i32, float, i32) #0 { main_body: %23 = bitcast float %5 to i32 %24 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> undef, i32 %23, 10 %25 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %24, float 1.000000e+00, 11 %26 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %25, float 0.000000e+00, 12 %27 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %26, float 1.000000e+00, 13 %28 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %27, float 1.000000e+00, 14 %29 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %28, float %21, 24 ret <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %29 } attributes #0 = { "InitialPSInputAddr"="36983" } VERT PROPERTY NEXT_SHADER FRAG DCL IN[0] DCL IN[1] DCL IN[2] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] DCL OUT[2], GENERIC[1] DCL CONST[0..15] DCL TEMP[0..6], LOCAL IMM[0] FLT32 { 1.0000, 0.0000, 0.0000, 0.0000} 0: MOV TEMP[0].x, CONST[7].xxxx 1: MOV TEMP[0].y, CONST[8].xxxx 2: MOV TEMP[0].z, CONST[9].xxxx 3: MOV TEMP[1].x, CONST[7].yyyy 4: MOV TEMP[1].y, CONST[8].yyyy 5: MOV TEMP[1].z, CONST[9].yyyy 6: MOV TEMP[2].x, CONST[7].zzzz 7: MOV TEMP[2].y, CONST[8].zzzz 8: MOV TEMP[2].z, CONST[9].zzzz 9: MUL TEMP[0].xyz, TEMP[0].xyzz, IN[1].xxxx 10: MAD TEMP[0].xyz, TEMP[1].xyzz, IN[1].yyyy, TEMP[0].xyzz 11: MAD TEMP[0].xyz, TEMP[2].xyzz, IN[1].zzzz, TEMP[0].xyzz 12: DP3 TEMP[1].x, TEMP[0].xyzz, TEMP[0].xyzz 13: RSQ TEMP[1].x, TEMP[1].xxxx 14: MUL TEMP[0].xyz, TEMP[0].xyzz, TEMP[1].xxxx 15: MOV TEMP[1].w, IMM[0].xxxx 16: MOV TEMP[1].xyz, TEMP[0].xyzx 17: DP4 TEMP[2].x, CONST[0], TEMP[1] 18: DP4 TEMP[3].x, CONST[1], TEMP[1] 19: MOV TEMP[2].y, TEMP[3].xxxx 20: DP4 TEMP[1].x, CONST[2], TEMP[1] 21: MOV TEMP[2].z, TEMP[1].xxxx 22: MUL TEMP[1], TEMP[0].xyzz, TEMP[0].yzzx 23: DP4 TEMP[3].x, CONST[3], TEMP[1] 24: DP4 TEMP[4].x, CONST[4], TEMP[1] 25: MOV TEMP[3].y, TEMP[4].xxxx 26: DP4 TEMP[1].x, CONST[5], TEMP[1] 27: MOV TEMP[3].z, TEMP[1].xxxx 28: MUL TEMP[1], CONST[12], IN[0].xxxx 29: MAD TEMP[1], CONST[13], IN[0].yyyy, TEMP[1] 30: MAD TEMP[1], CONST[14], IN[0].zzzz, TEMP[1] 31: MAD TEMP[1], CONST[15], IN[0].wwww, TEMP[1] 32: MAD TEMP[4].xy, IN[2].xyyy, CONST[11].xyyy, CONST[11].zwww 33: MOV TEMP[4].zw, TEMP[0].yyxy 34: MOV TEMP[5].x, TEMP[0].zzzz 35: MUL TEMP[6].x, TEMP[0].yyyy, TEMP[0].yyyy 36: MAD TEMP[0].x, TEMP[0].xxxx, TEMP[0].xxxx, -TEMP[6].xxxx 37: MAD TEMP[0].xyz, CONST[6].xyzz, TEMP[0].xxxx, TEMP[3].xyzz 38: ADD TEMP[0].xyz, TEMP[0].xyzz, TEMP[2].xyzz 39: MOV TEMP[5].yzw, TEMP[0].yxyz 40: MOV OUT[0], TEMP[1] 41: MOV OUT[1], TEMP[4] 42: MOV OUT[2], TEMP[5] 43: END radeonsi: Compiling shader 5 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_vs <{ float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32, i32, i32, i32, i32, i32, i32) { main_body: %17 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 0, !amdgpu.uniform !0 %18 = load <16 x i8>, <16 x i8> addrspace(2)* %17, align 16, !invariant.load !0 %19 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %18, i32 0, i32 %14) %20 = extractelement <4 x float> %19, i32 0 %21 = extractelement <4 x float> %19, i32 1 %22 = extractelement <4 x float> %19, i32 2 %23 = extractelement <4 x float> %19, i32 3 %24 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 1, !amdgpu.uniform !0 %25 = load <16 x i8>, <16 x i8> addrspace(2)* %24, align 16, !invariant.load !0 %26 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %25, i32 0, i32 %15) %27 = extractelement <4 x float> %26, i32 0 %28 = extractelement <4 x float> %26, i32 1 %29 = extractelement <4 x float> %26, i32 2 %30 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 2, !amdgpu.uniform !0 %31 = load <16 x i8>, <16 x i8> addrspace(2)* %30, align 16, !invariant.load !0 %32 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %31, i32 0, i32 %16) %33 = extractelement <4 x float> %32, i32 0 %34 = extractelement <4 x float> %32, i32 1 %35 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %36 = load <16 x i8>, <16 x i8> addrspace(2)* %35, align 16, !invariant.load !0 %37 = call float @llvm.SI.load.const(<16 x i8> %36, i32 112) %38 = call float @llvm.SI.load.const(<16 x i8> %36, i32 128) %39 = call float @llvm.SI.load.const(<16 x i8> %36, i32 144) %40 = call float @llvm.SI.load.const(<16 x i8> %36, i32 116) %41 = call float @llvm.SI.load.const(<16 x i8> %36, i32 132) %42 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %43 = load <16 x i8>, <16 x i8> addrspace(2)* %42, align 16, !invariant.load !0 %44 = call float @llvm.SI.load.const(<16 x i8> %43, i32 148) %45 = call float @llvm.SI.load.const(<16 x i8> %43, i32 120) %46 = call float @llvm.SI.load.const(<16 x i8> %43, i32 136) %47 = call float @llvm.SI.load.const(<16 x i8> %43, i32 152) %48 = fmul float %37, %27 %49 = fmul float %38, %27 %50 = fmul float %39, %27 %51 = fmul float %40, %28 %52 = fadd float %51, %48 %53 = fmul float %41, %28 %54 = fadd float %53, %49 %55 = fmul float %44, %28 %56 = fadd float %55, %50 %57 = fmul float %45, %29 %58 = fadd float %57, %52 %59 = fmul float %46, %29 %60 = fadd float %59, %54 %61 = fmul float %47, %29 %62 = fadd float %61, %56 %63 = fmul float %58, %58 %64 = fmul float %60, %60 %65 = fadd float %64, %63 %66 = fmul float %62, %62 %67 = fadd float %65, %66 %68 = call float @llvm.sqrt.f32(float %67) %69 = fdiv float 1.000000e+00, %68, !fpmath !1 %70 = fmul float %58, %69 %71 = fmul float %60, %69 %72 = fmul float %62, %69 %73 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %74 = load <16 x i8>, <16 x i8> addrspace(2)* %73, align 16, !invariant.load !0 %75 = call float @llvm.SI.load.const(<16 x i8> %74, i32 0) %76 = call float @llvm.SI.load.const(<16 x i8> %74, i32 4) %77 = call float @llvm.SI.load.const(<16 x i8> %74, i32 8) %78 = call float @llvm.SI.load.const(<16 x i8> %74, i32 12) %79 = fmul float %75, %70 %80 = fmul float %76, %71 %81 = fadd float %79, %80 %82 = fmul float %77, %72 %83 = fadd float %81, %82 %84 = fadd float %83, %78 %85 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %86 = load <16 x i8>, <16 x i8> addrspace(2)* %85, align 16, !invariant.load !0 %87 = call float @llvm.SI.load.const(<16 x i8> %86, i32 16) %88 = call float @llvm.SI.load.const(<16 x i8> %86, i32 20) %89 = call float @llvm.SI.load.const(<16 x i8> %86, i32 24) %90 = call float @llvm.SI.load.const(<16 x i8> %86, i32 28) %91 = fmul float %87, %70 %92 = fmul float %88, %71 %93 = fadd float %91, %92 %94 = fmul float %89, %72 %95 = fadd float %93, %94 %96 = fadd float %95, %90 %97 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %98 = load <16 x i8>, <16 x i8> addrspace(2)* %97, align 16, !invariant.load !0 %99 = call float @llvm.SI.load.const(<16 x i8> %98, i32 32) %100 = call float @llvm.SI.load.const(<16 x i8> %98, i32 36) %101 = call float @llvm.SI.load.const(<16 x i8> %98, i32 40) %102 = call float @llvm.SI.load.const(<16 x i8> %98, i32 44) %103 = fmul float %99, %70 %104 = fmul float %100, %71 %105 = fadd float %103, %104 %106 = fmul float %101, %72 %107 = fadd float %105, %106 %108 = fadd float %107, %102 %109 = fmul float %70, %71 %110 = fmul float %71, %72 %111 = fmul float %72, %72 %112 = fmul float %72, %70 %113 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %114 = load <16 x i8>, <16 x i8> addrspace(2)* %113, align 16, !invariant.load !0 %115 = call float @llvm.SI.load.const(<16 x i8> %114, i32 48) %116 = call float @llvm.SI.load.const(<16 x i8> %114, i32 52) %117 = call float @llvm.SI.load.const(<16 x i8> %114, i32 56) %118 = call float @llvm.SI.load.const(<16 x i8> %114, i32 60) %119 = fmul float %115, %109 %120 = fmul float %116, %110 %121 = fadd float %119, %120 %122 = fmul float %117, %111 %123 = fadd float %121, %122 %124 = fmul float %118, %112 %125 = fadd float %123, %124 %126 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %127 = load <16 x i8>, <16 x i8> addrspace(2)* %126, align 16, !invariant.load !0 %128 = call float @llvm.SI.load.const(<16 x i8> %127, i32 64) %129 = call float @llvm.SI.load.const(<16 x i8> %127, i32 68) %130 = call float @llvm.SI.load.const(<16 x i8> %127, i32 72) %131 = call float @llvm.SI.load.const(<16 x i8> %127, i32 76) %132 = fmul float %128, %109 %133 = fmul float %129, %110 %134 = fadd float %132, %133 %135 = fmul float %130, %111 %136 = fadd float %134, %135 %137 = fmul float %131, %112 %138 = fadd float %136, %137 %139 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %140 = load <16 x i8>, <16 x i8> addrspace(2)* %139, align 16, !invariant.load !0 %141 = call float @llvm.SI.load.const(<16 x i8> %140, i32 80) %142 = call float @llvm.SI.load.const(<16 x i8> %140, i32 84) %143 = call float @llvm.SI.load.const(<16 x i8> %140, i32 88) %144 = call float @llvm.SI.load.const(<16 x i8> %140, i32 92) %145 = fmul float %141, %109 %146 = fmul float %142, %110 %147 = fadd float %145, %146 %148 = fmul float %143, %111 %149 = fadd float %147, %148 %150 = fmul float %144, %112 %151 = fadd float %149, %150 %152 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %153 = load <16 x i8>, <16 x i8> addrspace(2)* %152, align 16, !invariant.load !0 %154 = call float @llvm.SI.load.const(<16 x i8> %153, i32 192) %155 = fmul float %154, %20 %156 = call float @llvm.SI.load.const(<16 x i8> %153, i32 196) %157 = fmul float %156, %20 %158 = call float @llvm.SI.load.const(<16 x i8> %153, i32 200) %159 = fmul float %158, %20 %160 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %161 = load <16 x i8>, <16 x i8> addrspace(2)* %160, align 16, !invariant.load !0 %162 = call float @llvm.SI.load.const(<16 x i8> %161, i32 204) %163 = fmul float %162, %20 %164 = call float @llvm.SI.load.const(<16 x i8> %161, i32 208) %165 = fmul float %164, %21 %166 = fadd float %165, %155 %167 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %168 = load <16 x i8>, <16 x i8> addrspace(2)* %167, align 16, !invariant.load !0 %169 = call float @llvm.SI.load.const(<16 x i8> %168, i32 212) %170 = fmul float %169, %21 %171 = fadd float %170, %157 %172 = call float @llvm.SI.load.const(<16 x i8> %168, i32 216) %173 = fmul float %172, %21 %174 = fadd float %173, %159 %175 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %176 = load <16 x i8>, <16 x i8> addrspace(2)* %175, align 16, !invariant.load !0 %177 = call float @llvm.SI.load.const(<16 x i8> %176, i32 220) %178 = fmul float %177, %21 %179 = fadd float %178, %163 %180 = call float @llvm.SI.load.const(<16 x i8> %176, i32 224) %181 = fmul float %180, %22 %182 = fadd float %181, %166 %183 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %184 = load <16 x i8>, <16 x i8> addrspace(2)* %183, align 16, !invariant.load !0 %185 = call float @llvm.SI.load.const(<16 x i8> %184, i32 228) %186 = fmul float %185, %22 %187 = fadd float %186, %171 %188 = call float @llvm.SI.load.const(<16 x i8> %184, i32 232) %189 = fmul float %188, %22 %190 = fadd float %189, %174 %191 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %192 = load <16 x i8>, <16 x i8> addrspace(2)* %191, align 16, !invariant.load !0 %193 = call float @llvm.SI.load.const(<16 x i8> %192, i32 236) %194 = fmul float %193, %22 %195 = fadd float %194, %179 %196 = call float @llvm.SI.load.const(<16 x i8> %192, i32 240) %197 = fmul float %196, %23 %198 = fadd float %197, %182 %199 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %200 = load <16 x i8>, <16 x i8> addrspace(2)* %199, align 16, !invariant.load !0 %201 = call float @llvm.SI.load.const(<16 x i8> %200, i32 244) %202 = fmul float %201, %23 %203 = fadd float %202, %187 %204 = call float @llvm.SI.load.const(<16 x i8> %200, i32 248) %205 = fmul float %204, %23 %206 = fadd float %205, %190 %207 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %208 = load <16 x i8>, <16 x i8> addrspace(2)* %207, align 16, !invariant.load !0 %209 = call float @llvm.SI.load.const(<16 x i8> %208, i32 252) %210 = fmul float %209, %23 %211 = fadd float %210, %195 %212 = call float @llvm.SI.load.const(<16 x i8> %208, i32 176) %213 = call float @llvm.SI.load.const(<16 x i8> %208, i32 184) %214 = fmul float %33, %212 %215 = fadd float %214, %213 %216 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %217 = load <16 x i8>, <16 x i8> addrspace(2)* %216, align 16, !invariant.load !0 %218 = call float @llvm.SI.load.const(<16 x i8> %217, i32 180) %219 = call float @llvm.SI.load.const(<16 x i8> %217, i32 188) %220 = fmul float %34, %218 %221 = fadd float %220, %219 %222 = fmul float %71, %71 %223 = fmul float %70, %70 %224 = fsub float %223, %222 %225 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %226 = load <16 x i8>, <16 x i8> addrspace(2)* %225, align 16, !invariant.load !0 %227 = call float @llvm.SI.load.const(<16 x i8> %226, i32 96) %228 = fmul float %227, %224 %229 = fadd float %228, %125 %230 = call float @llvm.SI.load.const(<16 x i8> %226, i32 100) %231 = fmul float %230, %224 %232 = fadd float %231, %138 %233 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %234 = load <16 x i8>, <16 x i8> addrspace(2)* %233, align 16, !invariant.load !0 %235 = call float @llvm.SI.load.const(<16 x i8> %234, i32 104) %236 = fmul float %235, %224 %237 = fadd float %236, %151 %238 = fadd float %229, %84 %239 = fadd float %232, %96 %240 = fadd float %237, %108 %241 = bitcast i32 %12 to float %242 = insertvalue <{ float, float, float }> undef, float %241, 2 call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 32, i32 0, float %215, float %221, float %70, float %71) call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 33, i32 0, float %72, float %238, float %239, float %240) call void @llvm.SI.export(i32 15, i32 0, i32 1, i32 12, i32 0, float %198, float %203, float %206, float %211) ret <{ float, float, float }> %242 } ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.vs.load.input(<16 x i8>, i32, i32) #0 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #0 ; Function Attrs: nounwind readnone declare float @llvm.sqrt.f32(float) #0 ; Function Attrs: nounwind declare void @llvm.SI.export(i32, i32, i32, i32, i32, float, float, float, float) #1 attributes #0 = { nounwind readnone } attributes #1 = { nounwind } !0 = !{} !1 = !{float 2.500000e+00} FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL IN[1], GENERIC[1], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SVIEW[0], 2D, FLOAT DCL CONST[0..1] DCL CONST[3] DCL TEMP[0..2], LOCAL IMM[0] FLT32 { 0.0000, 1.0000, 0.0000, 0.0000} 0: MOV TEMP[0].xy, IN[0].zwzz 1: MOV TEMP[0].z, IN[1].xxxx 2: MOV TEMP[1].xy, IN[0].xyyy 3: TEX TEMP[1], TEMP[1], SAMP[0], 2D 4: MUL TEMP[1].xyz, TEMP[1], CONST[3] 5: MUL TEMP[2].xyz, TEMP[1].xyzz, CONST[1].xyzz 6: DP3 TEMP[0].x, TEMP[0].xyzz, CONST[0].xyzz 7: MAX TEMP[0].x, IMM[0].xxxx, TEMP[0].xxxx 8: MUL TEMP[0].xyz, TEMP[2].xyzz, TEMP[0].xxxx 9: MAD TEMP[0].xyz, TEMP[1].xyzz, IN[1].yzww, TEMP[0].xyzz 10: MOV TEMP[0].xyz, TEMP[0].xyzx 11: MOV TEMP[0].w, IMM[0].yyyy 12: MOV OUT[0], TEMP[0] 13: END radeonsi: Compiling shader 6 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_ps <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), float inreg, i32 inreg, <2 x i32>, <2 x i32>, <2 x i32>, <3 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, float, float, float, float, float, i32, i32, float, i32) #0 { main_body: %23 = call float @llvm.SI.fs.interp(i32 2, i32 0, i32 %6, <2 x i32> %8) %24 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %6, <2 x i32> %8) %25 = call float @llvm.SI.fs.interp(i32 0, i32 1, i32 %6, <2 x i32> %8) %26 = call float @llvm.SI.fs.interp(i32 0, i32 0, i32 %6, <2 x i32> %8) %27 = call float @llvm.SI.fs.interp(i32 1, i32 0, i32 %6, <2 x i32> %8) %28 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 0, !amdgpu.uniform !0 %29 = load <8 x i32>, <8 x i32> addrspace(2)* %28, align 32, !invariant.load !0 %30 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %31 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %30, i64 0, i64 3, !amdgpu.uniform !0 %32 = load <4 x i32>, <4 x i32> addrspace(2)* %31, align 16, !invariant.load !0 %33 = bitcast float %26 to i32 %34 = bitcast float %27 to i32 %35 = insertelement <2 x i32> undef, i32 %33, i32 0 %36 = insertelement <2 x i32> %35, i32 %34, i32 1 %37 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %36, <8 x i32> %29, <4 x i32> %32, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %38 = extractelement <4 x float> %37, i32 0 %39 = extractelement <4 x float> %37, i32 1 %40 = extractelement <4 x float> %37, i32 2 %41 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %42 = load <16 x i8>, <16 x i8> addrspace(2)* %41, align 16, !invariant.load !0 %43 = call float @llvm.SI.load.const(<16 x i8> %42, i32 48) %44 = fmul float %38, %43 %45 = call float @llvm.SI.load.const(<16 x i8> %42, i32 52) %46 = fmul float %39, %45 %47 = call float @llvm.SI.load.const(<16 x i8> %42, i32 56) %48 = fmul float %40, %47 %49 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %50 = load <16 x i8>, <16 x i8> addrspace(2)* %49, align 16, !invariant.load !0 %51 = call float @llvm.SI.load.const(<16 x i8> %50, i32 16) %52 = fmul float %44, %51 %53 = call float @llvm.SI.load.const(<16 x i8> %50, i32 20) %54 = fmul float %46, %53 %55 = call float @llvm.SI.load.const(<16 x i8> %50, i32 24) %56 = fmul float %48, %55 %57 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %58 = load <16 x i8>, <16 x i8> addrspace(2)* %57, align 16, !invariant.load !0 %59 = call float @llvm.SI.load.const(<16 x i8> %58, i32 0) %60 = call float @llvm.SI.load.const(<16 x i8> %58, i32 4) %61 = call float @llvm.SI.load.const(<16 x i8> %58, i32 8) %62 = fmul float %23, %59 %63 = fmul float %24, %60 %64 = fadd float %63, %62 %65 = fmul float %25, %61 %66 = fadd float %64, %65 %67 = call float @llvm.maxnum.f32(float %66, float 0.000000e+00) %68 = fmul float %52, %67 %69 = fmul float %54, %67 %70 = fmul float %56, %67 %71 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %72 = fmul float %44, %71 %73 = fadd float %72, %68 %74 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %75 = fmul float %46, %74 %76 = fadd float %75, %69 %77 = call float @llvm.SI.fs.interp(i32 3, i32 1, i32 %6, <2 x i32> %8) %78 = fmul float %48, %77 %79 = fadd float %78, %70 %80 = bitcast float %5 to i32 %81 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> undef, i32 %80, 10 %82 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %81, float %73, 11 %83 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %82, float %76, 12 %84 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %83, float %79, 13 %85 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %84, float 1.000000e+00, 14 %86 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %85, float %21, 24 ret <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %86 } ; Function Attrs: nounwind readnone declare float @llvm.SI.fs.interp(i32, i32, i32, <2 x i32>) #1 ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.maxnum.f32(float, float) #1 attributes #0 = { "InitialPSInputAddr"="36983" } attributes #1 = { nounwind readnone } !0 = !{} VERT PROPERTY NEXT_SHADER FRAG DCL IN[0] DCL IN[1] DCL IN[2] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] DCL OUT[2], GENERIC[1] DCL CONST[0..12] DCL TEMP[0..3], LOCAL 0: MOV TEMP[0].x, CONST[4].xxxx 1: MOV TEMP[0].y, CONST[5].xxxx 2: MOV TEMP[0].z, CONST[6].xxxx 3: MOV TEMP[1].x, CONST[4].yyyy 4: MOV TEMP[1].y, CONST[5].yyyy 5: MOV TEMP[1].z, CONST[6].yyyy 6: MOV TEMP[2].x, CONST[4].zzzz 7: MOV TEMP[2].y, CONST[5].zzzz 8: MOV TEMP[2].z, CONST[6].zzzz 9: MUL TEMP[3], CONST[9], IN[0].xxxx 10: MAD TEMP[3], CONST[10], IN[0].yyyy, TEMP[3] 11: MAD TEMP[3], CONST[11], IN[0].zzzz, TEMP[3] 12: MAD TEMP[3], CONST[12], IN[0].wwww, TEMP[3] 13: MUL TEMP[0].xyz, TEMP[0].xyzz, IN[1].xxxx 14: MAD TEMP[0].xyz, TEMP[1].xyzz, IN[1].yyyy, TEMP[0].xyzz 15: MAD TEMP[0].xyz, TEMP[2].xyzz, IN[1].zzzz, TEMP[0].xyzz 16: DP3 TEMP[1].x, TEMP[0].xyzz, TEMP[0].xyzz 17: RSQ TEMP[1].x, TEMP[1].xxxx 18: MUL TEMP[0].xyz, TEMP[0].xyzz, TEMP[1].xxxx 19: MAD TEMP[1].xy, IN[2].xyyy, CONST[8].xyyy, CONST[8].zwww 20: MOV TEMP[1].zw, TEMP[0].yyxy 21: MOV TEMP[0].x, TEMP[0].zzzz 22: MUL TEMP[2], CONST[0], IN[0].xxxx 23: MAD TEMP[2], CONST[1], IN[0].yyyy, TEMP[2] 24: MAD TEMP[2], CONST[2], IN[0].zzzz, TEMP[2] 25: MAD TEMP[2].xyz, CONST[3], IN[0].wwww, TEMP[2] 26: MOV TEMP[0].yzw, TEMP[2].yxyz 27: MOV OUT[2], TEMP[0] 28: MOV OUT[0], TEMP[3] 29: MOV OUT[1], TEMP[1] 30: END radeonsi: Compiling shader 7 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_vs <{ float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32, i32, i32, i32, i32, i32, i32) { main_body: %17 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 0, !amdgpu.uniform !0 %18 = load <16 x i8>, <16 x i8> addrspace(2)* %17, align 16, !invariant.load !0 %19 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %18, i32 0, i32 %14) %20 = extractelement <4 x float> %19, i32 0 %21 = extractelement <4 x float> %19, i32 1 %22 = extractelement <4 x float> %19, i32 2 %23 = extractelement <4 x float> %19, i32 3 %24 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 1, !amdgpu.uniform !0 %25 = load <16 x i8>, <16 x i8> addrspace(2)* %24, align 16, !invariant.load !0 %26 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %25, i32 0, i32 %15) %27 = extractelement <4 x float> %26, i32 0 %28 = extractelement <4 x float> %26, i32 1 %29 = extractelement <4 x float> %26, i32 2 %30 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 2, !amdgpu.uniform !0 %31 = load <16 x i8>, <16 x i8> addrspace(2)* %30, align 16, !invariant.load !0 %32 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %31, i32 0, i32 %16) %33 = extractelement <4 x float> %32, i32 0 %34 = extractelement <4 x float> %32, i32 1 %35 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %36 = load <16 x i8>, <16 x i8> addrspace(2)* %35, align 16, !invariant.load !0 %37 = call float @llvm.SI.load.const(<16 x i8> %36, i32 64) %38 = call float @llvm.SI.load.const(<16 x i8> %36, i32 80) %39 = call float @llvm.SI.load.const(<16 x i8> %36, i32 96) %40 = call float @llvm.SI.load.const(<16 x i8> %36, i32 68) %41 = call float @llvm.SI.load.const(<16 x i8> %36, i32 84) %42 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %43 = load <16 x i8>, <16 x i8> addrspace(2)* %42, align 16, !invariant.load !0 %44 = call float @llvm.SI.load.const(<16 x i8> %43, i32 100) %45 = call float @llvm.SI.load.const(<16 x i8> %43, i32 72) %46 = call float @llvm.SI.load.const(<16 x i8> %43, i32 88) %47 = call float @llvm.SI.load.const(<16 x i8> %43, i32 104) %48 = call float @llvm.SI.load.const(<16 x i8> %43, i32 144) %49 = fmul float %48, %20 %50 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %51 = load <16 x i8>, <16 x i8> addrspace(2)* %50, align 16, !invariant.load !0 %52 = call float @llvm.SI.load.const(<16 x i8> %51, i32 148) %53 = fmul float %52, %20 %54 = call float @llvm.SI.load.const(<16 x i8> %51, i32 152) %55 = fmul float %54, %20 %56 = call float @llvm.SI.load.const(<16 x i8> %51, i32 156) %57 = fmul float %56, %20 %58 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %59 = load <16 x i8>, <16 x i8> addrspace(2)* %58, align 16, !invariant.load !0 %60 = call float @llvm.SI.load.const(<16 x i8> %59, i32 160) %61 = fmul float %60, %21 %62 = fadd float %61, %49 %63 = call float @llvm.SI.load.const(<16 x i8> %59, i32 164) %64 = fmul float %63, %21 %65 = fadd float %64, %53 %66 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %67 = load <16 x i8>, <16 x i8> addrspace(2)* %66, align 16, !invariant.load !0 %68 = call float @llvm.SI.load.const(<16 x i8> %67, i32 168) %69 = fmul float %68, %21 %70 = fadd float %69, %55 %71 = call float @llvm.SI.load.const(<16 x i8> %67, i32 172) %72 = fmul float %71, %21 %73 = fadd float %72, %57 %74 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %75 = load <16 x i8>, <16 x i8> addrspace(2)* %74, align 16, !invariant.load !0 %76 = call float @llvm.SI.load.const(<16 x i8> %75, i32 176) %77 = fmul float %76, %22 %78 = fadd float %77, %62 %79 = call float @llvm.SI.load.const(<16 x i8> %75, i32 180) %80 = fmul float %79, %22 %81 = fadd float %80, %65 %82 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %83 = load <16 x i8>, <16 x i8> addrspace(2)* %82, align 16, !invariant.load !0 %84 = call float @llvm.SI.load.const(<16 x i8> %83, i32 184) %85 = fmul float %84, %22 %86 = fadd float %85, %70 %87 = call float @llvm.SI.load.const(<16 x i8> %83, i32 188) %88 = fmul float %87, %22 %89 = fadd float %88, %73 %90 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %91 = load <16 x i8>, <16 x i8> addrspace(2)* %90, align 16, !invariant.load !0 %92 = call float @llvm.SI.load.const(<16 x i8> %91, i32 192) %93 = fmul float %92, %23 %94 = fadd float %93, %78 %95 = call float @llvm.SI.load.const(<16 x i8> %91, i32 196) %96 = fmul float %95, %23 %97 = fadd float %96, %81 %98 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %99 = load <16 x i8>, <16 x i8> addrspace(2)* %98, align 16, !invariant.load !0 %100 = call float @llvm.SI.load.const(<16 x i8> %99, i32 200) %101 = fmul float %100, %23 %102 = fadd float %101, %86 %103 = call float @llvm.SI.load.const(<16 x i8> %99, i32 204) %104 = fmul float %103, %23 %105 = fadd float %104, %89 %106 = fmul float %37, %27 %107 = fmul float %38, %27 %108 = fmul float %39, %27 %109 = fmul float %40, %28 %110 = fadd float %109, %106 %111 = fmul float %41, %28 %112 = fadd float %111, %107 %113 = fmul float %44, %28 %114 = fadd float %113, %108 %115 = fmul float %45, %29 %116 = fadd float %115, %110 %117 = fmul float %46, %29 %118 = fadd float %117, %112 %119 = fmul float %47, %29 %120 = fadd float %119, %114 %121 = fmul float %116, %116 %122 = fmul float %118, %118 %123 = fadd float %122, %121 %124 = fmul float %120, %120 %125 = fadd float %123, %124 %126 = call float @llvm.sqrt.f32(float %125) %127 = fdiv float 1.000000e+00, %126, !fpmath !1 %128 = fmul float %116, %127 %129 = fmul float %118, %127 %130 = fmul float %120, %127 %131 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %132 = load <16 x i8>, <16 x i8> addrspace(2)* %131, align 16, !invariant.load !0 %133 = call float @llvm.SI.load.const(<16 x i8> %132, i32 128) %134 = call float @llvm.SI.load.const(<16 x i8> %132, i32 136) %135 = fmul float %33, %133 %136 = fadd float %135, %134 %137 = call float @llvm.SI.load.const(<16 x i8> %132, i32 132) %138 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %139 = load <16 x i8>, <16 x i8> addrspace(2)* %138, align 16, !invariant.load !0 %140 = call float @llvm.SI.load.const(<16 x i8> %139, i32 140) %141 = fmul float %34, %137 %142 = fadd float %141, %140 %143 = call float @llvm.SI.load.const(<16 x i8> %139, i32 0) %144 = fmul float %143, %20 %145 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %146 = load <16 x i8>, <16 x i8> addrspace(2)* %145, align 16, !invariant.load !0 %147 = call float @llvm.SI.load.const(<16 x i8> %146, i32 4) %148 = fmul float %147, %20 %149 = call float @llvm.SI.load.const(<16 x i8> %146, i32 8) %150 = fmul float %149, %20 %151 = call float @llvm.SI.load.const(<16 x i8> %146, i32 16) %152 = fmul float %151, %21 %153 = fadd float %152, %144 %154 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %155 = load <16 x i8>, <16 x i8> addrspace(2)* %154, align 16, !invariant.load !0 %156 = call float @llvm.SI.load.const(<16 x i8> %155, i32 20) %157 = fmul float %156, %21 %158 = fadd float %157, %148 %159 = call float @llvm.SI.load.const(<16 x i8> %155, i32 24) %160 = fmul float %159, %21 %161 = fadd float %160, %150 %162 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %163 = load <16 x i8>, <16 x i8> addrspace(2)* %162, align 16, !invariant.load !0 %164 = call float @llvm.SI.load.const(<16 x i8> %163, i32 32) %165 = fmul float %164, %22 %166 = fadd float %165, %153 %167 = call float @llvm.SI.load.const(<16 x i8> %163, i32 36) %168 = fmul float %167, %22 %169 = fadd float %168, %158 %170 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %171 = load <16 x i8>, <16 x i8> addrspace(2)* %170, align 16, !invariant.load !0 %172 = call float @llvm.SI.load.const(<16 x i8> %171, i32 40) %173 = fmul float %172, %22 %174 = fadd float %173, %161 %175 = call float @llvm.SI.load.const(<16 x i8> %171, i32 48) %176 = fmul float %175, %23 %177 = fadd float %176, %166 %178 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %179 = load <16 x i8>, <16 x i8> addrspace(2)* %178, align 16, !invariant.load !0 %180 = call float @llvm.SI.load.const(<16 x i8> %179, i32 52) %181 = fmul float %180, %23 %182 = fadd float %181, %169 %183 = call float @llvm.SI.load.const(<16 x i8> %179, i32 56) %184 = fmul float %183, %23 %185 = fadd float %184, %174 %186 = bitcast i32 %12 to float %187 = insertvalue <{ float, float, float }> undef, float %186, 2 call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 32, i32 0, float %136, float %142, float %128, float %129) call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 33, i32 0, float %130, float %177, float %182, float %185) call void @llvm.SI.export(i32 15, i32 0, i32 1, i32 12, i32 0, float %94, float %97, float %102, float %105) ret <{ float, float, float }> %187 } ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.vs.load.input(<16 x i8>, i32, i32) #0 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #0 ; Function Attrs: nounwind readnone declare float @llvm.sqrt.f32(float) #0 ; Function Attrs: nounwind declare void @llvm.SI.export(i32, i32, i32, i32, i32, float, float, float, float) #1 attributes #0 = { nounwind readnone } attributes #1 = { nounwind } !0 = !{} !1 = !{float 2.500000e+00} FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL IN[1], GENERIC[1], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL SVIEW[0], 2D, FLOAT DCL SVIEW[1], 2D, FLOAT DCL CONST[0..1] DCL CONST[3..6] DCL CONST[8] DCL TEMP[0..3], LOCAL IMM[0] FLT32 { 0.0000, 1.0000, 0.0000, 0.0000} 0: MOV TEMP[0].xy, IN[0].zwzz 1: MOV TEMP[0].z, IN[1].xxxx 2: MOV TEMP[1].xy, IN[0].xyyy 3: TEX TEMP[1], TEMP[1], SAMP[1], 2D 4: MUL TEMP[1].xyz, TEMP[1], CONST[8] 5: MUL TEMP[2], CONST[3], IN[1].yyyy 6: MAD TEMP[2], CONST[4], IN[1].zzzz, TEMP[2] 7: MAD TEMP[2], CONST[5], IN[1].wwww, TEMP[2] 8: ADD TEMP[2].xyz, TEMP[2], CONST[6] 9: ADD TEMP[3].xyz, CONST[0].xyzz, -IN[1].yzww 10: DP3 TEMP[2].x, TEMP[2].xyzz, TEMP[2].xyzz 11: MOV TEMP[2].xy, TEMP[2].xxxx 12: TEX TEMP[2].w, TEMP[2], SAMP[0], 2D 13: MUL TEMP[2].xyz, CONST[1].xyzz, TEMP[2].wwww 14: MUL TEMP[1].xyz, TEMP[1].xyzz, TEMP[2].xyzz 15: DP3 TEMP[2].x, TEMP[3].xyzz, TEMP[3].xyzz 16: RSQ TEMP[2].x, TEMP[2].xxxx 17: MUL TEMP[2].xyz, TEMP[3].xyzz, TEMP[2].xxxx 18: DP3 TEMP[0].x, TEMP[0].xyzz, TEMP[2].xyzz 19: MAX TEMP[0].x, IMM[0].xxxx, TEMP[0].xxxx 20: MUL TEMP[0].xyz, TEMP[1].xyzz, TEMP[0].xxxx 21: MOV TEMP[0].xyz, TEMP[0].xyzx 22: MOV TEMP[0].w, IMM[0].yyyy 23: MOV OUT[0], TEMP[0] 24: END radeonsi: Compiling shader 8 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_ps <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), float inreg, i32 inreg, <2 x i32>, <2 x i32>, <2 x i32>, <3 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, float, float, float, float, float, i32, i32, float, i32) #0 { main_body: %23 = call float @llvm.SI.fs.interp(i32 2, i32 0, i32 %6, <2 x i32> %8) %24 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %6, <2 x i32> %8) %25 = call float @llvm.SI.fs.interp(i32 0, i32 1, i32 %6, <2 x i32> %8) %26 = call float @llvm.SI.fs.interp(i32 0, i32 0, i32 %6, <2 x i32> %8) %27 = call float @llvm.SI.fs.interp(i32 1, i32 0, i32 %6, <2 x i32> %8) %28 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 2, !amdgpu.uniform !0 %29 = load <8 x i32>, <8 x i32> addrspace(2)* %28, align 32, !invariant.load !0 %30 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %31 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %30, i64 0, i64 7, !amdgpu.uniform !0 %32 = load <4 x i32>, <4 x i32> addrspace(2)* %31, align 16, !invariant.load !0 %33 = bitcast float %26 to i32 %34 = bitcast float %27 to i32 %35 = insertelement <2 x i32> undef, i32 %33, i32 0 %36 = insertelement <2 x i32> %35, i32 %34, i32 1 %37 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %36, <8 x i32> %29, <4 x i32> %32, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %38 = extractelement <4 x float> %37, i32 0 %39 = extractelement <4 x float> %37, i32 1 %40 = extractelement <4 x float> %37, i32 2 %41 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %42 = load <16 x i8>, <16 x i8> addrspace(2)* %41, align 16, !invariant.load !0 %43 = call float @llvm.SI.load.const(<16 x i8> %42, i32 128) %44 = fmul float %38, %43 %45 = call float @llvm.SI.load.const(<16 x i8> %42, i32 132) %46 = fmul float %39, %45 %47 = call float @llvm.SI.load.const(<16 x i8> %42, i32 136) %48 = fmul float %40, %47 %49 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %50 = load <16 x i8>, <16 x i8> addrspace(2)* %49, align 16, !invariant.load !0 %51 = call float @llvm.SI.load.const(<16 x i8> %50, i32 48) %52 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %53 = fmul float %51, %52 %54 = call float @llvm.SI.load.const(<16 x i8> %50, i32 52) %55 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %56 = fmul float %54, %55 %57 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %58 = load <16 x i8>, <16 x i8> addrspace(2)* %57, align 16, !invariant.load !0 %59 = call float @llvm.SI.load.const(<16 x i8> %58, i32 56) %60 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %61 = fmul float %59, %60 %62 = call float @llvm.SI.load.const(<16 x i8> %58, i32 64) %63 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %64 = fmul float %62, %63 %65 = fadd float %64, %53 %66 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %67 = load <16 x i8>, <16 x i8> addrspace(2)* %66, align 16, !invariant.load !0 %68 = call float @llvm.SI.load.const(<16 x i8> %67, i32 68) %69 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %70 = fmul float %68, %69 %71 = fadd float %70, %56 %72 = call float @llvm.SI.load.const(<16 x i8> %67, i32 72) %73 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %74 = fmul float %72, %73 %75 = fadd float %74, %61 %76 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %77 = load <16 x i8>, <16 x i8> addrspace(2)* %76, align 16, !invariant.load !0 %78 = call float @llvm.SI.load.const(<16 x i8> %77, i32 80) %79 = call float @llvm.SI.fs.interp(i32 3, i32 1, i32 %6, <2 x i32> %8) %80 = fmul float %78, %79 %81 = fadd float %80, %65 %82 = call float @llvm.SI.load.const(<16 x i8> %77, i32 84) %83 = call float @llvm.SI.fs.interp(i32 3, i32 1, i32 %6, <2 x i32> %8) %84 = fmul float %82, %83 %85 = fadd float %84, %71 %86 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %87 = load <16 x i8>, <16 x i8> addrspace(2)* %86, align 16, !invariant.load !0 %88 = call float @llvm.SI.load.const(<16 x i8> %87, i32 88) %89 = call float @llvm.SI.fs.interp(i32 3, i32 1, i32 %6, <2 x i32> %8) %90 = fmul float %88, %89 %91 = fadd float %90, %75 %92 = call float @llvm.SI.load.const(<16 x i8> %87, i32 96) %93 = fadd float %81, %92 %94 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %95 = load <16 x i8>, <16 x i8> addrspace(2)* %94, align 16, !invariant.load !0 %96 = call float @llvm.SI.load.const(<16 x i8> %95, i32 100) %97 = fadd float %85, %96 %98 = call float @llvm.SI.load.const(<16 x i8> %95, i32 104) %99 = fadd float %91, %98 %100 = call float @llvm.SI.load.const(<16 x i8> %95, i32 0) %101 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %102 = fsub float %100, %101 %103 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %104 = load <16 x i8>, <16 x i8> addrspace(2)* %103, align 16, !invariant.load !0 %105 = call float @llvm.SI.load.const(<16 x i8> %104, i32 4) %106 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %107 = fsub float %105, %106 %108 = call float @llvm.SI.load.const(<16 x i8> %104, i32 8) %109 = call float @llvm.SI.fs.interp(i32 3, i32 1, i32 %6, <2 x i32> %8) %110 = fsub float %108, %109 %111 = fmul float %93, %93 %112 = fmul float %97, %97 %113 = fadd float %112, %111 %114 = fmul float %99, %99 %115 = fadd float %113, %114 %116 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 0, !amdgpu.uniform !0 %117 = load <8 x i32>, <8 x i32> addrspace(2)* %116, align 32, !invariant.load !0 %118 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %119 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %118, i64 0, i64 3, !amdgpu.uniform !0 %120 = load <4 x i32>, <4 x i32> addrspace(2)* %119, align 16, !invariant.load !0 %121 = bitcast float %115 to i32 %122 = bitcast float %115 to i32 %123 = insertelement <2 x i32> undef, i32 %121, i32 0 %124 = insertelement <2 x i32> %123, i32 %122, i32 1 %125 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %124, <8 x i32> %117, <4 x i32> %120, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %126 = extractelement <4 x float> %125, i32 3 %127 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %128 = load <16 x i8>, <16 x i8> addrspace(2)* %127, align 16, !invariant.load !0 %129 = call float @llvm.SI.load.const(<16 x i8> %128, i32 16) %130 = fmul float %129, %126 %131 = call float @llvm.SI.load.const(<16 x i8> %128, i32 20) %132 = fmul float %131, %126 %133 = call float @llvm.SI.load.const(<16 x i8> %128, i32 24) %134 = fmul float %133, %126 %135 = fmul float %44, %130 %136 = fmul float %46, %132 %137 = fmul float %48, %134 %138 = fmul float %102, %102 %139 = fmul float %107, %107 %140 = fadd float %139, %138 %141 = fmul float %110, %110 %142 = fadd float %140, %141 %143 = call float @llvm.sqrt.f32(float %142) %144 = fdiv float 1.000000e+00, %143, !fpmath !1 %145 = fmul float %102, %144 %146 = fmul float %107, %144 %147 = fmul float %110, %144 %148 = fmul float %23, %145 %149 = fmul float %24, %146 %150 = fadd float %149, %148 %151 = fmul float %25, %147 %152 = fadd float %150, %151 %153 = call float @llvm.maxnum.f32(float %152, float 0.000000e+00) %154 = fmul float %135, %153 %155 = fmul float %136, %153 %156 = fmul float %137, %153 %157 = bitcast float %5 to i32 %158 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> undef, i32 %157, 10 %159 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %158, float %154, 11 %160 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %159, float %155, 12 %161 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %160, float %156, 13 %162 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %161, float 1.000000e+00, 14 %163 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %162, float %21, 24 ret <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %163 } ; Function Attrs: nounwind readnone declare float @llvm.SI.fs.interp(i32, i32, i32, <2 x i32>) #1 ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.sqrt.f32(float) #1 ; Function Attrs: nounwind readnone declare float @llvm.maxnum.f32(float, float) #1 attributes #0 = { "InitialPSInputAddr"="36983" } attributes #1 = { nounwind readnone } !0 = !{} !1 = !{float 2.500000e+00} VERT PROPERTY NEXT_SHADER FRAG DCL IN[0] DCL IN[1] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] DCL CONST[0..7] DCL TEMP[0..3], LOCAL 0: MOV TEMP[0].x, CONST[0].xxxx 1: MOV TEMP[0].y, CONST[1].xxxx 2: MOV TEMP[0].z, CONST[2].xxxx 3: MOV TEMP[1].x, CONST[0].yyyy 4: MOV TEMP[1].y, CONST[1].yyyy 5: MOV TEMP[1].z, CONST[2].yyyy 6: MOV TEMP[2].x, CONST[0].zzzz 7: MOV TEMP[2].y, CONST[1].zzzz 8: MOV TEMP[2].z, CONST[2].zzzz 9: MUL TEMP[3], CONST[4], IN[0].xxxx 10: MAD TEMP[3], CONST[5], IN[0].yyyy, TEMP[3] 11: MAD TEMP[3], CONST[6], IN[0].zzzz, TEMP[3] 12: MAD TEMP[3], CONST[7], IN[0].wwww, TEMP[3] 13: MUL TEMP[0].xyz, TEMP[0].xyzz, IN[1].xxxx 14: MAD TEMP[0].xyz, TEMP[1].xyzz, IN[1].yyyy, TEMP[0].xyzz 15: MAD TEMP[0].xyz, TEMP[2].xyzz, IN[1].zzzz, TEMP[0].xyzz 16: DP3 TEMP[1].x, TEMP[0].xyzz, TEMP[0].xyzz 17: RSQ TEMP[1].x, TEMP[1].xxxx 18: MUL TEMP[0].xyz, TEMP[0].xyzz, TEMP[1].xxxx 19: MOV OUT[0], TEMP[3] 20: MOV OUT[1], TEMP[0] 21: END radeonsi: Compiling shader 9 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_vs <{ float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32, i32, i32, i32, i32, i32) { main_body: %16 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 0, !amdgpu.uniform !0 %17 = load <16 x i8>, <16 x i8> addrspace(2)* %16, align 16, !invariant.load !0 %18 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %17, i32 0, i32 %14) %19 = extractelement <4 x float> %18, i32 0 %20 = extractelement <4 x float> %18, i32 1 %21 = extractelement <4 x float> %18, i32 2 %22 = extractelement <4 x float> %18, i32 3 %23 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 1, !amdgpu.uniform !0 %24 = load <16 x i8>, <16 x i8> addrspace(2)* %23, align 16, !invariant.load !0 %25 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %24, i32 0, i32 %15) %26 = extractelement <4 x float> %25, i32 0 %27 = extractelement <4 x float> %25, i32 1 %28 = extractelement <4 x float> %25, i32 2 %29 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %30 = load <16 x i8>, <16 x i8> addrspace(2)* %29, align 16, !invariant.load !0 %31 = call float @llvm.SI.load.const(<16 x i8> %30, i32 0) %32 = call float @llvm.SI.load.const(<16 x i8> %30, i32 16) %33 = call float @llvm.SI.load.const(<16 x i8> %30, i32 32) %34 = call float @llvm.SI.load.const(<16 x i8> %30, i32 4) %35 = call float @llvm.SI.load.const(<16 x i8> %30, i32 20) %36 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %37 = load <16 x i8>, <16 x i8> addrspace(2)* %36, align 16, !invariant.load !0 %38 = call float @llvm.SI.load.const(<16 x i8> %37, i32 36) %39 = call float @llvm.SI.load.const(<16 x i8> %37, i32 8) %40 = call float @llvm.SI.load.const(<16 x i8> %37, i32 24) %41 = call float @llvm.SI.load.const(<16 x i8> %37, i32 40) %42 = call float @llvm.SI.load.const(<16 x i8> %37, i32 64) %43 = fmul float %42, %19 %44 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %45 = load <16 x i8>, <16 x i8> addrspace(2)* %44, align 16, !invariant.load !0 %46 = call float @llvm.SI.load.const(<16 x i8> %45, i32 68) %47 = fmul float %46, %19 %48 = call float @llvm.SI.load.const(<16 x i8> %45, i32 72) %49 = fmul float %48, %19 %50 = call float @llvm.SI.load.const(<16 x i8> %45, i32 76) %51 = fmul float %50, %19 %52 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %53 = load <16 x i8>, <16 x i8> addrspace(2)* %52, align 16, !invariant.load !0 %54 = call float @llvm.SI.load.const(<16 x i8> %53, i32 80) %55 = fmul float %54, %20 %56 = fadd float %55, %43 %57 = call float @llvm.SI.load.const(<16 x i8> %53, i32 84) %58 = fmul float %57, %20 %59 = fadd float %58, %47 %60 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %61 = load <16 x i8>, <16 x i8> addrspace(2)* %60, align 16, !invariant.load !0 %62 = call float @llvm.SI.load.const(<16 x i8> %61, i32 88) %63 = fmul float %62, %20 %64 = fadd float %63, %49 %65 = call float @llvm.SI.load.const(<16 x i8> %61, i32 92) %66 = fmul float %65, %20 %67 = fadd float %66, %51 %68 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %69 = load <16 x i8>, <16 x i8> addrspace(2)* %68, align 16, !invariant.load !0 %70 = call float @llvm.SI.load.const(<16 x i8> %69, i32 96) %71 = fmul float %70, %21 %72 = fadd float %71, %56 %73 = call float @llvm.SI.load.const(<16 x i8> %69, i32 100) %74 = fmul float %73, %21 %75 = fadd float %74, %59 %76 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %77 = load <16 x i8>, <16 x i8> addrspace(2)* %76, align 16, !invariant.load !0 %78 = call float @llvm.SI.load.const(<16 x i8> %77, i32 104) %79 = fmul float %78, %21 %80 = fadd float %79, %64 %81 = call float @llvm.SI.load.const(<16 x i8> %77, i32 108) %82 = fmul float %81, %21 %83 = fadd float %82, %67 %84 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %85 = load <16 x i8>, <16 x i8> addrspace(2)* %84, align 16, !invariant.load !0 %86 = call float @llvm.SI.load.const(<16 x i8> %85, i32 112) %87 = fmul float %86, %22 %88 = fadd float %87, %72 %89 = call float @llvm.SI.load.const(<16 x i8> %85, i32 116) %90 = fmul float %89, %22 %91 = fadd float %90, %75 %92 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %93 = load <16 x i8>, <16 x i8> addrspace(2)* %92, align 16, !invariant.load !0 %94 = call float @llvm.SI.load.const(<16 x i8> %93, i32 120) %95 = fmul float %94, %22 %96 = fadd float %95, %80 %97 = call float @llvm.SI.load.const(<16 x i8> %93, i32 124) %98 = fmul float %97, %22 %99 = fadd float %98, %83 %100 = fmul float %31, %26 %101 = fmul float %32, %26 %102 = fmul float %33, %26 %103 = fmul float %34, %27 %104 = fadd float %103, %100 %105 = fmul float %35, %27 %106 = fadd float %105, %101 %107 = fmul float %38, %27 %108 = fadd float %107, %102 %109 = fmul float %39, %28 %110 = fadd float %109, %104 %111 = fmul float %40, %28 %112 = fadd float %111, %106 %113 = fmul float %41, %28 %114 = fadd float %113, %108 %115 = fmul float %110, %110 %116 = fmul float %112, %112 %117 = fadd float %116, %115 %118 = fmul float %114, %114 %119 = fadd float %117, %118 %120 = call float @llvm.sqrt.f32(float %119) %121 = fdiv float 1.000000e+00, %120, !fpmath !1 %122 = fmul float %110, %121 %123 = fmul float %112, %121 %124 = fmul float %114, %121 %125 = bitcast i32 %12 to float %126 = insertvalue <{ float, float, float }> undef, float %125, 2 call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 32, i32 0, float %122, float %123, float %124, float undef) call void @llvm.SI.export(i32 15, i32 0, i32 1, i32 12, i32 0, float %88, float %91, float %96, float %99) ret <{ float, float, float }> %126 } ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.vs.load.input(<16 x i8>, i32, i32) #0 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #0 ; Function Attrs: nounwind readnone declare float @llvm.sqrt.f32(float) #0 ; Function Attrs: nounwind declare void @llvm.SI.export(i32, i32, i32, i32, i32, float, float, float, float) #1 attributes #0 = { nounwind readnone } attributes #1 = { nounwind } !0 = !{} !1 = !{float 2.500000e+00} FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL OUT[0], COLOR DCL TEMP[0], LOCAL IMM[0] FLT32 { 0.5000, 0.0000, 0.0000, 0.0000} 0: MAD TEMP[0].xyz, IN[0].xyzz, IMM[0].xxxx, IMM[0].xxxx 1: MOV TEMP[0].w, IMM[0].yyyy 2: MOV OUT[0], TEMP[0] 3: END radeonsi: Compiling shader 10 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_ps <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), float inreg, i32 inreg, <2 x i32>, <2 x i32>, <2 x i32>, <3 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, float, float, float, float, float, i32, i32, float, i32) #0 { main_body: %23 = call float @llvm.SI.fs.interp(i32 0, i32 0, i32 %6, <2 x i32> %8) %24 = fmul float %23, 5.000000e-01 %25 = fadd float %24, 5.000000e-01 %26 = call float @llvm.SI.fs.interp(i32 1, i32 0, i32 %6, <2 x i32> %8) %27 = fmul float %26, 5.000000e-01 %28 = fadd float %27, 5.000000e-01 %29 = call float @llvm.SI.fs.interp(i32 2, i32 0, i32 %6, <2 x i32> %8) %30 = fmul float %29, 5.000000e-01 %31 = fadd float %30, 5.000000e-01 %32 = bitcast float %5 to i32 %33 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> undef, i32 %32, 10 %34 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %33, float %25, 11 %35 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %34, float %28, 12 %36 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %35, float %31, 13 %37 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %36, float 0.000000e+00, 14 %38 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %37, float %21, 24 ret <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %38 } ; Function Attrs: nounwind readnone declare float @llvm.SI.fs.interp(i32, i32, i32, <2 x i32>) #1 attributes #0 = { "InitialPSInputAddr"="36983" } attributes #1 = { nounwind readnone } VERT PROPERTY NEXT_SHADER FRAG DCL IN[0] DCL IN[1] DCL IN[2] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] DCL OUT[2], GENERIC[1] DCL OUT[3], GENERIC[2] DCL CONST[0..16] DCL TEMP[0..6], LOCAL IMM[0] FLT32 { 0.5000, 1.0000, 0.0000, 0.0000} 0: MUL TEMP[0], CONST[13], IN[0].xxxx 1: MAD TEMP[0], CONST[14], IN[0].yyyy, TEMP[0] 2: MAD TEMP[0], CONST[15], IN[0].zzzz, TEMP[0] 3: MAD TEMP[0], CONST[16], IN[0].wwww, TEMP[0] 4: MUL TEMP[1].xyw, TEMP[0], IMM[0].xxxx 5: MOV TEMP[2].x, TEMP[1].xxxx 6: MUL TEMP[3].x, TEMP[1].yyyy, CONST[0].xxxx 7: MOV TEMP[2].y, TEMP[3].xxxx 8: ADD TEMP[1].xy, TEMP[2].xyyy, TEMP[1].wwww 9: MOV TEMP[1].zw, TEMP[0].wwzw 10: MOV TEMP[2].x, CONST[8].xxxx 11: MOV TEMP[2].y, CONST[9].xxxx 12: MOV TEMP[2].z, CONST[10].xxxx 13: MOV TEMP[3].x, CONST[8].yyyy 14: MOV TEMP[3].y, CONST[9].yyyy 15: MOV TEMP[3].z, CONST[10].yyyy 16: MOV TEMP[4].x, CONST[8].zzzz 17: MOV TEMP[4].y, CONST[9].zzzz 18: MOV TEMP[4].z, CONST[10].zzzz 19: MUL TEMP[2].xyz, TEMP[2].xyzz, IN[1].xxxx 20: MAD TEMP[2].xyz, TEMP[3].xyzz, IN[1].yyyy, TEMP[2].xyzz 21: MAD TEMP[2].xyz, TEMP[4].xyzz, IN[1].zzzz, TEMP[2].xyzz 22: DP3 TEMP[3].x, TEMP[2].xyzz, TEMP[2].xyzz 23: RSQ TEMP[3].x, TEMP[3].xxxx 24: MUL TEMP[2].xyz, TEMP[2].xyzz, TEMP[3].xxxx 25: MOV TEMP[3].w, IMM[0].yyyy 26: MOV TEMP[3].xyz, TEMP[2].xyzx 27: DP4 TEMP[4].x, CONST[1], TEMP[3] 28: DP4 TEMP[5].x, CONST[2], TEMP[3] 29: MOV TEMP[4].y, TEMP[5].xxxx 30: DP4 TEMP[3].x, CONST[3], TEMP[3] 31: MOV TEMP[4].z, TEMP[3].xxxx 32: MUL TEMP[3], TEMP[2].xyzz, TEMP[2].yzzx 33: DP4 TEMP[5].x, CONST[4], TEMP[3] 34: DP4 TEMP[6].x, CONST[5], TEMP[3] 35: MOV TEMP[5].y, TEMP[6].xxxx 36: DP4 TEMP[3].x, CONST[6], TEMP[3] 37: MOV TEMP[5].z, TEMP[3].xxxx 38: MUL TEMP[3].x, TEMP[2].yyyy, TEMP[2].yyyy 39: MAD TEMP[2].x, TEMP[2].xxxx, TEMP[2].xxxx, -TEMP[3].xxxx 40: MAD TEMP[2].xyz, CONST[7].xyzz, TEMP[2].xxxx, TEMP[5].xyzz 41: ADD TEMP[2].xyz, TEMP[2].xyzz, TEMP[4].xyzz 42: MAD TEMP[3].xy, IN[2].xyyy, CONST[12].xyyy, CONST[12].zwww 43: MOV TEMP[3].zw, TEMP[2].yyxy 44: MOV TEMP[2].x, TEMP[2].zzzz 45: MOV OUT[0], TEMP[0] 46: MOV OUT[2], TEMP[3] 47: MOV OUT[3], TEMP[2] 48: MOV OUT[1], TEMP[1] 49: END radeonsi: Compiling shader 11 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_vs <{ float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32, i32, i32, i32, i32, i32, i32) { main_body: %17 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 0, !amdgpu.uniform !0 %18 = load <16 x i8>, <16 x i8> addrspace(2)* %17, align 16, !invariant.load !0 %19 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %18, i32 0, i32 %14) %20 = extractelement <4 x float> %19, i32 0 %21 = extractelement <4 x float> %19, i32 1 %22 = extractelement <4 x float> %19, i32 2 %23 = extractelement <4 x float> %19, i32 3 %24 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 1, !amdgpu.uniform !0 %25 = load <16 x i8>, <16 x i8> addrspace(2)* %24, align 16, !invariant.load !0 %26 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %25, i32 0, i32 %15) %27 = extractelement <4 x float> %26, i32 0 %28 = extractelement <4 x float> %26, i32 1 %29 = extractelement <4 x float> %26, i32 2 %30 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 2, !amdgpu.uniform !0 %31 = load <16 x i8>, <16 x i8> addrspace(2)* %30, align 16, !invariant.load !0 %32 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %31, i32 0, i32 %16) %33 = extractelement <4 x float> %32, i32 0 %34 = extractelement <4 x float> %32, i32 1 %35 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %36 = load <16 x i8>, <16 x i8> addrspace(2)* %35, align 16, !invariant.load !0 %37 = call float @llvm.SI.load.const(<16 x i8> %36, i32 208) %38 = fmul float %37, %20 %39 = call float @llvm.SI.load.const(<16 x i8> %36, i32 212) %40 = fmul float %39, %20 %41 = call float @llvm.SI.load.const(<16 x i8> %36, i32 216) %42 = fmul float %41, %20 %43 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %44 = load <16 x i8>, <16 x i8> addrspace(2)* %43, align 16, !invariant.load !0 %45 = call float @llvm.SI.load.const(<16 x i8> %44, i32 220) %46 = fmul float %45, %20 %47 = call float @llvm.SI.load.const(<16 x i8> %44, i32 224) %48 = fmul float %47, %21 %49 = fadd float %48, %38 %50 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %51 = load <16 x i8>, <16 x i8> addrspace(2)* %50, align 16, !invariant.load !0 %52 = call float @llvm.SI.load.const(<16 x i8> %51, i32 228) %53 = fmul float %52, %21 %54 = fadd float %53, %40 %55 = call float @llvm.SI.load.const(<16 x i8> %51, i32 232) %56 = fmul float %55, %21 %57 = fadd float %56, %42 %58 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %59 = load <16 x i8>, <16 x i8> addrspace(2)* %58, align 16, !invariant.load !0 %60 = call float @llvm.SI.load.const(<16 x i8> %59, i32 236) %61 = fmul float %60, %21 %62 = fadd float %61, %46 %63 = call float @llvm.SI.load.const(<16 x i8> %59, i32 240) %64 = fmul float %63, %22 %65 = fadd float %64, %49 %66 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %67 = load <16 x i8>, <16 x i8> addrspace(2)* %66, align 16, !invariant.load !0 %68 = call float @llvm.SI.load.const(<16 x i8> %67, i32 244) %69 = fmul float %68, %22 %70 = fadd float %69, %54 %71 = call float @llvm.SI.load.const(<16 x i8> %67, i32 248) %72 = fmul float %71, %22 %73 = fadd float %72, %57 %74 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %75 = load <16 x i8>, <16 x i8> addrspace(2)* %74, align 16, !invariant.load !0 %76 = call float @llvm.SI.load.const(<16 x i8> %75, i32 252) %77 = fmul float %76, %22 %78 = fadd float %77, %62 %79 = call float @llvm.SI.load.const(<16 x i8> %75, i32 256) %80 = fmul float %79, %23 %81 = fadd float %80, %65 %82 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %83 = load <16 x i8>, <16 x i8> addrspace(2)* %82, align 16, !invariant.load !0 %84 = call float @llvm.SI.load.const(<16 x i8> %83, i32 260) %85 = fmul float %84, %23 %86 = fadd float %85, %70 %87 = call float @llvm.SI.load.const(<16 x i8> %83, i32 264) %88 = fmul float %87, %23 %89 = fadd float %88, %73 %90 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %91 = load <16 x i8>, <16 x i8> addrspace(2)* %90, align 16, !invariant.load !0 %92 = call float @llvm.SI.load.const(<16 x i8> %91, i32 268) %93 = fmul float %92, %23 %94 = fadd float %93, %78 %95 = fmul float %81, 5.000000e-01 %96 = fmul float %86, 5.000000e-01 %97 = fmul float %94, 5.000000e-01 %98 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %99 = load <16 x i8>, <16 x i8> addrspace(2)* %98, align 16, !invariant.load !0 %100 = call float @llvm.SI.load.const(<16 x i8> %99, i32 0) %101 = fmul float %96, %100 %102 = fadd float %95, %97 %103 = fadd float %101, %97 %104 = call float @llvm.SI.load.const(<16 x i8> %99, i32 128) %105 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %106 = load <16 x i8>, <16 x i8> addrspace(2)* %105, align 16, !invariant.load !0 %107 = call float @llvm.SI.load.const(<16 x i8> %106, i32 144) %108 = call float @llvm.SI.load.const(<16 x i8> %106, i32 160) %109 = call float @llvm.SI.load.const(<16 x i8> %106, i32 132) %110 = call float @llvm.SI.load.const(<16 x i8> %106, i32 148) %111 = call float @llvm.SI.load.const(<16 x i8> %106, i32 164) %112 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %113 = load <16 x i8>, <16 x i8> addrspace(2)* %112, align 16, !invariant.load !0 %114 = call float @llvm.SI.load.const(<16 x i8> %113, i32 136) %115 = call float @llvm.SI.load.const(<16 x i8> %113, i32 152) %116 = call float @llvm.SI.load.const(<16 x i8> %113, i32 168) %117 = fmul float %104, %27 %118 = fmul float %107, %27 %119 = fmul float %108, %27 %120 = fmul float %109, %28 %121 = fadd float %120, %117 %122 = fmul float %110, %28 %123 = fadd float %122, %118 %124 = fmul float %111, %28 %125 = fadd float %124, %119 %126 = fmul float %114, %29 %127 = fadd float %126, %121 %128 = fmul float %115, %29 %129 = fadd float %128, %123 %130 = fmul float %116, %29 %131 = fadd float %130, %125 %132 = fmul float %127, %127 %133 = fmul float %129, %129 %134 = fadd float %133, %132 %135 = fmul float %131, %131 %136 = fadd float %134, %135 %137 = call float @llvm.sqrt.f32(float %136) %138 = fdiv float 1.000000e+00, %137, !fpmath !1 %139 = fmul float %127, %138 %140 = fmul float %129, %138 %141 = fmul float %131, %138 %142 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %143 = load <16 x i8>, <16 x i8> addrspace(2)* %142, align 16, !invariant.load !0 %144 = call float @llvm.SI.load.const(<16 x i8> %143, i32 16) %145 = call float @llvm.SI.load.const(<16 x i8> %143, i32 20) %146 = call float @llvm.SI.load.const(<16 x i8> %143, i32 24) %147 = call float @llvm.SI.load.const(<16 x i8> %143, i32 28) %148 = fmul float %144, %139 %149 = fmul float %145, %140 %150 = fadd float %148, %149 %151 = fmul float %146, %141 %152 = fadd float %150, %151 %153 = fadd float %152, %147 %154 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %155 = load <16 x i8>, <16 x i8> addrspace(2)* %154, align 16, !invariant.load !0 %156 = call float @llvm.SI.load.const(<16 x i8> %155, i32 32) %157 = call float @llvm.SI.load.const(<16 x i8> %155, i32 36) %158 = call float @llvm.SI.load.const(<16 x i8> %155, i32 40) %159 = call float @llvm.SI.load.const(<16 x i8> %155, i32 44) %160 = fmul float %156, %139 %161 = fmul float %157, %140 %162 = fadd float %160, %161 %163 = fmul float %158, %141 %164 = fadd float %162, %163 %165 = fadd float %164, %159 %166 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %167 = load <16 x i8>, <16 x i8> addrspace(2)* %166, align 16, !invariant.load !0 %168 = call float @llvm.SI.load.const(<16 x i8> %167, i32 48) %169 = call float @llvm.SI.load.const(<16 x i8> %167, i32 52) %170 = call float @llvm.SI.load.const(<16 x i8> %167, i32 56) %171 = call float @llvm.SI.load.const(<16 x i8> %167, i32 60) %172 = fmul float %168, %139 %173 = fmul float %169, %140 %174 = fadd float %172, %173 %175 = fmul float %170, %141 %176 = fadd float %174, %175 %177 = fadd float %176, %171 %178 = fmul float %139, %140 %179 = fmul float %140, %141 %180 = fmul float %141, %141 %181 = fmul float %141, %139 %182 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %183 = load <16 x i8>, <16 x i8> addrspace(2)* %182, align 16, !invariant.load !0 %184 = call float @llvm.SI.load.const(<16 x i8> %183, i32 64) %185 = call float @llvm.SI.load.const(<16 x i8> %183, i32 68) %186 = call float @llvm.SI.load.const(<16 x i8> %183, i32 72) %187 = call float @llvm.SI.load.const(<16 x i8> %183, i32 76) %188 = fmul float %184, %178 %189 = fmul float %185, %179 %190 = fadd float %188, %189 %191 = fmul float %186, %180 %192 = fadd float %190, %191 %193 = fmul float %187, %181 %194 = fadd float %192, %193 %195 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %196 = load <16 x i8>, <16 x i8> addrspace(2)* %195, align 16, !invariant.load !0 %197 = call float @llvm.SI.load.const(<16 x i8> %196, i32 80) %198 = call float @llvm.SI.load.const(<16 x i8> %196, i32 84) %199 = call float @llvm.SI.load.const(<16 x i8> %196, i32 88) %200 = call float @llvm.SI.load.const(<16 x i8> %196, i32 92) %201 = fmul float %197, %178 %202 = fmul float %198, %179 %203 = fadd float %201, %202 %204 = fmul float %199, %180 %205 = fadd float %203, %204 %206 = fmul float %200, %181 %207 = fadd float %205, %206 %208 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %209 = load <16 x i8>, <16 x i8> addrspace(2)* %208, align 16, !invariant.load !0 %210 = call float @llvm.SI.load.const(<16 x i8> %209, i32 96) %211 = call float @llvm.SI.load.const(<16 x i8> %209, i32 100) %212 = call float @llvm.SI.load.const(<16 x i8> %209, i32 104) %213 = call float @llvm.SI.load.const(<16 x i8> %209, i32 108) %214 = fmul float %210, %178 %215 = fmul float %211, %179 %216 = fadd float %214, %215 %217 = fmul float %212, %180 %218 = fadd float %216, %217 %219 = fmul float %213, %181 %220 = fadd float %218, %219 %221 = fmul float %140, %140 %222 = fmul float %139, %139 %223 = fsub float %222, %221 %224 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %225 = load <16 x i8>, <16 x i8> addrspace(2)* %224, align 16, !invariant.load !0 %226 = call float @llvm.SI.load.const(<16 x i8> %225, i32 112) %227 = fmul float %226, %223 %228 = fadd float %227, %194 %229 = call float @llvm.SI.load.const(<16 x i8> %225, i32 116) %230 = fmul float %229, %223 %231 = fadd float %230, %207 %232 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %233 = load <16 x i8>, <16 x i8> addrspace(2)* %232, align 16, !invariant.load !0 %234 = call float @llvm.SI.load.const(<16 x i8> %233, i32 120) %235 = fmul float %234, %223 %236 = fadd float %235, %220 %237 = fadd float %228, %153 %238 = fadd float %231, %165 %239 = fadd float %236, %177 %240 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %241 = load <16 x i8>, <16 x i8> addrspace(2)* %240, align 16, !invariant.load !0 %242 = call float @llvm.SI.load.const(<16 x i8> %241, i32 192) %243 = call float @llvm.SI.load.const(<16 x i8> %241, i32 200) %244 = fmul float %33, %242 %245 = fadd float %244, %243 %246 = call float @llvm.SI.load.const(<16 x i8> %241, i32 196) %247 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %248 = load <16 x i8>, <16 x i8> addrspace(2)* %247, align 16, !invariant.load !0 %249 = call float @llvm.SI.load.const(<16 x i8> %248, i32 204) %250 = fmul float %34, %246 %251 = fadd float %250, %249 %252 = bitcast i32 %12 to float %253 = insertvalue <{ float, float, float }> undef, float %252, 2 call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 32, i32 0, float %102, float %103, float %89, float %94) call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 33, i32 0, float %245, float %251, float %237, float %238) call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 34, i32 0, float %239, float %238, float %239, float undef) call void @llvm.SI.export(i32 15, i32 0, i32 1, i32 12, i32 0, float %81, float %86, float %89, float %94) ret <{ float, float, float }> %253 } ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.vs.load.input(<16 x i8>, i32, i32) #0 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #0 ; Function Attrs: nounwind readnone declare float @llvm.sqrt.f32(float) #0 ; Function Attrs: nounwind declare void @llvm.SI.export(i32, i32, i32, i32, i32, float, float, float, float) #1 attributes #0 = { nounwind readnone } attributes #1 = { nounwind } !0 = !{} !1 = !{float 2.500000e+00} FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL IN[1], GENERIC[1], PERSPECTIVE DCL IN[2], GENERIC[2], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL SVIEW[0], 2D, FLOAT DCL SVIEW[1], 2D, FLOAT DCL CONST[1] DCL TEMP[0..3], LOCAL IMM[0] FLT32 { 1.0000, 0.0000, 0.0000, 0.0000} 0: MOV TEMP[0].xy, IN[1].zwzz 1: MOV TEMP[0].z, IN[2].xxxx 2: MOV TEMP[1].xy, IN[1].xyyy 3: TEX TEMP[1], TEMP[1], SAMP[0], 2D 4: MUL TEMP[1].xyz, TEMP[1], CONST[1] 5: MOV TEMP[2].xy, IN[0].xyyy 6: MOV TEMP[2].w, IN[0].wwww 7: TXP TEMP[2], TEMP[2], SAMP[1], 2D 8: LG2 TEMP[3].x, TEMP[2].xxxx 9: LG2 TEMP[3].y, TEMP[2].yyyy 10: LG2 TEMP[3].z, TEMP[2].zzzz 11: LG2 TEMP[3].w, TEMP[2].wwww 12: MOV TEMP[2].xyz, -TEMP[3] 13: ADD TEMP[2].xyz, TEMP[2].xyzz, TEMP[0].xyzz 14: MUL TEMP[0].xyz, TEMP[1].xyzz, TEMP[2].xyzz 15: MOV TEMP[0].xyz, TEMP[0].xyzx 16: MOV TEMP[0].w, IMM[0].xxxx 17: MOV OUT[0], TEMP[0] 18: END radeonsi: Compiling shader 12 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_ps <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), float inreg, i32 inreg, <2 x i32>, <2 x i32>, <2 x i32>, <3 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, float, float, float, float, float, i32, i32, float, i32) #0 { main_body: %23 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %24 = call float @llvm.SI.fs.interp(i32 3, i32 1, i32 %6, <2 x i32> %8) %25 = call float @llvm.SI.fs.interp(i32 0, i32 2, i32 %6, <2 x i32> %8) %26 = call float @llvm.SI.fs.interp(i32 0, i32 1, i32 %6, <2 x i32> %8) %27 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %28 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 0, !amdgpu.uniform !0 %29 = load <8 x i32>, <8 x i32> addrspace(2)* %28, align 32, !invariant.load !0 %30 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %31 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %30, i64 0, i64 3, !amdgpu.uniform !0 %32 = load <4 x i32>, <4 x i32> addrspace(2)* %31, align 16, !invariant.load !0 %33 = bitcast float %26 to i32 %34 = bitcast float %27 to i32 %35 = insertelement <2 x i32> undef, i32 %33, i32 0 %36 = insertelement <2 x i32> %35, i32 %34, i32 1 %37 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %36, <8 x i32> %29, <4 x i32> %32, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %38 = extractelement <4 x float> %37, i32 0 %39 = extractelement <4 x float> %37, i32 1 %40 = extractelement <4 x float> %37, i32 2 %41 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %42 = load <16 x i8>, <16 x i8> addrspace(2)* %41, align 16, !invariant.load !0 %43 = call float @llvm.SI.load.const(<16 x i8> %42, i32 16) %44 = fmul float %38, %43 %45 = call float @llvm.SI.load.const(<16 x i8> %42, i32 20) %46 = fmul float %39, %45 %47 = call float @llvm.SI.load.const(<16 x i8> %42, i32 24) %48 = fmul float %40, %47 %49 = call float @llvm.SI.fs.interp(i32 0, i32 0, i32 %6, <2 x i32> %8) %50 = call float @llvm.SI.fs.interp(i32 1, i32 0, i32 %6, <2 x i32> %8) %51 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %6, <2 x i32> %8) %52 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 2, !amdgpu.uniform !0 %53 = load <8 x i32>, <8 x i32> addrspace(2)* %52, align 32, !invariant.load !0 %54 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %55 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %54, i64 0, i64 7, !amdgpu.uniform !0 %56 = load <4 x i32>, <4 x i32> addrspace(2)* %55, align 16, !invariant.load !0 %57 = fdiv float %49, %51, !fpmath !1 %58 = fdiv float %50, %51, !fpmath !1 %59 = bitcast float %57 to i32 %60 = bitcast float %58 to i32 %61 = insertelement <2 x i32> undef, i32 %59, i32 0 %62 = insertelement <2 x i32> %61, i32 %60, i32 1 %63 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %62, <8 x i32> %53, <4 x i32> %56, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %64 = extractelement <4 x float> %63, i32 0 %65 = extractelement <4 x float> %63, i32 1 %66 = extractelement <4 x float> %63, i32 2 %67 = call float @llvm.log2.f32(float %64) %68 = call float @llvm.log2.f32(float %65) %69 = call float @llvm.log2.f32(float %66) %70 = fsub float %23, %67 %71 = fsub float %24, %68 %72 = fsub float %25, %69 %73 = fmul float %44, %70 %74 = fmul float %46, %71 %75 = fmul float %48, %72 %76 = bitcast float %5 to i32 %77 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> undef, i32 %76, 10 %78 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %77, float %73, 11 %79 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %78, float %74, 12 %80 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %79, float %75, 13 %81 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %80, float 1.000000e+00, 14 %82 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %81, float %21, 24 ret <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %82 } ; Function Attrs: nounwind readnone declare float @llvm.SI.fs.interp(i32, i32, i32, <2 x i32>) #1 ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.log2.f32(float) #1 attributes #0 = { "InitialPSInputAddr"="36983" } attributes #1 = { nounwind readnone } !0 = !{} !1 = !{float 2.500000e+00} FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL IN[1], GENERIC[1], PERSPECTIVE DCL OUT[0], COLOR DCL OUT[1], COLOR[1] DCL OUT[2], COLOR[2] DCL OUT[3], COLOR[3] DCL SAMP[0] DCL SVIEW[0], 2D, FLOAT DCL CONST[1] DCL TEMP[0..4], LOCAL IMM[0] FLT32 { 1.0000, 0.5000, 0.0000, 0.0000} 0: MOV TEMP[0].xy, IN[0].zwzz 1: MOV TEMP[0].z, IN[1].xxxx 2: MOV TEMP[1].xy, IN[0].xyyy 3: TEX TEMP[1], TEMP[1], SAMP[0], 2D 4: MUL TEMP[1].xyz, TEMP[1], CONST[1] 5: MOV TEMP[2].w, IMM[0].xxxx 6: MAD TEMP[2].xyz, TEMP[0].xyzz, IMM[0].yyyy, IMM[0].yyyy 7: MUL TEMP[0].xyz, TEMP[1].xyzz, IN[1].yzww 8: MOV TEMP[1].xyz, TEMP[1].xyzx 9: MOV TEMP[3].w, IMM[0].xxxx 10: EX2 TEMP[4].x, -TEMP[0].xxxx 11: EX2 TEMP[4].y, -TEMP[0].yyyy 12: EX2 TEMP[4].z, -TEMP[0].zzzz 13: MOV TEMP[3].xyz, TEMP[4].xyzx 14: MOV TEMP[1].w, IMM[0].xxxx 15: MOV OUT[2], TEMP[2] 16: MOV OUT[1], IMM[0].zzzz 17: MOV OUT[0], TEMP[1] 18: MOV OUT[3], TEMP[3] 19: END radeonsi: Compiling shader 13 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_ps <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), float inreg, i32 inreg, <2 x i32>, <2 x i32>, <2 x i32>, <3 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, float, float, float, float, float, i32, i32, float, i32) #0 { main_body: %23 = call float @llvm.SI.fs.interp(i32 2, i32 0, i32 %6, <2 x i32> %8) %24 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %6, <2 x i32> %8) %25 = call float @llvm.SI.fs.interp(i32 0, i32 1, i32 %6, <2 x i32> %8) %26 = call float @llvm.SI.fs.interp(i32 0, i32 0, i32 %6, <2 x i32> %8) %27 = call float @llvm.SI.fs.interp(i32 1, i32 0, i32 %6, <2 x i32> %8) %28 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 0, !amdgpu.uniform !0 %29 = load <8 x i32>, <8 x i32> addrspace(2)* %28, align 32, !invariant.load !0 %30 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %31 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %30, i64 0, i64 3, !amdgpu.uniform !0 %32 = load <4 x i32>, <4 x i32> addrspace(2)* %31, align 16, !invariant.load !0 %33 = bitcast float %26 to i32 %34 = bitcast float %27 to i32 %35 = insertelement <2 x i32> undef, i32 %33, i32 0 %36 = insertelement <2 x i32> %35, i32 %34, i32 1 %37 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %36, <8 x i32> %29, <4 x i32> %32, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %38 = extractelement <4 x float> %37, i32 0 %39 = extractelement <4 x float> %37, i32 1 %40 = extractelement <4 x float> %37, i32 2 %41 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %42 = load <16 x i8>, <16 x i8> addrspace(2)* %41, align 16, !invariant.load !0 %43 = call float @llvm.SI.load.const(<16 x i8> %42, i32 16) %44 = fmul float %38, %43 %45 = call float @llvm.SI.load.const(<16 x i8> %42, i32 20) %46 = fmul float %39, %45 %47 = call float @llvm.SI.load.const(<16 x i8> %42, i32 24) %48 = fmul float %40, %47 %49 = fmul float %23, 5.000000e-01 %50 = fadd float %49, 5.000000e-01 %51 = fmul float %24, 5.000000e-01 %52 = fadd float %51, 5.000000e-01 %53 = fmul float %25, 5.000000e-01 %54 = fadd float %53, 5.000000e-01 %55 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %56 = fmul float %44, %55 %57 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %58 = fmul float %46, %57 %59 = call float @llvm.SI.fs.interp(i32 3, i32 1, i32 %6, <2 x i32> %8) %60 = fmul float %48, %59 %61 = fsub float -0.000000e+00, %56 %62 = call float @llvm.exp2.f32(float %61) %63 = fsub float -0.000000e+00, %58 %64 = call float @llvm.exp2.f32(float %63) %65 = fsub float -0.000000e+00, %60 %66 = call float @llvm.exp2.f32(float %65) %67 = bitcast float %5 to i32 %68 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> undef, i32 %67, 10 %69 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %68, float %44, 11 %70 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %69, float %46, 12 %71 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %70, float %48, 13 %72 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %71, float 1.000000e+00, 14 %73 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %72, float 0.000000e+00, 15 %74 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %73, float 0.000000e+00, 16 %75 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %74, float 0.000000e+00, 17 %76 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %75, float 0.000000e+00, 18 %77 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %76, float %50, 19 %78 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %77, float %52, 20 %79 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %78, float %54, 21 %80 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %79, float 1.000000e+00, 22 %81 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %80, float %62, 23 %82 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %81, float %64, 24 %83 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %82, float %66, 25 %84 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %83, float 1.000000e+00, 26 %85 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %84, float %21, 27 ret <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %85 } ; Function Attrs: nounwind readnone declare float @llvm.SI.fs.interp(i32, i32, i32, <2 x i32>) #1 ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.exp2.f32(float) #1 attributes #0 = { "InitialPSInputAddr"="36983" } attributes #1 = { nounwind readnone } !0 = !{} VERT PROPERTY NEXT_SHADER FRAG DCL IN[0] DCL IN[1] DCL IN[2] DCL IN[3] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] DCL CONST[0..7] DCL TEMP[0..1], LOCAL IMM[0] FLT32 { 0.0000, 0.0001, 0.0000, 0.0000} 0: MOV TEMP[0].xyz, IN[0] 1: UIF CONST[2].xxxx :0 2: MAD TEMP[0].xy, IN[2].xyyy, CONST[0].xyyy, CONST[0].zwww 3: FSLT TEMP[1].x, IMM[0].xxxx, IN[0].zzzz 4: UIF TEMP[1].xxxx :0 5: MOV TEMP[1].x, IMM[0].yyyy 6: ELSE :0 7: MOV TEMP[1].x, IMM[0].xxxx 8: ENDIF 9: MOV TEMP[0].z, TEMP[1].xxxx 10: ENDIF 11: UIF CONST[2].yyyy :0 12: MAD TEMP[0].xy, IN[3].xyyy, CONST[1].xyyy, CONST[1].zwww 13: FSLT TEMP[1].x, IMM[0].xxxx, TEMP[0].zzzz 14: UIF TEMP[1].xxxx :0 15: MOV TEMP[1].x, IMM[0].yyyy 16: ELSE :0 17: MOV TEMP[1].x, IMM[0].xxxx 18: ENDIF 19: MOV TEMP[0].z, TEMP[1].xxxx 20: ENDIF 21: MUL TEMP[1], CONST[4], TEMP[0].xxxx 22: MAD TEMP[1], CONST[5], TEMP[0].yyyy, TEMP[1] 23: MAD TEMP[0], CONST[6], TEMP[0].zzzz, TEMP[1] 24: MAD TEMP[0], CONST[7], IN[0].wwww, TEMP[0] 25: MAD TEMP[1].xy, IN[1].xyyy, CONST[3].xyyy, CONST[3].zwww 26: MOV OUT[0], TEMP[0] 27: MOV OUT[1], TEMP[1] 28: END radeonsi: Compiling shader 14 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_vs <{ float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32, i32, i32, i32, i32, i32, i32, i32) { main_body: %18 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 0, !amdgpu.uniform !0 %19 = load <16 x i8>, <16 x i8> addrspace(2)* %18, align 16, !invariant.load !0 %20 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %19, i32 0, i32 %14) %21 = extractelement <4 x float> %20, i32 0 %22 = extractelement <4 x float> %20, i32 1 %23 = extractelement <4 x float> %20, i32 2 %24 = extractelement <4 x float> %20, i32 3 %25 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 1, !amdgpu.uniform !0 %26 = load <16 x i8>, <16 x i8> addrspace(2)* %25, align 16, !invariant.load !0 %27 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %26, i32 0, i32 %15) %28 = extractelement <4 x float> %27, i32 0 %29 = extractelement <4 x float> %27, i32 1 %30 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 2, !amdgpu.uniform !0 %31 = load <16 x i8>, <16 x i8> addrspace(2)* %30, align 16, !invariant.load !0 %32 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %31, i32 0, i32 %16) %33 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 3, !amdgpu.uniform !0 %34 = load <16 x i8>, <16 x i8> addrspace(2)* %33, align 16, !invariant.load !0 %35 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %34, i32 0, i32 %17) %36 = extractelement <4 x float> %35, i32 0 %37 = extractelement <4 x float> %35, i32 1 %38 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %39 = load <16 x i8>, <16 x i8> addrspace(2)* %38, align 16, !invariant.load !0 %40 = call float @llvm.SI.load.const(<16 x i8> %39, i32 32) %41 = bitcast float %40 to i32 %42 = icmp eq i32 %41, 0 br i1 %42, label %endif10, label %if1 if1: ; preds = %main_body %43 = extractelement <4 x float> %32, i32 1 %44 = extractelement <4 x float> %32, i32 0 %45 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %46 = load <16 x i8>, <16 x i8> addrspace(2)* %45, align 16, !invariant.load !0 %47 = call float @llvm.SI.load.const(<16 x i8> %46, i32 0) %48 = call float @llvm.SI.load.const(<16 x i8> %46, i32 8) %49 = fmul float %44, %47 %50 = fadd float %49, %48 %51 = call float @llvm.SI.load.const(<16 x i8> %46, i32 4) %52 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %53 = load <16 x i8>, <16 x i8> addrspace(2)* %52, align 16, !invariant.load !0 %54 = call float @llvm.SI.load.const(<16 x i8> %53, i32 12) %55 = fmul float %43, %51 %56 = fadd float %55, %54 %57 = fcmp ogt float %23, 0.000000e+00 %. = select i1 %57, float 0x3F1A36E2E0000000, float 0.000000e+00 br label %endif10 endif10: ; preds = %main_body, %if1 %.05 = phi float [ %., %if1 ], [ %23, %main_body ] %.03 = phi float [ %56, %if1 ], [ %22, %main_body ] %.0 = phi float [ %50, %if1 ], [ %21, %main_body ] %58 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %59 = load <16 x i8>, <16 x i8> addrspace(2)* %58, align 16, !invariant.load !0 %60 = call float @llvm.SI.load.const(<16 x i8> %59, i32 36) %61 = bitcast float %60 to i32 %62 = icmp eq i32 %61, 0 br i1 %62, label %endif20, label %if11 if11: ; preds = %endif10 %63 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %64 = load <16 x i8>, <16 x i8> addrspace(2)* %63, align 16, !invariant.load !0 %65 = call float @llvm.SI.load.const(<16 x i8> %64, i32 16) %66 = call float @llvm.SI.load.const(<16 x i8> %64, i32 24) %67 = fmul float %36, %65 %68 = fadd float %67, %66 %69 = call float @llvm.SI.load.const(<16 x i8> %64, i32 20) %70 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %71 = load <16 x i8>, <16 x i8> addrspace(2)* %70, align 16, !invariant.load !0 %72 = call float @llvm.SI.load.const(<16 x i8> %71, i32 28) %73 = fmul float %37, %69 %74 = fadd float %73, %72 %75 = fcmp ogt float %.05, 0.000000e+00 %.9 = select i1 %75, float 0x3F1A36E2E0000000, float 0.000000e+00 br label %endif20 endif20: ; preds = %endif10, %if11 %.16 = phi float [ %.9, %if11 ], [ %.05, %endif10 ] %.14 = phi float [ %74, %if11 ], [ %.03, %endif10 ] %.1 = phi float [ %68, %if11 ], [ %.0, %endif10 ] %76 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %77 = load <16 x i8>, <16 x i8> addrspace(2)* %76, align 16, !invariant.load !0 %78 = call float @llvm.SI.load.const(<16 x i8> %77, i32 64) %79 = fmul float %78, %.1 %80 = call float @llvm.SI.load.const(<16 x i8> %77, i32 68) %81 = fmul float %80, %.1 %82 = call float @llvm.SI.load.const(<16 x i8> %77, i32 72) %83 = fmul float %82, %.1 %84 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %85 = load <16 x i8>, <16 x i8> addrspace(2)* %84, align 16, !invariant.load !0 %86 = call float @llvm.SI.load.const(<16 x i8> %85, i32 76) %87 = fmul float %86, %.1 %88 = call float @llvm.SI.load.const(<16 x i8> %85, i32 80) %89 = fmul float %88, %.14 %90 = fadd float %89, %79 %91 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %92 = load <16 x i8>, <16 x i8> addrspace(2)* %91, align 16, !invariant.load !0 %93 = call float @llvm.SI.load.const(<16 x i8> %92, i32 84) %94 = fmul float %93, %.14 %95 = fadd float %94, %81 %96 = call float @llvm.SI.load.const(<16 x i8> %92, i32 88) %97 = fmul float %96, %.14 %98 = fadd float %97, %83 %99 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %100 = load <16 x i8>, <16 x i8> addrspace(2)* %99, align 16, !invariant.load !0 %101 = call float @llvm.SI.load.const(<16 x i8> %100, i32 92) %102 = fmul float %101, %.14 %103 = fadd float %102, %87 %104 = call float @llvm.SI.load.const(<16 x i8> %100, i32 96) %105 = fmul float %104, %.16 %106 = fadd float %105, %90 %107 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %108 = load <16 x i8>, <16 x i8> addrspace(2)* %107, align 16, !invariant.load !0 %109 = call float @llvm.SI.load.const(<16 x i8> %108, i32 100) %110 = fmul float %109, %.16 %111 = fadd float %110, %95 %112 = call float @llvm.SI.load.const(<16 x i8> %108, i32 104) %113 = fmul float %112, %.16 %114 = fadd float %113, %98 %115 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %116 = load <16 x i8>, <16 x i8> addrspace(2)* %115, align 16, !invariant.load !0 %117 = call float @llvm.SI.load.const(<16 x i8> %116, i32 108) %118 = fmul float %117, %.16 %119 = fadd float %118, %103 %120 = call float @llvm.SI.load.const(<16 x i8> %116, i32 112) %121 = fmul float %120, %24 %122 = fadd float %121, %106 %123 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %124 = load <16 x i8>, <16 x i8> addrspace(2)* %123, align 16, !invariant.load !0 %125 = call float @llvm.SI.load.const(<16 x i8> %124, i32 116) %126 = fmul float %125, %24 %127 = fadd float %126, %111 %128 = call float @llvm.SI.load.const(<16 x i8> %124, i32 120) %129 = fmul float %128, %24 %130 = fadd float %129, %114 %131 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %132 = load <16 x i8>, <16 x i8> addrspace(2)* %131, align 16, !invariant.load !0 %133 = call float @llvm.SI.load.const(<16 x i8> %132, i32 124) %134 = fmul float %133, %24 %135 = fadd float %134, %119 %136 = call float @llvm.SI.load.const(<16 x i8> %132, i32 48) %137 = call float @llvm.SI.load.const(<16 x i8> %132, i32 56) %138 = fmul float %28, %136 %139 = fadd float %138, %137 %140 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %141 = load <16 x i8>, <16 x i8> addrspace(2)* %140, align 16, !invariant.load !0 %142 = call float @llvm.SI.load.const(<16 x i8> %141, i32 52) %143 = call float @llvm.SI.load.const(<16 x i8> %141, i32 60) %144 = fmul float %29, %142 %145 = fadd float %144, %143 %146 = bitcast i32 %12 to float %147 = insertvalue <{ float, float, float }> undef, float %146, 2 call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 32, i32 0, float %139, float %145, float %98, float %103) call void @llvm.SI.export(i32 15, i32 0, i32 1, i32 12, i32 0, float %122, float %127, float %130, float %135) ret <{ float, float, float }> %147 } ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.vs.load.input(<16 x i8>, i32, i32) #0 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #0 ; Function Attrs: nounwind declare void @llvm.SI.export(i32, i32, i32, i32, i32, float, float, float, float) #1 attributes #0 = { nounwind readnone } attributes #1 = { nounwind } !0 = !{} FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SVIEW[0], 2D, FLOAT DCL CONST[1..5] DCL TEMP[0..4], LOCAL IMM[0] FLT32 { 0.0000, 1.0000, 0.0103, 0.0200} IMM[1] FLT32 { 255.0000, 0.0039, 0.0000, 0.0000} 0: MOV TEMP[0].xy, IN[0].xyyy 1: TEX TEMP[0], TEMP[0], SAMP[0], 2D 2: MUL TEMP[0].xyz, TEMP[0], CONST[1] 3: MOV TEMP[1], IMM[0].xxxx 4: UIF CONST[2].xxxx :0 5: MOV TEMP[1].w, IMM[0].yyyy 6: MOV_SAT TEMP[2].x, CONST[3].xxxx 7: POW TEMP[3].x, TEMP[0].xxxx, TEMP[2].xxxx 8: POW TEMP[3].y, TEMP[0].yyyy, TEMP[2].xxxx 9: POW TEMP[3].z, TEMP[0].zzzz, TEMP[2].xxxx 10: MAX TEMP[0].xyz, TEMP[3].xyzz, IMM[0].xxxx 11: MIN TEMP[1].xyz, TEMP[0].xyzz, CONST[4].xxxx 12: ENDIF 13: UIF CONST[2].yyyy :0 14: FSNE TEMP[0].x, CONST[5].xxxx, IMM[0].xxxx 15: UIF TEMP[0].xxxx :0 16: MOV TEMP[0].xyz, IMM[0].xxxx 17: ELSE :0 18: MOV TEMP[0].xyz, IMM[0].xxxx 19: ENDIF 20: MUL TEMP[0].xyz, TEMP[0].xyzz, IMM[0].zzzz 21: MAX TEMP[3].x, TEMP[0].xxxx, TEMP[0].yyyy 22: MAX TEMP[4].x, TEMP[0].zzzz, IMM[0].wwww 23: MAX TEMP[3].x, TEMP[3].xxxx, TEMP[4].xxxx 24: MUL TEMP[3].x, TEMP[3].xxxx, IMM[1].xxxx 25: CEIL TEMP[3].x, TEMP[3].xxxx 26: MUL TEMP[3].x, TEMP[3].xxxx, IMM[1].yyyy 27: MAX TEMP[3].x, TEMP[3].xxxx, IMM[0].wwww 28: MOV TEMP[2].w, TEMP[3].xxxx 29: RCP TEMP[3].x, TEMP[3].xxxx 30: MUL TEMP[2].xyz, TEMP[0].xyzz, TEMP[3].xxxx 31: MOV TEMP[1], TEMP[2] 32: ENDIF 33: MOV OUT[0], TEMP[1] 34: END radeonsi: Compiling shader 15 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_ps <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), float inreg, i32 inreg, <2 x i32>, <2 x i32>, <2 x i32>, <3 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, float, float, float, float, float, i32, i32, float, i32) #0 { main_body: %23 = call float @llvm.SI.fs.interp(i32 0, i32 0, i32 %6, <2 x i32> %8) %24 = call float @llvm.SI.fs.interp(i32 1, i32 0, i32 %6, <2 x i32> %8) %25 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 0, !amdgpu.uniform !0 %26 = load <8 x i32>, <8 x i32> addrspace(2)* %25, align 32, !invariant.load !0 %27 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %28 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %27, i64 0, i64 3, !amdgpu.uniform !0 %29 = load <4 x i32>, <4 x i32> addrspace(2)* %28, align 16, !invariant.load !0 %30 = bitcast float %23 to i32 %31 = bitcast float %24 to i32 %32 = insertelement <2 x i32> undef, i32 %30, i32 0 %33 = insertelement <2 x i32> %32, i32 %31, i32 1 %34 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %33, <8 x i32> %26, <4 x i32> %29, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %35 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %36 = load <16 x i8>, <16 x i8> addrspace(2)* %35, align 16, !invariant.load !0 %37 = call float @llvm.SI.load.const(<16 x i8> %36, i32 32) %38 = bitcast float %37 to i32 %39 = icmp eq i32 %38, 0 br i1 %39, label %endif12, label %if4 if4: ; preds = %main_body %40 = extractelement <4 x float> %34, i32 2 %41 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %42 = load <16 x i8>, <16 x i8> addrspace(2)* %41, align 16, !invariant.load !0 %43 = call float @llvm.SI.load.const(<16 x i8> %42, i32 24) %44 = fmul float %40, %43 %45 = extractelement <4 x float> %34, i32 1 %46 = call float @llvm.SI.load.const(<16 x i8> %42, i32 20) %47 = fmul float %45, %46 %48 = extractelement <4 x float> %34, i32 0 %49 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %50 = load <16 x i8>, <16 x i8> addrspace(2)* %49, align 16, !invariant.load !0 %51 = call float @llvm.SI.load.const(<16 x i8> %50, i32 16) %52 = fmul float %48, %51 %53 = call float @llvm.SI.load.const(<16 x i8> %50, i32 48) %54 = call float @llvm.AMDGPU.clamp.(float %53, float 0.000000e+00, float 1.000000e+00) %55 = call float @llvm.pow.f32(float %52, float %54) %56 = call float @llvm.pow.f32(float %47, float %54) %57 = call float @llvm.pow.f32(float %44, float %54) %58 = call float @llvm.maxnum.f32(float %55, float 0.000000e+00) %59 = call float @llvm.maxnum.f32(float %56, float 0.000000e+00) %60 = call float @llvm.maxnum.f32(float %57, float 0.000000e+00) %61 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %62 = load <16 x i8>, <16 x i8> addrspace(2)* %61, align 16, !invariant.load !0 %63 = call float @llvm.SI.load.const(<16 x i8> %62, i32 64) %64 = call float @llvm.minnum.f32(float %58, float %63) %65 = call float @llvm.SI.load.const(<16 x i8> %62, i32 64) %66 = call float @llvm.minnum.f32(float %59, float %65) %67 = call float @llvm.SI.load.const(<16 x i8> %62, i32 64) %68 = call float @llvm.minnum.f32(float %60, float %67) br label %endif12 endif12: ; preds = %main_body, %if4 %.09 = phi float [ 1.000000e+00, %if4 ], [ 0.000000e+00, %main_body ] %.07 = phi float [ %68, %if4 ], [ 0.000000e+00, %main_body ] %.05 = phi float [ %66, %if4 ], [ 0.000000e+00, %main_body ] %.04 = phi float [ %64, %if4 ], [ 0.000000e+00, %main_body ] %69 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %70 = load <16 x i8>, <16 x i8> addrspace(2)* %69, align 16, !invariant.load !0 %71 = call float @llvm.SI.load.const(<16 x i8> %70, i32 36) %72 = bitcast float %71 to i32 %73 = icmp eq i32 %72, 0 br i1 %73, label %endif32, label %endif19 endif19: ; preds = %endif12 br label %endif32 endif32: ; preds = %endif12, %endif19 %.110 = phi float [ 0x3F98181840000000, %endif19 ], [ %.09, %endif12 ] %.18 = phi float [ 0.000000e+00, %endif19 ], [ %.07, %endif12 ] %.16 = phi float [ 0.000000e+00, %endif19 ], [ %.05, %endif12 ] %.1 = phi float [ 0.000000e+00, %endif19 ], [ %.04, %endif12 ] %74 = bitcast float %5 to i32 %75 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> undef, i32 %74, 10 %76 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %75, float %.1, 11 %77 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %76, float %.16, 12 %78 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %77, float %.18, 13 %79 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %78, float %.110, 14 %80 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %79, float %21, 24 ret <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %80 } ; Function Attrs: nounwind readnone declare float @llvm.SI.fs.interp(i32, i32, i32, <2 x i32>) #1 ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.AMDGPU.clamp.(float, float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.pow.f32(float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.maxnum.f32(float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.minnum.f32(float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.ceil.f32(float) #1 attributes #0 = { "InitialPSInputAddr"="36983" } attributes #1 = { nounwind readnone } !0 = !{} VERT PROPERTY NEXT_SHADER FRAG DCL IN[0] DCL IN[1] DCL IN[2] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] DCL OUT[2], GENERIC[1] DCL OUT[3], GENERIC[2] DCL CONST[0..34] DCL TEMP[0..25], LOCAL DCL ADDR[0] IMM[0] FLT32 { 0.0000, 1.1000, 128.0000, 0.5000} IMM[1] INT32 {0, 1, 0, 0} IMM[2] FLT32 { 1.0000, 0.0000, 0.0000, 0.0000} 0: MOV TEMP[0], IMM[0].xxxy 1: MUL TEMP[1].xyz, CONST[23].xyzz, IN[1].xxxx 2: MAD TEMP[1].xyz, CONST[24].xyzz, IN[1].yyyy, TEMP[1].xyzz 3: MAD TEMP[1].xyz, CONST[25].xyzz, IN[1].zzzz, TEMP[1].xyzz 4: DP3 TEMP[2].x, TEMP[1].xyzz, TEMP[1].xyzz 5: RSQ TEMP[2].x, TEMP[2].xxxx 6: MUL TEMP[1].xyz, TEMP[1].xyzz, TEMP[2].xxxx 7: MUL TEMP[2], CONST[31], IN[0].xxxx 8: MAD TEMP[2], CONST[32], IN[0].yyyy, TEMP[2] 9: MAD TEMP[2], CONST[33], IN[0].zzzz, TEMP[2] 10: ADD TEMP[2], TEMP[2], CONST[34] 11: DP3 TEMP[3].x, TEMP[2].xyzz, TEMP[2].xyzz 12: RSQ TEMP[3].x, TEMP[3].xxxx 13: MUL TEMP[2].xyz, TEMP[2].xyzz, TEMP[3].xxxx 14: MOV TEMP[2].xyz, -TEMP[2].xyzx 15: MAD TEMP[3].xyz, CONST[17].xyzz, CONST[16].xyzz, CONST[19].xyzz 16: MOV TEMP[4].xyz, IMM[0].xxxx 17: MUL TEMP[5].x, CONST[20].xxxx, IMM[0].zzzz 18: MOV TEMP[6].x, IMM[1].xxxx 19: BGNLOOP :0 20: ISGE TEMP[7].x, TEMP[6].xxxx, CONST[21].xxxx 21: UIF TEMP[7].xxxx :0 22: BRK 23: ENDIF 24: UARL ADDR[0].x, TEMP[6].xxxx 25: MOV TEMP[8].xyz, CONST[ADDR[0].x+8].xyzx 26: MOV TEMP[9].xyz, TEMP[4].xyzx 27: DP3 TEMP[10].x, TEMP[1].xyzz, TEMP[8].xyzz 28: MAX TEMP[11].x, TEMP[10].xxxx, IMM[0].xxxx 29: MUL TEMP[12].xyz, TEMP[11].xxxx, CONST[17].xyzz 30: UARL ADDR[0].x, TEMP[6].xxxx 31: UARL ADDR[0].x, TEMP[6].xxxx 32: MUL TEMP[13].xyz, TEMP[12].xyzz, CONST[ADDR[0].x].xyzz 33: FSLT TEMP[14].x, IMM[0].xxxx, TEMP[11].xxxx 34: UIF TEMP[14].xxxx :0 35: ADD TEMP[15].xyz, TEMP[8].xyzz, TEMP[2].xyzz 36: DP3 TEMP[16].x, TEMP[15].xyzz, TEMP[15].xyzz 37: RSQ TEMP[17].x, TEMP[16].xxxx 38: MUL TEMP[18].xyz, TEMP[15].xyzz, TEMP[17].xxxx 39: DP3 TEMP[19].x, TEMP[1].xyzz, TEMP[18].xyzz 40: MAX TEMP[20].x, TEMP[19].xxxx, IMM[0].xxxx 41: POW TEMP[21].x, TEMP[20].xxxx, TEMP[5].xxxx 42: MOV_SAT TEMP[22].x, TEMP[21].xxxx 43: MUL TEMP[23].x, IMM[0].wwww, TEMP[22].xxxx 44: UARL ADDR[0].x, TEMP[6].xxxx 45: UARL ADDR[0].x, TEMP[6].xxxx 46: MAD TEMP[9].xyz, TEMP[23].xxxx, CONST[ADDR[0].x].xyzz, TEMP[4].xyzz 47: ENDIF 48: MOV TEMP[4].xyz, TEMP[9].xyzx 49: MUL TEMP[24].xyz, TEMP[13].xyzz, IMM[0].wwww 50: MIN TEMP[25].xyz, TEMP[24].xyzz, IMM[2].xxxx 51: ADD TEMP[3].xyz, TEMP[3].xyzz, TEMP[25].xyzz 52: UADD TEMP[6].x, TEMP[6].xxxx, IMM[1].yyyy 53: ENDLOOP :0 54: MOV TEMP[0].xyz, TEMP[3].xyzx 55: MOV TEMP[0].w, CONST[17].wwww 56: MUL TEMP[4].xyz, TEMP[4].xyzz, CONST[18].xyzz 57: MOV_SAT TEMP[0], TEMP[0] 58: MOV_SAT TEMP[1].xyz, TEMP[4].xyzz 59: MUL TEMP[2], CONST[27], IN[0].xxxx 60: MAD TEMP[2], CONST[28], IN[0].yyyy, TEMP[2] 61: MAD TEMP[2], CONST[29], IN[0].zzzz, TEMP[2] 62: ADD TEMP[2], TEMP[2], CONST[30] 63: MOV TEMP[3].zw, TEMP[1].yyxy 64: MOV TEMP[1].x, TEMP[1].zzzz 65: MAD TEMP[3].xy, IN[2].xyyy, CONST[22].xyyy, CONST[22].zwww 66: MOV OUT[0], TEMP[2] 67: MOV OUT[2], TEMP[3] 68: MOV OUT[1], TEMP[0] 69: MOV OUT[3], TEMP[1] 70: END radeonsi: Compiling shader 16 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_vs <{ float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32, i32, i32, i32, i32, i32, i32) { main_body: %17 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 0, !amdgpu.uniform !0 %18 = load <16 x i8>, <16 x i8> addrspace(2)* %17, align 16, !invariant.load !0 %19 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %18, i32 0, i32 %14) %20 = extractelement <4 x float> %19, i32 0 %21 = extractelement <4 x float> %19, i32 1 %22 = extractelement <4 x float> %19, i32 2 %23 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 1, !amdgpu.uniform !0 %24 = load <16 x i8>, <16 x i8> addrspace(2)* %23, align 16, !invariant.load !0 %25 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %24, i32 0, i32 %15) %26 = extractelement <4 x float> %25, i32 0 %27 = extractelement <4 x float> %25, i32 1 %28 = extractelement <4 x float> %25, i32 2 %29 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 2, !amdgpu.uniform !0 %30 = load <16 x i8>, <16 x i8> addrspace(2)* %29, align 16, !invariant.load !0 %31 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %30, i32 0, i32 %16) %32 = extractelement <4 x float> %31, i32 0 %33 = extractelement <4 x float> %31, i32 1 %34 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %35 = load <16 x i8>, <16 x i8> addrspace(2)* %34, align 16, !invariant.load !0 %36 = call float @llvm.SI.load.const(<16 x i8> %35, i32 368) %37 = fmul float %36, %26 %38 = call float @llvm.SI.load.const(<16 x i8> %35, i32 372) %39 = fmul float %38, %26 %40 = call float @llvm.SI.load.const(<16 x i8> %35, i32 376) %41 = fmul float %40, %26 %42 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %43 = load <16 x i8>, <16 x i8> addrspace(2)* %42, align 16, !invariant.load !0 %44 = call float @llvm.SI.load.const(<16 x i8> %43, i32 384) %45 = fmul float %44, %27 %46 = fadd float %45, %37 %47 = call float @llvm.SI.load.const(<16 x i8> %43, i32 388) %48 = fmul float %47, %27 %49 = fadd float %48, %39 %50 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %51 = load <16 x i8>, <16 x i8> addrspace(2)* %50, align 16, !invariant.load !0 %52 = call float @llvm.SI.load.const(<16 x i8> %51, i32 392) %53 = fmul float %52, %27 %54 = fadd float %53, %41 %55 = call float @llvm.SI.load.const(<16 x i8> %51, i32 400) %56 = fmul float %55, %28 %57 = fadd float %56, %46 %58 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %59 = load <16 x i8>, <16 x i8> addrspace(2)* %58, align 16, !invariant.load !0 %60 = call float @llvm.SI.load.const(<16 x i8> %59, i32 404) %61 = fmul float %60, %28 %62 = fadd float %61, %49 %63 = call float @llvm.SI.load.const(<16 x i8> %59, i32 408) %64 = fmul float %63, %28 %65 = fadd float %64, %54 %66 = fmul float %57, %57 %67 = fmul float %62, %62 %68 = fadd float %67, %66 %69 = fmul float %65, %65 %70 = fadd float %68, %69 %71 = call float @llvm.sqrt.f32(float %70) %72 = fdiv float 1.000000e+00, %71, !fpmath !1 %73 = fmul float %57, %72 %74 = fmul float %62, %72 %75 = fmul float %65, %72 %76 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %77 = load <16 x i8>, <16 x i8> addrspace(2)* %76, align 16, !invariant.load !0 %78 = call float @llvm.SI.load.const(<16 x i8> %77, i32 496) %79 = fmul float %78, %20 %80 = call float @llvm.SI.load.const(<16 x i8> %77, i32 500) %81 = fmul float %80, %20 %82 = call float @llvm.SI.load.const(<16 x i8> %77, i32 504) %83 = fmul float %82, %20 %84 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %85 = load <16 x i8>, <16 x i8> addrspace(2)* %84, align 16, !invariant.load !0 %86 = call float @llvm.SI.load.const(<16 x i8> %85, i32 512) %87 = fmul float %86, %21 %88 = fadd float %87, %79 %89 = call float @llvm.SI.load.const(<16 x i8> %85, i32 516) %90 = fmul float %89, %21 %91 = fadd float %90, %81 %92 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %93 = load <16 x i8>, <16 x i8> addrspace(2)* %92, align 16, !invariant.load !0 %94 = call float @llvm.SI.load.const(<16 x i8> %93, i32 520) %95 = fmul float %94, %21 %96 = fadd float %95, %83 %97 = call float @llvm.SI.load.const(<16 x i8> %93, i32 528) %98 = fmul float %97, %22 %99 = fadd float %98, %88 %100 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %101 = load <16 x i8>, <16 x i8> addrspace(2)* %100, align 16, !invariant.load !0 %102 = call float @llvm.SI.load.const(<16 x i8> %101, i32 532) %103 = fmul float %102, %22 %104 = fadd float %103, %91 %105 = call float @llvm.SI.load.const(<16 x i8> %101, i32 536) %106 = fmul float %105, %22 %107 = fadd float %106, %96 %108 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %109 = load <16 x i8>, <16 x i8> addrspace(2)* %108, align 16, !invariant.load !0 %110 = call float @llvm.SI.load.const(<16 x i8> %109, i32 544) %111 = fadd float %99, %110 %112 = call float @llvm.SI.load.const(<16 x i8> %109, i32 548) %113 = fadd float %104, %112 %114 = call float @llvm.SI.load.const(<16 x i8> %109, i32 552) %115 = fadd float %107, %114 %116 = fmul float %111, %111 %117 = fmul float %113, %113 %118 = fadd float %117, %116 %119 = fmul float %115, %115 %120 = fadd float %118, %119 %121 = call float @llvm.sqrt.f32(float %120) %122 = fdiv float 1.000000e+00, %121, !fpmath !1 %123 = fmul float %111, %122 %124 = fmul float %113, %122 %125 = fmul float %115, %122 %126 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %127 = load <16 x i8>, <16 x i8> addrspace(2)* %126, align 16, !invariant.load !0 %128 = call float @llvm.SI.load.const(<16 x i8> %127, i32 272) %129 = call float @llvm.SI.load.const(<16 x i8> %127, i32 256) %130 = call float @llvm.SI.load.const(<16 x i8> %127, i32 304) %131 = fmul float %128, %129 %132 = fadd float %131, %130 %133 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %134 = load <16 x i8>, <16 x i8> addrspace(2)* %133, align 16, !invariant.load !0 %135 = call float @llvm.SI.load.const(<16 x i8> %134, i32 276) %136 = call float @llvm.SI.load.const(<16 x i8> %134, i32 260) %137 = call float @llvm.SI.load.const(<16 x i8> %134, i32 308) %138 = fmul float %135, %136 %139 = fadd float %138, %137 %140 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %141 = load <16 x i8>, <16 x i8> addrspace(2)* %140, align 16, !invariant.load !0 %142 = call float @llvm.SI.load.const(<16 x i8> %141, i32 280) %143 = call float @llvm.SI.load.const(<16 x i8> %141, i32 264) %144 = call float @llvm.SI.load.const(<16 x i8> %141, i32 312) %145 = fmul float %142, %143 %146 = fadd float %145, %144 %147 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %148 = load <16 x i8>, <16 x i8> addrspace(2)* %147, align 16 %149 = call float @llvm.SI.load.const(<16 x i8> %148, i32 320) %150 = fmul float %149, 1.280000e+02 %151 = call float @llvm.SI.load.const(<16 x i8> %148, i32 336) %152 = bitcast float %151 to i32 br label %loop19 loop19: ; preds = %endif47, %main_body %.014 = phi float [ 0.000000e+00, %main_body ], [ %238, %endif47 ] %.013 = phi float [ 0.000000e+00, %main_body ], [ %.017, %endif47 ] %.012 = phi float [ 0.000000e+00, %main_body ], [ %.016, %endif47 ] %.011 = phi float [ 0.000000e+00, %main_body ], [ %.015, %endif47 ] %.010 = phi float [ %146, %main_body ], [ %235, %endif47 ] %.09 = phi float [ %139, %main_body ], [ %234, %endif47 ] %.0 = phi float [ %132, %main_body ], [ %233, %endif47 ] %153 = bitcast float %.014 to i32 %154 = icmp slt i32 %153, %152 br i1 %154, label %endif23, label %endloop53 endif23: ; preds = %loop19 %155 = bitcast float %.014 to i32 %156 = shl i32 %155, 4 %157 = add i32 %156, 128 %158 = call float @llvm.SI.load.const(<16 x i8> %148, i32 %157) %159 = shl i32 %155, 4 %160 = add i32 %159, 132 %161 = call float @llvm.SI.load.const(<16 x i8> %148, i32 %160) %162 = shl i32 %155, 4 %163 = add i32 %162, 136 %164 = call float @llvm.SI.load.const(<16 x i8> %148, i32 %163) %165 = fmul float %73, %158 %166 = fmul float %74, %161 %167 = fadd float %166, %165 %168 = fmul float %75, %164 %169 = fadd float %167, %168 %170 = call float @llvm.maxnum.f32(float %169, float 0.000000e+00) %171 = call float @llvm.SI.load.const(<16 x i8> %148, i32 272) %172 = fmul float %170, %171 %173 = call float @llvm.SI.load.const(<16 x i8> %148, i32 276) %174 = fmul float %170, %173 %175 = call float @llvm.SI.load.const(<16 x i8> %148, i32 280) %176 = fmul float %170, %175 %177 = bitcast float %.014 to i32 %178 = shl i32 %177, 4 %179 = call float @llvm.SI.load.const(<16 x i8> %148, i32 %178) %180 = fmul float %172, %179 %181 = shl i32 %177, 4 %182 = or i32 %181, 4 %183 = call float @llvm.SI.load.const(<16 x i8> %148, i32 %182) %184 = fmul float %174, %183 %185 = shl i32 %177, 4 %186 = or i32 %185, 8 %187 = call float @llvm.SI.load.const(<16 x i8> %148, i32 %186) %188 = fmul float %176, %187 %189 = fcmp ogt float %170, 0.000000e+00 br i1 %189, label %if34, label %endif47 if34: ; preds = %endif23 %190 = fsub float %158, %123 %191 = fsub float %161, %124 %192 = fsub float %164, %125 %193 = fmul float %190, %190 %194 = fmul float %191, %191 %195 = fadd float %194, %193 %196 = fmul float %192, %192 %197 = fadd float %195, %196 %198 = call float @llvm.sqrt.f32(float %197) %199 = fdiv float 1.000000e+00, %198, !fpmath !1 %200 = fmul float %190, %199 %201 = fmul float %191, %199 %202 = fmul float %192, %199 %203 = fmul float %73, %200 %204 = fmul float %74, %201 %205 = fadd float %204, %203 %206 = fmul float %75, %202 %207 = fadd float %205, %206 %208 = call float @llvm.maxnum.f32(float %207, float 0.000000e+00) %209 = call float @llvm.pow.f32(float %208, float %150) %210 = call float @llvm.AMDGPU.clamp.(float %209, float 0.000000e+00, float 1.000000e+00) %211 = fmul float %210, 5.000000e-01 %212 = bitcast float %.014 to i32 %213 = shl i32 %212, 4 %214 = call float @llvm.SI.load.const(<16 x i8> %148, i32 %213) %215 = fmul float %211, %214 %216 = fadd float %215, %.011 %217 = shl i32 %212, 4 %218 = or i32 %217, 4 %219 = call float @llvm.SI.load.const(<16 x i8> %148, i32 %218) %220 = fmul float %211, %219 %221 = fadd float %220, %.012 %222 = shl i32 %212, 4 %223 = or i32 %222, 8 %224 = call float @llvm.SI.load.const(<16 x i8> %148, i32 %223) %225 = fmul float %211, %224 %226 = fadd float %225, %.013 br label %endif47 endif47: ; preds = %if34, %endif23 %.017 = phi float [ %226, %if34 ], [ %.013, %endif23 ] %.016 = phi float [ %221, %if34 ], [ %.012, %endif23 ] %.015 = phi float [ %216, %if34 ], [ %.011, %endif23 ] %227 = fmul float %180, 5.000000e-01 %228 = fmul float %184, 5.000000e-01 %229 = fmul float %188, 5.000000e-01 %230 = call float @llvm.minnum.f32(float %227, float 1.000000e+00) %231 = call float @llvm.minnum.f32(float %228, float 1.000000e+00) %232 = call float @llvm.minnum.f32(float %229, float 1.000000e+00) %233 = fadd float %.0, %230 %234 = fadd float %.09, %231 %235 = fadd float %.010, %232 %236 = bitcast float %.014 to i32 %237 = add i32 %236, 1 %238 = bitcast i32 %237 to float br label %loop19 endloop53: ; preds = %loop19 %239 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %240 = load <16 x i8>, <16 x i8> addrspace(2)* %239, align 16, !invariant.load !0 %241 = call float @llvm.SI.load.const(<16 x i8> %240, i32 284) %242 = call float @llvm.SI.load.const(<16 x i8> %240, i32 288) %243 = fmul float %.011, %242 %244 = call float @llvm.SI.load.const(<16 x i8> %240, i32 292) %245 = fmul float %.012, %244 %246 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %247 = load <16 x i8>, <16 x i8> addrspace(2)* %246, align 16, !invariant.load !0 %248 = call float @llvm.SI.load.const(<16 x i8> %247, i32 296) %249 = fmul float %.013, %248 %250 = call float @llvm.AMDGPU.clamp.(float %.0, float 0.000000e+00, float 1.000000e+00) %251 = call float @llvm.AMDGPU.clamp.(float %.09, float 0.000000e+00, float 1.000000e+00) %252 = call float @llvm.AMDGPU.clamp.(float %.010, float 0.000000e+00, float 1.000000e+00) %253 = call float @llvm.AMDGPU.clamp.(float %241, float 0.000000e+00, float 1.000000e+00) %254 = call float @llvm.AMDGPU.clamp.(float %243, float 0.000000e+00, float 1.000000e+00) %255 = call float @llvm.AMDGPU.clamp.(float %245, float 0.000000e+00, float 1.000000e+00) %256 = call float @llvm.AMDGPU.clamp.(float %249, float 0.000000e+00, float 1.000000e+00) %257 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %258 = load <16 x i8>, <16 x i8> addrspace(2)* %257, align 16, !invariant.load !0 %259 = call float @llvm.SI.load.const(<16 x i8> %258, i32 432) %260 = fmul float %259, %20 %261 = call float @llvm.SI.load.const(<16 x i8> %258, i32 436) %262 = fmul float %261, %20 %263 = call float @llvm.SI.load.const(<16 x i8> %258, i32 440) %264 = fmul float %263, %20 %265 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %266 = load <16 x i8>, <16 x i8> addrspace(2)* %265, align 16, !invariant.load !0 %267 = call float @llvm.SI.load.const(<16 x i8> %266, i32 444) %268 = fmul float %267, %20 %269 = call float @llvm.SI.load.const(<16 x i8> %266, i32 448) %270 = fmul float %269, %21 %271 = fadd float %270, %260 %272 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %273 = load <16 x i8>, <16 x i8> addrspace(2)* %272, align 16, !invariant.load !0 %274 = call float @llvm.SI.load.const(<16 x i8> %273, i32 452) %275 = fmul float %274, %21 %276 = fadd float %275, %262 %277 = call float @llvm.SI.load.const(<16 x i8> %273, i32 456) %278 = fmul float %277, %21 %279 = fadd float %278, %264 %280 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %281 = load <16 x i8>, <16 x i8> addrspace(2)* %280, align 16, !invariant.load !0 %282 = call float @llvm.SI.load.const(<16 x i8> %281, i32 460) %283 = fmul float %282, %21 %284 = fadd float %283, %268 %285 = call float @llvm.SI.load.const(<16 x i8> %281, i32 464) %286 = fmul float %285, %22 %287 = fadd float %286, %271 %288 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %289 = load <16 x i8>, <16 x i8> addrspace(2)* %288, align 16, !invariant.load !0 %290 = call float @llvm.SI.load.const(<16 x i8> %289, i32 468) %291 = fmul float %290, %22 %292 = fadd float %291, %276 %293 = call float @llvm.SI.load.const(<16 x i8> %289, i32 472) %294 = fmul float %293, %22 %295 = fadd float %294, %279 %296 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %297 = load <16 x i8>, <16 x i8> addrspace(2)* %296, align 16, !invariant.load !0 %298 = call float @llvm.SI.load.const(<16 x i8> %297, i32 476) %299 = fmul float %298, %22 %300 = fadd float %299, %284 %301 = call float @llvm.SI.load.const(<16 x i8> %297, i32 480) %302 = fadd float %287, %301 %303 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %304 = load <16 x i8>, <16 x i8> addrspace(2)* %303, align 16, !invariant.load !0 %305 = call float @llvm.SI.load.const(<16 x i8> %304, i32 484) %306 = fadd float %292, %305 %307 = call float @llvm.SI.load.const(<16 x i8> %304, i32 488) %308 = fadd float %295, %307 %309 = call float @llvm.SI.load.const(<16 x i8> %304, i32 492) %310 = fadd float %300, %309 %311 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %312 = load <16 x i8>, <16 x i8> addrspace(2)* %311, align 16, !invariant.load !0 %313 = call float @llvm.SI.load.const(<16 x i8> %312, i32 352) %314 = call float @llvm.SI.load.const(<16 x i8> %312, i32 360) %315 = fmul float %32, %313 %316 = fadd float %315, %314 %317 = call float @llvm.SI.load.const(<16 x i8> %312, i32 356) %318 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %319 = load <16 x i8>, <16 x i8> addrspace(2)* %318, align 16, !invariant.load !0 %320 = call float @llvm.SI.load.const(<16 x i8> %319, i32 364) %321 = fmul float %33, %317 %322 = fadd float %321, %320 %323 = bitcast i32 %12 to float %324 = insertvalue <{ float, float, float }> undef, float %323, 2 call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 32, i32 0, float %250, float %251, float %252, float %253) call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 33, i32 0, float %316, float %322, float %254, float %255) call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 34, i32 0, float %256, float %255, float %256, float undef) call void @llvm.SI.export(i32 15, i32 0, i32 1, i32 12, i32 0, float %302, float %306, float %308, float %310) ret <{ float, float, float }> %324 } ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.vs.load.input(<16 x i8>, i32, i32) #0 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #0 ; Function Attrs: nounwind readnone declare float @llvm.sqrt.f32(float) #0 ; Function Attrs: nounwind readnone declare float @llvm.maxnum.f32(float, float) #0 ; Function Attrs: nounwind readnone declare float @llvm.pow.f32(float, float) #0 ; Function Attrs: nounwind readnone declare float @llvm.AMDGPU.clamp.(float, float, float) #0 ; Function Attrs: nounwind readnone declare float @llvm.minnum.f32(float, float) #0 ; Function Attrs: nounwind declare void @llvm.SI.export(i32, i32, i32, i32, i32, float, float, float, float) #1 attributes #0 = { nounwind readnone } attributes #1 = { nounwind } !0 = !{} !1 = !{float 2.500000e+00} FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL IN[1], GENERIC[1], PERSPECTIVE DCL IN[2], GENERIC[2], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SVIEW[0], 2D, FLOAT DCL TEMP[0..2], LOCAL IMM[0] FLT32 { 2.0000, 1.0000, 0.0000, 0.0000} 0: MOV TEMP[0].xy, IN[1].zwzz 1: MOV TEMP[0].z, IN[2].xxxx 2: MOV TEMP[1].xy, IN[1].xyyy 3: TEX TEMP[1], TEMP[1], SAMP[0], 2D 4: MUL TEMP[1].xyz, TEMP[1], IN[0] 5: MOV TEMP[1].xyz, TEMP[1].xyzx 6: MUL TEMP[2].xyz, TEMP[1], IMM[0].xxxx 7: MOV TEMP[1].w, IMM[0].yyyy 8: ADD TEMP[1].xyz, TEMP[2].xyzz, TEMP[0].xyzz 9: MOV OUT[0], TEMP[1] 10: END radeonsi: Compiling shader 17 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_ps <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), float inreg, i32 inreg, <2 x i32>, <2 x i32>, <2 x i32>, <3 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, float, float, float, float, float, i32, i32, float, i32) #0 { main_body: %23 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %24 = call float @llvm.SI.fs.interp(i32 3, i32 1, i32 %6, <2 x i32> %8) %25 = call float @llvm.SI.fs.interp(i32 0, i32 2, i32 %6, <2 x i32> %8) %26 = call float @llvm.SI.fs.interp(i32 0, i32 1, i32 %6, <2 x i32> %8) %27 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %28 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 0, !amdgpu.uniform !0 %29 = load <8 x i32>, <8 x i32> addrspace(2)* %28, align 32, !invariant.load !0 %30 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %31 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %30, i64 0, i64 3, !amdgpu.uniform !0 %32 = load <4 x i32>, <4 x i32> addrspace(2)* %31, align 16, !invariant.load !0 %33 = bitcast float %26 to i32 %34 = bitcast float %27 to i32 %35 = insertelement <2 x i32> undef, i32 %33, i32 0 %36 = insertelement <2 x i32> %35, i32 %34, i32 1 %37 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %36, <8 x i32> %29, <4 x i32> %32, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %38 = extractelement <4 x float> %37, i32 0 %39 = extractelement <4 x float> %37, i32 1 %40 = extractelement <4 x float> %37, i32 2 %41 = call float @llvm.SI.fs.interp(i32 0, i32 0, i32 %6, <2 x i32> %8) %42 = fmul float %38, %41 %43 = call float @llvm.SI.fs.interp(i32 1, i32 0, i32 %6, <2 x i32> %8) %44 = fmul float %39, %43 %45 = call float @llvm.SI.fs.interp(i32 2, i32 0, i32 %6, <2 x i32> %8) %46 = fmul float %40, %45 %47 = fmul float %42, 2.000000e+00 %48 = fmul float %44, 2.000000e+00 %49 = fmul float %46, 2.000000e+00 %50 = fadd float %47, %23 %51 = fadd float %48, %24 %52 = fadd float %49, %25 %53 = bitcast float %5 to i32 %54 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> undef, i32 %53, 10 %55 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %54, float %50, 11 %56 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %55, float %51, 12 %57 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %56, float %52, 13 %58 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %57, float 1.000000e+00, 14 %59 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %58, float %21, 24 ret <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %59 } ; Function Attrs: nounwind readnone declare float @llvm.SI.fs.interp(i32, i32, i32, <2 x i32>) #1 ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1 attributes #0 = { "InitialPSInputAddr"="36983" } attributes #1 = { nounwind readnone } !0 = !{} VERT PROPERTY NEXT_SHADER FRAG DCL IN[0] DCL IN[1] DCL IN[2] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] DCL CONST[0..5] DCL TEMP[0..2], LOCAL 0: MUL TEMP[0], CONST[2], IN[0].xxxx 1: MAD TEMP[0], CONST[3], IN[0].yyyy, TEMP[0] 2: MAD TEMP[0], CONST[4], IN[0].zzzz, TEMP[0] 3: ADD TEMP[0], TEMP[0], CONST[5] 4: MAD TEMP[1].xy, IN[2].xyyy, CONST[0].xyyy, CONST[0].zwww 5: MAD TEMP[2].xy, IN[1].xyyy, CONST[1].xyyy, CONST[1].zwww 6: MOV TEMP[1].zw, TEMP[2].yyxy 7: MOV OUT[0], TEMP[0] 8: MOV OUT[1], TEMP[1] 9: END radeonsi: Compiling shader 18 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_vs <{ float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32, i32, i32, i32, i32, i32, i32) { main_body: %17 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 0, !amdgpu.uniform !0 %18 = load <16 x i8>, <16 x i8> addrspace(2)* %17, align 16, !invariant.load !0 %19 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %18, i32 0, i32 %14) %20 = extractelement <4 x float> %19, i32 0 %21 = extractelement <4 x float> %19, i32 1 %22 = extractelement <4 x float> %19, i32 2 %23 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 1, !amdgpu.uniform !0 %24 = load <16 x i8>, <16 x i8> addrspace(2)* %23, align 16, !invariant.load !0 %25 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %24, i32 0, i32 %15) %26 = extractelement <4 x float> %25, i32 0 %27 = extractelement <4 x float> %25, i32 1 %28 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 2, !amdgpu.uniform !0 %29 = load <16 x i8>, <16 x i8> addrspace(2)* %28, align 16, !invariant.load !0 %30 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %29, i32 0, i32 %16) %31 = extractelement <4 x float> %30, i32 0 %32 = extractelement <4 x float> %30, i32 1 %33 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %34 = load <16 x i8>, <16 x i8> addrspace(2)* %33, align 16, !invariant.load !0 %35 = call float @llvm.SI.load.const(<16 x i8> %34, i32 32) %36 = fmul float %35, %20 %37 = call float @llvm.SI.load.const(<16 x i8> %34, i32 36) %38 = fmul float %37, %20 %39 = call float @llvm.SI.load.const(<16 x i8> %34, i32 40) %40 = fmul float %39, %20 %41 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %42 = load <16 x i8>, <16 x i8> addrspace(2)* %41, align 16, !invariant.load !0 %43 = call float @llvm.SI.load.const(<16 x i8> %42, i32 44) %44 = fmul float %43, %20 %45 = call float @llvm.SI.load.const(<16 x i8> %42, i32 48) %46 = fmul float %45, %21 %47 = fadd float %46, %36 %48 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %49 = load <16 x i8>, <16 x i8> addrspace(2)* %48, align 16, !invariant.load !0 %50 = call float @llvm.SI.load.const(<16 x i8> %49, i32 52) %51 = fmul float %50, %21 %52 = fadd float %51, %38 %53 = call float @llvm.SI.load.const(<16 x i8> %49, i32 56) %54 = fmul float %53, %21 %55 = fadd float %54, %40 %56 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %57 = load <16 x i8>, <16 x i8> addrspace(2)* %56, align 16, !invariant.load !0 %58 = call float @llvm.SI.load.const(<16 x i8> %57, i32 60) %59 = fmul float %58, %21 %60 = fadd float %59, %44 %61 = call float @llvm.SI.load.const(<16 x i8> %57, i32 64) %62 = fmul float %61, %22 %63 = fadd float %62, %47 %64 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %65 = load <16 x i8>, <16 x i8> addrspace(2)* %64, align 16, !invariant.load !0 %66 = call float @llvm.SI.load.const(<16 x i8> %65, i32 68) %67 = fmul float %66, %22 %68 = fadd float %67, %52 %69 = call float @llvm.SI.load.const(<16 x i8> %65, i32 72) %70 = fmul float %69, %22 %71 = fadd float %70, %55 %72 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %73 = load <16 x i8>, <16 x i8> addrspace(2)* %72, align 16, !invariant.load !0 %74 = call float @llvm.SI.load.const(<16 x i8> %73, i32 76) %75 = fmul float %74, %22 %76 = fadd float %75, %60 %77 = call float @llvm.SI.load.const(<16 x i8> %73, i32 80) %78 = fadd float %63, %77 %79 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %80 = load <16 x i8>, <16 x i8> addrspace(2)* %79, align 16, !invariant.load !0 %81 = call float @llvm.SI.load.const(<16 x i8> %80, i32 84) %82 = fadd float %68, %81 %83 = call float @llvm.SI.load.const(<16 x i8> %80, i32 88) %84 = fadd float %71, %83 %85 = call float @llvm.SI.load.const(<16 x i8> %80, i32 92) %86 = fadd float %76, %85 %87 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %88 = load <16 x i8>, <16 x i8> addrspace(2)* %87, align 16, !invariant.load !0 %89 = call float @llvm.SI.load.const(<16 x i8> %88, i32 0) %90 = call float @llvm.SI.load.const(<16 x i8> %88, i32 8) %91 = fmul float %31, %89 %92 = fadd float %91, %90 %93 = call float @llvm.SI.load.const(<16 x i8> %88, i32 4) %94 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %95 = load <16 x i8>, <16 x i8> addrspace(2)* %94, align 16, !invariant.load !0 %96 = call float @llvm.SI.load.const(<16 x i8> %95, i32 12) %97 = fmul float %32, %93 %98 = fadd float %97, %96 %99 = call float @llvm.SI.load.const(<16 x i8> %95, i32 16) %100 = call float @llvm.SI.load.const(<16 x i8> %95, i32 24) %101 = fmul float %26, %99 %102 = fadd float %101, %100 %103 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %104 = load <16 x i8>, <16 x i8> addrspace(2)* %103, align 16, !invariant.load !0 %105 = call float @llvm.SI.load.const(<16 x i8> %104, i32 20) %106 = call float @llvm.SI.load.const(<16 x i8> %104, i32 28) %107 = fmul float %27, %105 %108 = fadd float %107, %106 %109 = bitcast i32 %12 to float %110 = insertvalue <{ float, float, float }> undef, float %109, 2 call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 32, i32 0, float %92, float %98, float %102, float %108) call void @llvm.SI.export(i32 15, i32 0, i32 1, i32 12, i32 0, float %78, float %82, float %84, float %86) ret <{ float, float, float }> %110 } ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.vs.load.input(<16 x i8>, i32, i32) #0 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #0 ; Function Attrs: nounwind declare void @llvm.SI.export(i32, i32, i32, i32, i32, float, float, float, float) #1 attributes #0 = { nounwind readnone } attributes #1 = { nounwind } !0 = !{} FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL SVIEW[0], 2D, FLOAT DCL SVIEW[1], 2D, FLOAT DCL CONST[2] DCL TEMP[0..1], LOCAL IMM[0] FLT32 { 2.0000, 1.0000, 0.0000, 0.0000} 0: MOV TEMP[0].xy, IN[0].xyyy 1: TEX TEMP[0], TEMP[0], SAMP[0], 2D 2: MUL TEMP[0], TEMP[0], CONST[2] 3: MOV TEMP[1].xy, IN[0].zwww 4: TEX TEMP[1], TEMP[1], SAMP[1], 2D 5: MUL TEMP[1].xyz, TEMP[1], TEMP[0] 6: MOV TEMP[0].xyz, TEMP[1].xyzx 7: MUL TEMP[1].xyz, TEMP[0], IMM[0].xxxx 8: MOV TEMP[0].xyz, TEMP[1].xyzx 9: MOV TEMP[0].w, IMM[0].yyyy 10: MOV OUT[0], TEMP[0] 11: END radeonsi: Compiling shader 19 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_ps <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), float inreg, i32 inreg, <2 x i32>, <2 x i32>, <2 x i32>, <3 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, float, float, float, float, float, i32, i32, float, i32) #0 { main_body: %23 = call float @llvm.SI.fs.interp(i32 0, i32 0, i32 %6, <2 x i32> %8) %24 = call float @llvm.SI.fs.interp(i32 1, i32 0, i32 %6, <2 x i32> %8) %25 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 0, !amdgpu.uniform !0 %26 = load <8 x i32>, <8 x i32> addrspace(2)* %25, align 32, !invariant.load !0 %27 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %28 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %27, i64 0, i64 3, !amdgpu.uniform !0 %29 = load <4 x i32>, <4 x i32> addrspace(2)* %28, align 16, !invariant.load !0 %30 = bitcast float %23 to i32 %31 = bitcast float %24 to i32 %32 = insertelement <2 x i32> undef, i32 %30, i32 0 %33 = insertelement <2 x i32> %32, i32 %31, i32 1 %34 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %33, <8 x i32> %26, <4 x i32> %29, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %35 = extractelement <4 x float> %34, i32 0 %36 = extractelement <4 x float> %34, i32 1 %37 = extractelement <4 x float> %34, i32 2 %38 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %39 = load <16 x i8>, <16 x i8> addrspace(2)* %38, align 16, !invariant.load !0 %40 = call float @llvm.SI.load.const(<16 x i8> %39, i32 32) %41 = fmul float %35, %40 %42 = call float @llvm.SI.load.const(<16 x i8> %39, i32 36) %43 = fmul float %36, %42 %44 = call float @llvm.SI.load.const(<16 x i8> %39, i32 40) %45 = fmul float %37, %44 %46 = call float @llvm.SI.fs.interp(i32 2, i32 0, i32 %6, <2 x i32> %8) %47 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %6, <2 x i32> %8) %48 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 2, !amdgpu.uniform !0 %49 = load <8 x i32>, <8 x i32> addrspace(2)* %48, align 32, !invariant.load !0 %50 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %51 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %50, i64 0, i64 7, !amdgpu.uniform !0 %52 = load <4 x i32>, <4 x i32> addrspace(2)* %51, align 16, !invariant.load !0 %53 = bitcast float %46 to i32 %54 = bitcast float %47 to i32 %55 = insertelement <2 x i32> undef, i32 %53, i32 0 %56 = insertelement <2 x i32> %55, i32 %54, i32 1 %57 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %56, <8 x i32> %49, <4 x i32> %52, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %58 = extractelement <4 x float> %57, i32 0 %59 = extractelement <4 x float> %57, i32 1 %60 = extractelement <4 x float> %57, i32 2 %61 = fmul float %58, %41 %62 = fmul float %59, %43 %63 = fmul float %60, %45 %64 = fmul float %61, 2.000000e+00 %65 = fmul float %62, 2.000000e+00 %66 = fmul float %63, 2.000000e+00 %67 = bitcast float %5 to i32 %68 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> undef, i32 %67, 10 %69 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %68, float %64, 11 %70 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %69, float %65, 12 %71 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %70, float %66, 13 %72 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %71, float 1.000000e+00, 14 %73 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %72, float %21, 24 ret <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %73 } ; Function Attrs: nounwind readnone declare float @llvm.SI.fs.interp(i32, i32, i32, <2 x i32>) #1 ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #1 attributes #0 = { "InitialPSInputAddr"="36983" } attributes #1 = { nounwind readnone } !0 = !{} FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL SVIEW[0], 2D, FLOAT DCL SVIEW[1], 2D, FLOAT DCL CONST[2] DCL TEMP[0..1], LOCAL IMM[0] FLT32 { 2.0000, 4.0000, 1.0000, 0.0000} 0: MOV TEMP[0].xy, IN[0].xyyy 1: TEX TEMP[0], TEMP[0], SAMP[0], 2D 2: MUL TEMP[0], TEMP[0], TEMP[0].wwww 3: MUL TEMP[0], TEMP[0], IMM[0].xxxx 4: MUL TEMP[0], TEMP[0], CONST[2] 5: MOV TEMP[1].xy, IN[0].zwww 6: TEX TEMP[1], TEMP[1], SAMP[1], 2D 7: MUL TEMP[1].xyz, TEMP[1], TEMP[0] 8: MOV TEMP[0].xyz, TEMP[1].xyzx 9: MUL TEMP[1].xyz, TEMP[0], IMM[0].yyyy 10: MOV TEMP[0].xyz, TEMP[1].xyzx 11: MOV TEMP[0].w, IMM[0].zzzz 12: MOV OUT[0], TEMP[0] 13: END radeonsi: Compiling shader 20 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_ps <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), float inreg, i32 inreg, <2 x i32>, <2 x i32>, <2 x i32>, <3 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, float, float, float, float, float, i32, i32, float, i32) #0 { main_body: %23 = call float @llvm.SI.fs.interp(i32 0, i32 0, i32 %6, <2 x i32> %8) %24 = call float @llvm.SI.fs.interp(i32 1, i32 0, i32 %6, <2 x i32> %8) %25 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 0, !amdgpu.uniform !0 %26 = load <8 x i32>, <8 x i32> addrspace(2)* %25, align 32, !invariant.load !0 %27 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %28 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %27, i64 0, i64 3, !amdgpu.uniform !0 %29 = load <4 x i32>, <4 x i32> addrspace(2)* %28, align 16, !invariant.load !0 %30 = bitcast float %23 to i32 %31 = bitcast float %24 to i32 %32 = insertelement <2 x i32> undef, i32 %30, i32 0 %33 = insertelement <2 x i32> %32, i32 %31, i32 1 %34 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %33, <8 x i32> %26, <4 x i32> %29, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %35 = extractelement <4 x float> %34, i32 0 %36 = extractelement <4 x float> %34, i32 1 %37 = extractelement <4 x float> %34, i32 2 %38 = extractelement <4 x float> %34, i32 3 %39 = fmul float %35, %38 %40 = fmul float %36, %38 %41 = fmul float %37, %38 %42 = fmul float %39, 2.000000e+00 %43 = fmul float %40, 2.000000e+00 %44 = fmul float %41, 2.000000e+00 %45 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %46 = load <16 x i8>, <16 x i8> addrspace(2)* %45, align 16, !invariant.load !0 %47 = call float @llvm.SI.load.const(<16 x i8> %46, i32 32) %48 = fmul float %42, %47 %49 = call float @llvm.SI.load.const(<16 x i8> %46, i32 36) %50 = fmul float %43, %49 %51 = call float @llvm.SI.load.const(<16 x i8> %46, i32 40) %52 = fmul float %44, %51 %53 = call float @llvm.SI.fs.interp(i32 2, i32 0, i32 %6, <2 x i32> %8) %54 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %6, <2 x i32> %8) %55 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 2, !amdgpu.uniform !0 %56 = load <8 x i32>, <8 x i32> addrspace(2)* %55, align 32, !invariant.load !0 %57 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %58 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %57, i64 0, i64 7, !amdgpu.uniform !0 %59 = load <4 x i32>, <4 x i32> addrspace(2)* %58, align 16, !invariant.load !0 %60 = bitcast float %53 to i32 %61 = bitcast float %54 to i32 %62 = insertelement <2 x i32> undef, i32 %60, i32 0 %63 = insertelement <2 x i32> %62, i32 %61, i32 1 %64 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %63, <8 x i32> %56, <4 x i32> %59, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %65 = extractelement <4 x float> %64, i32 0 %66 = extractelement <4 x float> %64, i32 1 %67 = extractelement <4 x float> %64, i32 2 %68 = fmul float %65, %48 %69 = fmul float %66, %50 %70 = fmul float %67, %52 %71 = fmul float %68, 4.000000e+00 %72 = fmul float %69, 4.000000e+00 %73 = fmul float %70, 4.000000e+00 %74 = bitcast float %5 to i32 %75 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> undef, i32 %74, 10 %76 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %75, float %71, 11 %77 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %76, float %72, 12 %78 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %77, float %73, 13 %79 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %78, float 1.000000e+00, 14 %80 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %79, float %21, 24 ret <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %80 } ; Function Attrs: nounwind readnone declare float @llvm.SI.fs.interp(i32, i32, i32, <2 x i32>) #1 ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #1 attributes #0 = { "InitialPSInputAddr"="36983" } attributes #1 = { nounwind readnone } !0 = !{} VERT PROPERTY NEXT_SHADER FRAG DCL IN[0] DCL IN[1] DCL OUT[0], POSITION DCL CONST[0..17] DCL TEMP[0..3], LOCAL IMM[0] FLT32 { 0.0000, 1.0000, 0.0000, 0.0000} 0: FSNE TEMP[0].x, CONST[1].zzzz, IMM[0].xxxx 1: UIF TEMP[0].xxxx :0 2: MUL TEMP[0], CONST[2], IN[0].xxxx 3: MAD TEMP[0], CONST[3], IN[0].yyyy, TEMP[0] 4: MAD TEMP[0], CONST[4], IN[0].zzzz, TEMP[0] 5: ADD TEMP[0].xyz, TEMP[0], CONST[5] 6: MOV TEMP[1].x, CONST[6].xxxx 7: MOV TEMP[1].y, CONST[7].xxxx 8: MOV TEMP[1].z, CONST[8].xxxx 9: MOV TEMP[2].x, CONST[6].yyyy 10: MOV TEMP[2].y, CONST[7].yyyy 11: MOV TEMP[2].z, CONST[8].yyyy 12: MOV TEMP[3].x, CONST[6].zzzz 13: MOV TEMP[3].y, CONST[7].zzzz 14: MOV TEMP[3].z, CONST[8].zzzz 15: MUL TEMP[1].xyz, TEMP[1].xyzz, IN[1].xxxx 16: MAD TEMP[1].xyz, TEMP[2].xyzz, IN[1].yyyy, TEMP[1].xyzz 17: MAD TEMP[1].xyz, TEMP[3].xyzz, IN[1].zzzz, TEMP[1].xyzz 18: DP3 TEMP[2].x, TEMP[1].xyzz, TEMP[1].xyzz 19: RSQ TEMP[2].x, TEMP[2].xxxx 20: MUL TEMP[1].xyz, TEMP[1].xyzz, TEMP[2].xxxx 21: MUL TEMP[2].xyz, TEMP[0].xyzz, CONST[0].wwww 22: ADD TEMP[2].xyz, CONST[0].xyzz, -TEMP[2].xyzz 23: DP3 TEMP[3].x, TEMP[2].xyzz, TEMP[2].xyzz 24: RSQ TEMP[3].x, TEMP[3].xxxx 25: MUL TEMP[2].xyz, TEMP[2].xyzz, TEMP[3].xxxx 26: DP3 TEMP[2].x, TEMP[1].xyzz, TEMP[2].xyzz 27: MUL TEMP[2].x, TEMP[2].xxxx, TEMP[2].xxxx 28: ADD TEMP[2].x, IMM[0].yyyy, -TEMP[2].xxxx 29: SQRT TEMP[2].x, TEMP[2].xxxx 30: MUL TEMP[2].x, CONST[1].zzzz, TEMP[2].xxxx 31: MUL TEMP[1].xyz, TEMP[1].xyzz, TEMP[2].xxxx 32: ADD TEMP[0].xyz, TEMP[0].xyzz, -TEMP[1].xyzz 33: MUL TEMP[1], CONST[10], TEMP[0].xxxx 34: MAD TEMP[1], CONST[11], TEMP[0].yyyy, TEMP[1] 35: MAD TEMP[0], CONST[12], TEMP[0].zzzz, TEMP[1] 36: ADD TEMP[0], TEMP[0], CONST[13] 37: ELSE :0 38: MUL TEMP[1], CONST[14], IN[0].xxxx 39: MAD TEMP[1], CONST[15], IN[0].yyyy, TEMP[1] 40: MAD TEMP[1], CONST[16], IN[0].zzzz, TEMP[1] 41: ADD TEMP[0], TEMP[1], CONST[17] 42: ENDIF 43: MOV TEMP[1].xyw, TEMP[0].xyxw 44: RCP TEMP[2].x, TEMP[0].wwww 45: MUL TEMP[2].x, CONST[1].xxxx, TEMP[2].xxxx 46: MOV_SAT TEMP[2].x, TEMP[2].xxxx 47: ADD TEMP[2].x, TEMP[0].zzzz, TEMP[2].xxxx 48: MAX TEMP[0].x, TEMP[2].xxxx, -TEMP[0].wwww 49: LRP TEMP[0].x, CONST[1].yyyy, TEMP[0].xxxx, TEMP[2].xxxx 50: MOV TEMP[1].z, TEMP[0].xxxx 51: MOV OUT[0], TEMP[1] 52: END radeonsi: Compiling shader 21 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_vs <{ float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32, i32, i32, i32, i32, i32) { main_body: %16 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 0, !amdgpu.uniform !0 %17 = load <16 x i8>, <16 x i8> addrspace(2)* %16, align 16, !invariant.load !0 %18 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %17, i32 0, i32 %14) %19 = extractelement <4 x float> %18, i32 0 %20 = extractelement <4 x float> %18, i32 1 %21 = extractelement <4 x float> %18, i32 2 %22 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 1, !amdgpu.uniform !0 %23 = load <16 x i8>, <16 x i8> addrspace(2)* %22, align 16, !invariant.load !0 %24 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %23, i32 0, i32 %15) %25 = extractelement <4 x float> %24, i32 0 %26 = extractelement <4 x float> %24, i32 1 %27 = extractelement <4 x float> %24, i32 2 %28 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %29 = load <16 x i8>, <16 x i8> addrspace(2)* %28, align 16, !invariant.load !0 %30 = call float @llvm.SI.load.const(<16 x i8> %29, i32 24) %31 = fcmp une float %30, 0.000000e+00 br i1 %31, label %if1, label %else37 if1: ; preds = %main_body %32 = call float @llvm.SI.load.const(<16 x i8> %29, i32 32) %33 = fmul float %32, %19 %34 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %35 = load <16 x i8>, <16 x i8> addrspace(2)* %34, align 16, !invariant.load !0 %36 = call float @llvm.SI.load.const(<16 x i8> %35, i32 36) %37 = fmul float %36, %19 %38 = call float @llvm.SI.load.const(<16 x i8> %35, i32 40) %39 = fmul float %38, %19 %40 = call float @llvm.SI.load.const(<16 x i8> %35, i32 48) %41 = fmul float %40, %20 %42 = fadd float %41, %33 %43 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %44 = load <16 x i8>, <16 x i8> addrspace(2)* %43, align 16, !invariant.load !0 %45 = call float @llvm.SI.load.const(<16 x i8> %44, i32 52) %46 = fmul float %45, %20 %47 = fadd float %46, %37 %48 = call float @llvm.SI.load.const(<16 x i8> %44, i32 56) %49 = fmul float %48, %20 %50 = fadd float %49, %39 %51 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %52 = load <16 x i8>, <16 x i8> addrspace(2)* %51, align 16, !invariant.load !0 %53 = call float @llvm.SI.load.const(<16 x i8> %52, i32 64) %54 = fmul float %53, %21 %55 = fadd float %54, %42 %56 = call float @llvm.SI.load.const(<16 x i8> %52, i32 68) %57 = fmul float %56, %21 %58 = fadd float %57, %47 %59 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %60 = load <16 x i8>, <16 x i8> addrspace(2)* %59, align 16, !invariant.load !0 %61 = call float @llvm.SI.load.const(<16 x i8> %60, i32 72) %62 = fmul float %61, %21 %63 = fadd float %62, %50 %64 = call float @llvm.SI.load.const(<16 x i8> %60, i32 80) %65 = fadd float %55, %64 %66 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %67 = load <16 x i8>, <16 x i8> addrspace(2)* %66, align 16, !invariant.load !0 %68 = call float @llvm.SI.load.const(<16 x i8> %67, i32 84) %69 = fadd float %58, %68 %70 = call float @llvm.SI.load.const(<16 x i8> %67, i32 88) %71 = fadd float %63, %70 %72 = call float @llvm.SI.load.const(<16 x i8> %67, i32 96) %73 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %74 = load <16 x i8>, <16 x i8> addrspace(2)* %73, align 16, !invariant.load !0 %75 = call float @llvm.SI.load.const(<16 x i8> %74, i32 112) %76 = call float @llvm.SI.load.const(<16 x i8> %74, i32 128) %77 = call float @llvm.SI.load.const(<16 x i8> %74, i32 100) %78 = call float @llvm.SI.load.const(<16 x i8> %74, i32 116) %79 = call float @llvm.SI.load.const(<16 x i8> %74, i32 132) %80 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %81 = load <16 x i8>, <16 x i8> addrspace(2)* %80, align 16, !invariant.load !0 %82 = call float @llvm.SI.load.const(<16 x i8> %81, i32 104) %83 = call float @llvm.SI.load.const(<16 x i8> %81, i32 120) %84 = call float @llvm.SI.load.const(<16 x i8> %81, i32 136) %85 = fmul float %72, %25 %86 = fmul float %75, %25 %87 = fmul float %76, %25 %88 = fmul float %77, %26 %89 = fadd float %88, %85 %90 = fmul float %78, %26 %91 = fadd float %90, %86 %92 = fmul float %79, %26 %93 = fadd float %92, %87 %94 = fmul float %82, %27 %95 = fadd float %94, %89 %96 = fmul float %83, %27 %97 = fadd float %96, %91 %98 = fmul float %84, %27 %99 = fadd float %98, %93 %100 = fmul float %95, %95 %101 = fmul float %97, %97 %102 = fadd float %101, %100 %103 = fmul float %99, %99 %104 = fadd float %102, %103 %105 = call float @llvm.sqrt.f32(float %104) %106 = fdiv float 1.000000e+00, %105, !fpmath !1 %107 = fmul float %95, %106 %108 = fmul float %97, %106 %109 = fmul float %99, %106 %110 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %111 = load <16 x i8>, <16 x i8> addrspace(2)* %110, align 16, !invariant.load !0 %112 = call float @llvm.SI.load.const(<16 x i8> %111, i32 12) %113 = fmul float %65, %112 %114 = call float @llvm.SI.load.const(<16 x i8> %111, i32 12) %115 = fmul float %69, %114 %116 = call float @llvm.SI.load.const(<16 x i8> %111, i32 12) %117 = fmul float %71, %116 %118 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %119 = load <16 x i8>, <16 x i8> addrspace(2)* %118, align 16, !invariant.load !0 %120 = call float @llvm.SI.load.const(<16 x i8> %119, i32 0) %121 = fsub float %120, %113 %122 = call float @llvm.SI.load.const(<16 x i8> %119, i32 4) %123 = fsub float %122, %115 %124 = call float @llvm.SI.load.const(<16 x i8> %119, i32 8) %125 = fsub float %124, %117 %126 = fmul float %121, %121 %127 = fmul float %123, %123 %128 = fadd float %127, %126 %129 = fmul float %125, %125 %130 = fadd float %128, %129 %131 = call float @llvm.sqrt.f32(float %130) %132 = fdiv float 1.000000e+00, %131, !fpmath !1 %133 = fmul float %121, %132 %134 = fmul float %123, %132 %135 = fmul float %125, %132 %136 = fmul float %107, %133 %137 = fmul float %108, %134 %138 = fadd float %137, %136 %139 = fmul float %109, %135 %140 = fadd float %138, %139 %141 = fmul float %140, %140 %142 = fsub float 1.000000e+00, %141 %143 = call float @llvm.sqrt.f32(float %142) %144 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %145 = load <16 x i8>, <16 x i8> addrspace(2)* %144, align 16, !invariant.load !0 %146 = call float @llvm.SI.load.const(<16 x i8> %145, i32 24) %147 = fmul float %146, %143 %148 = fmul float %107, %147 %149 = fmul float %108, %147 %150 = fmul float %109, %147 %151 = fsub float %65, %148 %152 = fsub float %69, %149 %153 = fsub float %71, %150 %154 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %155 = load <16 x i8>, <16 x i8> addrspace(2)* %154, align 16, !invariant.load !0 %156 = call float @llvm.SI.load.const(<16 x i8> %155, i32 160) %157 = fmul float %156, %151 %158 = call float @llvm.SI.load.const(<16 x i8> %155, i32 164) %159 = fmul float %158, %151 %160 = call float @llvm.SI.load.const(<16 x i8> %155, i32 168) %161 = fmul float %160, %151 %162 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %163 = load <16 x i8>, <16 x i8> addrspace(2)* %162, align 16, !invariant.load !0 %164 = call float @llvm.SI.load.const(<16 x i8> %163, i32 172) %165 = fmul float %164, %151 %166 = call float @llvm.SI.load.const(<16 x i8> %163, i32 176) %167 = fmul float %166, %152 %168 = fadd float %167, %157 %169 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %170 = load <16 x i8>, <16 x i8> addrspace(2)* %169, align 16, !invariant.load !0 %171 = call float @llvm.SI.load.const(<16 x i8> %170, i32 180) %172 = fmul float %171, %152 %173 = fadd float %172, %159 %174 = call float @llvm.SI.load.const(<16 x i8> %170, i32 184) %175 = fmul float %174, %152 %176 = fadd float %175, %161 %177 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %178 = load <16 x i8>, <16 x i8> addrspace(2)* %177, align 16, !invariant.load !0 %179 = call float @llvm.SI.load.const(<16 x i8> %178, i32 188) %180 = fmul float %179, %152 %181 = fadd float %180, %165 %182 = call float @llvm.SI.load.const(<16 x i8> %178, i32 192) %183 = fmul float %182, %153 %184 = fadd float %183, %168 %185 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %186 = load <16 x i8>, <16 x i8> addrspace(2)* %185, align 16, !invariant.load !0 %187 = call float @llvm.SI.load.const(<16 x i8> %186, i32 196) %188 = fmul float %187, %153 %189 = fadd float %188, %173 %190 = call float @llvm.SI.load.const(<16 x i8> %186, i32 200) %191 = fmul float %190, %153 %192 = fadd float %191, %176 %193 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %194 = load <16 x i8>, <16 x i8> addrspace(2)* %193, align 16, !invariant.load !0 %195 = call float @llvm.SI.load.const(<16 x i8> %194, i32 204) %196 = fmul float %195, %153 %197 = fadd float %196, %181 %198 = call float @llvm.SI.load.const(<16 x i8> %194, i32 208) %199 = fadd float %184, %198 %200 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %201 = load <16 x i8>, <16 x i8> addrspace(2)* %200, align 16, !invariant.load !0 %202 = call float @llvm.SI.load.const(<16 x i8> %201, i32 212) %203 = fadd float %189, %202 %204 = call float @llvm.SI.load.const(<16 x i8> %201, i32 216) %205 = fadd float %192, %204 %206 = call float @llvm.SI.load.const(<16 x i8> %201, i32 220) %207 = fadd float %197, %206 br label %endif42 else37: ; preds = %main_body %208 = call float @llvm.SI.load.const(<16 x i8> %29, i32 224) %209 = fmul float %208, %19 %210 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %211 = load <16 x i8>, <16 x i8> addrspace(2)* %210, align 16, !invariant.load !0 %212 = call float @llvm.SI.load.const(<16 x i8> %211, i32 228) %213 = fmul float %212, %19 %214 = call float @llvm.SI.load.const(<16 x i8> %211, i32 232) %215 = fmul float %214, %19 %216 = call float @llvm.SI.load.const(<16 x i8> %211, i32 236) %217 = fmul float %216, %19 %218 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %219 = load <16 x i8>, <16 x i8> addrspace(2)* %218, align 16, !invariant.load !0 %220 = call float @llvm.SI.load.const(<16 x i8> %219, i32 240) %221 = fmul float %220, %20 %222 = fadd float %221, %209 %223 = call float @llvm.SI.load.const(<16 x i8> %219, i32 244) %224 = fmul float %223, %20 %225 = fadd float %224, %213 %226 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %227 = load <16 x i8>, <16 x i8> addrspace(2)* %226, align 16, !invariant.load !0 %228 = call float @llvm.SI.load.const(<16 x i8> %227, i32 248) %229 = fmul float %228, %20 %230 = fadd float %229, %215 %231 = call float @llvm.SI.load.const(<16 x i8> %227, i32 252) %232 = fmul float %231, %20 %233 = fadd float %232, %217 %234 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %235 = load <16 x i8>, <16 x i8> addrspace(2)* %234, align 16, !invariant.load !0 %236 = call float @llvm.SI.load.const(<16 x i8> %235, i32 256) %237 = fmul float %236, %21 %238 = fadd float %237, %222 %239 = call float @llvm.SI.load.const(<16 x i8> %235, i32 260) %240 = fmul float %239, %21 %241 = fadd float %240, %225 %242 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %243 = load <16 x i8>, <16 x i8> addrspace(2)* %242, align 16, !invariant.load !0 %244 = call float @llvm.SI.load.const(<16 x i8> %243, i32 264) %245 = fmul float %244, %21 %246 = fadd float %245, %230 %247 = call float @llvm.SI.load.const(<16 x i8> %243, i32 268) %248 = fmul float %247, %21 %249 = fadd float %248, %233 %250 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %251 = load <16 x i8>, <16 x i8> addrspace(2)* %250, align 16, !invariant.load !0 %252 = call float @llvm.SI.load.const(<16 x i8> %251, i32 272) %253 = fadd float %238, %252 %254 = call float @llvm.SI.load.const(<16 x i8> %251, i32 276) %255 = fadd float %241, %254 %256 = call float @llvm.SI.load.const(<16 x i8> %251, i32 280) %257 = fadd float %246, %256 %258 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %259 = load <16 x i8>, <16 x i8> addrspace(2)* %258, align 16, !invariant.load !0 %260 = call float @llvm.SI.load.const(<16 x i8> %259, i32 284) %261 = fadd float %249, %260 br label %endif42 endif42: ; preds = %else37, %if1 %.03 = phi float [ %207, %if1 ], [ %261, %else37 ] %.02 = phi float [ %205, %if1 ], [ %257, %else37 ] %.01 = phi float [ %203, %if1 ], [ %255, %else37 ] %.0 = phi float [ %199, %if1 ], [ %253, %else37 ] %262 = fdiv float 1.000000e+00, %.03, !fpmath !1 %263 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %264 = load <16 x i8>, <16 x i8> addrspace(2)* %263, align 16, !invariant.load !0 %265 = call float @llvm.SI.load.const(<16 x i8> %264, i32 16) %266 = fmul float %265, %262 %267 = call float @llvm.AMDGPU.clamp.(float %266, float 0.000000e+00, float 1.000000e+00) %268 = fadd float %.02, %267 %269 = fsub float -0.000000e+00, %.03 %270 = call float @llvm.maxnum.f32(float %268, float %269) %271 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %272 = load <16 x i8>, <16 x i8> addrspace(2)* %271, align 16, !invariant.load !0 %273 = call float @llvm.SI.load.const(<16 x i8> %272, i32 20) %274 = fsub float 1.000000e+00, %273 %275 = fmul float %270, %273 %276 = fmul float %268, %274 %277 = fadd float %275, %276 %278 = bitcast i32 %12 to float %279 = insertvalue <{ float, float, float }> undef, float %278, 2 call void @llvm.SI.export(i32 15, i32 0, i32 1, i32 12, i32 0, float %.0, float %.01, float %277, float %.03) ret <{ float, float, float }> %279 } ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.vs.load.input(<16 x i8>, i32, i32) #0 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #0 ; Function Attrs: nounwind readnone declare float @llvm.sqrt.f32(float) #0 ; Function Attrs: nounwind readnone declare float @llvm.AMDGPU.clamp.(float, float, float) #0 ; Function Attrs: nounwind readnone declare float @llvm.maxnum.f32(float, float) #0 ; Function Attrs: nounwind declare void @llvm.SI.export(i32, i32, i32, i32, i32, float, float, float, float) #1 attributes #0 = { nounwind readnone } attributes #1 = { nounwind } !0 = !{} !1 = !{float 2.500000e+00} FRAG DCL OUT[0], COLOR IMM[0] FLT32 { 0.0000, 0.0000, 0.0000, 0.0000} 0: MOV OUT[0], IMM[0].xxxx 1: END radeonsi: Compiling shader 22 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_ps <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), float inreg, i32 inreg, <2 x i32>, <2 x i32>, <2 x i32>, <3 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, float, float, float, float, float, i32, i32, float, i32) #0 { main_body: %23 = bitcast float %5 to i32 %24 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> undef, i32 %23, 10 %25 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %24, float 0.000000e+00, 11 %26 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %25, float 0.000000e+00, 12 %27 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %26, float 0.000000e+00, 13 %28 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %27, float 0.000000e+00, 14 %29 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %28, float %21, 24 ret <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %29 } attributes #0 = { "InitialPSInputAddr"="36983" } radeonsi: Compiling shader 23 Vertex Shader Prolog LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_vs <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float }> @main(i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32, i32, i32, i32) { main_body: %20 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float }> undef, i32 %0, 0 %21 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float }> %20, i32 %1, 1 %22 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float }> %21, i32 %2, 2 %23 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float }> %22, i32 %3, 3 %24 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float }> %23, i32 %4, 4 %25 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float }> %24, i32 %5, 5 %26 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float }> %25, i32 %6, 6 %27 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float }> %26, i32 %7, 7 %28 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float }> %27, i32 %8, 8 %29 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float }> %28, i32 %9, 9 %30 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float }> %29, i32 %10, 10 %31 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float }> %30, i32 %11, 11 %32 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float }> %31, i32 %12, 12 %33 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float }> %32, i32 %13, 13 %34 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float }> %33, i32 %14, 14 %35 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float }> %34, i32 %15, 15 %36 = bitcast i32 %16 to float %37 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float }> %35, float %36, 16 %38 = bitcast i32 %17 to float %39 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float }> %37, float %38, 17 %40 = bitcast i32 %18 to float %41 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float }> %39, float %40, 18 %42 = bitcast i32 %19 to float %43 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float }> %41, float %42, 19 %44 = add i32 %16, %12 %45 = bitcast i32 %44 to float %46 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float }> %43, float %45, 20 %47 = add i32 %16, %12 %48 = bitcast i32 %47 to float %49 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float }> %46, float %48, 21 %50 = add i32 %16, %12 %51 = bitcast i32 %50 to float %52 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float }> %49, float %51, 22 ret <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float }> %52 } radeonsi: Compiling shader 24 Vertex Shader Epilog LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_vs void @main() { main_body: ret void } SHADER KEY instance_divisors = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} as_es = 0 as_ls = 0 export_prim_id = 0 Vertex Shader as VS: Shader prolog disassembly: v_add_i32_e32 v4, vcc, s12, v0 ; 3208000C v_mov_b32_e32 v5, v4 ; 7E0A0304 v_mov_b32_e32 v6, v4 ; 7E0C0304 Shader main disassembly: s_load_dwordx4 s[4:7], s[10:11], 0x0 ; C00A0105 00000000 s_load_dwordx4 s[12:15], s[10:11], 0x10 ; C00A0305 00000010 s_load_dwordx4 s[8:11], s[10:11], 0x20 ; C00A0205 00000020 s_load_dwordx4 s[0:3], s[2:3], 0x0 ; C00A0001 00000000 s_waitcnt lgkmcnt(0) ; BF8C007F buffer_load_format_xyzw v[7:10], v4, s[4:7], 0 idxen ; E00C2000 80010704 s_nop 0 ; BF800000 buffer_load_format_xyzw v[11:14], v5, s[12:15], 0 idxen ; E00C2000 80030B05 s_nop 0 ; BF800000 buffer_load_format_xyzw v[3:6], v6, s[8:11], 0 idxen ; E00C2000 80020306 s_buffer_load_dword s11, s[0:3], 0x70 ; C02202C0 00000070 s_buffer_load_dword s4, s[0:3], 0x80 ; C0220100 00000080 s_buffer_load_dword s12, s[0:3], 0x74 ; C0220300 00000074 s_buffer_load_dword s7, s[0:3], 0x90 ; C02201C0 00000090 s_buffer_load_dword s29, s[0:3], 0xc0 ; C0220740 000000C0 s_buffer_load_dword s31, s[0:3], 0xc8 ; C02207C0 000000C8 s_buffer_load_dword s5, s[0:3], 0x84 ; C0220140 00000084 s_buffer_load_dword s13, s[0:3], 0x78 ; C0220340 00000078 s_buffer_load_dword s30, s[0:3], 0xc4 ; C0220780 000000C4 s_buffer_load_dword s32, s[0:3], 0xcc ; C0220800 000000CC s_buffer_load_dword s6, s[0:3], 0x88 ; C0220180 00000088 s_buffer_load_dword s8, s[0:3], 0x94 ; C0220200 00000094 s_buffer_load_dword s33, s[0:3], 0xd0 ; C0220840 000000D0 s_buffer_load_dword s34, s[0:3], 0xd4 ; C0220880 000000D4 s_buffer_load_dword s35, s[0:3], 0xd8 ; C02208C0 000000D8 s_buffer_load_dword s36, s[0:3], 0xdc ; C0220900 000000DC s_buffer_load_dword s44, s[0:3], 0x98 ; C0220B00 00000098 s_buffer_load_dword s37, s[0:3], 0xe0 ; C0220940 000000E0 s_buffer_load_dword s38, s[0:3], 0xe4 ; C0220980 000000E4 s_buffer_load_dword s39, s[0:3], 0xe8 ; C02209C0 000000E8 s_buffer_load_dword s40, s[0:3], 0xec ; C0220A00 000000EC s_buffer_load_dword s41, s[0:3], 0xf0 ; C0220A40 000000F0 s_buffer_load_dword s42, s[0:3], 0xf4 ; C0220A80 000000F4 s_buffer_load_dword s43, s[0:3], 0xf8 ; C0220AC0 000000F8 s_buffer_load_dword s27, s[0:3], 0x34 ; C02206C0 00000034 s_buffer_load_dword s26, s[0:3], 0x30 ; C0220680 00000030 s_buffer_load_dword s28, s[0:3], 0x38 ; C0220700 00000038 s_buffer_load_dword s47, s[0:3], 0xb8 ; C0220BC0 000000B8 s_buffer_load_dword s15, s[0:3], 0x4 ; C02203C0 00000004 s_buffer_load_dword s19, s[0:3], 0x14 ; C02204C0 00000014 s_buffer_load_dword s23, s[0:3], 0x24 ; C02205C0 00000024 s_buffer_load_dword s45, s[0:3], 0xb0 ; C0220B40 000000B0 s_buffer_load_dword s48, s[0:3], 0xbc ; C0220C00 000000BC s_buffer_load_dword s14, s[0:3], 0x0 ; C0220380 00000000 s_buffer_load_dword s18, s[0:3], 0x10 ; C0220480 00000010 s_buffer_load_dword s22, s[0:3], 0x20 ; C0220580 00000020 s_buffer_load_dword s46, s[0:3], 0xb4 ; C0220B80 000000B4 s_buffer_load_dword s16, s[0:3], 0x8 ; C0220400 00000008 s_buffer_load_dword s20, s[0:3], 0x18 ; C0220500 00000018 s_buffer_load_dword s24, s[0:3], 0x28 ; C0220600 00000028 s_buffer_load_dword s9, s[0:3], 0x64 ; C0220240 00000064 s_buffer_load_dword s10, s[0:3], 0x68 ; C0220280 00000068 s_buffer_load_dword s17, s[0:3], 0xc ; C0220440 0000000C s_buffer_load_dword s21, s[0:3], 0x1c ; C0220540 0000001C s_buffer_load_dword s25, s[0:3], 0x2c ; C0220640 0000002C s_waitcnt vmcnt(0) lgkmcnt(0) ; BF8C0070 v_mul_f32_e32 v6, s29, v7 ; 0A0C0E1D v_mul_f32_e32 v0, s11, v11 ; 0A00160B v_mul_f32_e32 v1, s4, v11 ; 0A021604 v_mac_f32_e32 v0, s12, v12 ; 2C00180C v_mul_f32_e32 v5, s7, v11 ; 0A0A1607 v_mac_f32_e32 v1, s5, v12 ; 2C021805 v_mul_f32_e32 v11, s30, v7 ; 0A160E1E v_mul_f32_e32 v14, s31, v7 ; 0A1C0E1F v_mul_f32_e32 v7, s32, v7 ; 0A0E0E20 v_mac_f32_e32 v0, s13, v13 ; 2C001A0D v_mac_f32_e32 v5, s8, v12 ; 2C0A1808 v_mac_f32_e32 v6, s33, v8 ; 2C0C1021 v_mac_f32_e32 v11, s34, v8 ; 2C161022 v_mac_f32_e32 v14, s35, v8 ; 2C1C1023 v_mac_f32_e32 v7, s36, v8 ; 2C0E1024 v_mac_f32_e32 v1, s6, v13 ; 2C021A06 v_mul_f32_e32 v8, v0, v0 ; 0A100100 v_mac_f32_e32 v5, s44, v13 ; 2C0A1A2C v_mac_f32_e32 v8, v1, v1 ; 2C100301 v_mac_f32_e32 v8, v5, v5 ; 2C100B05 v_rsq_f32_e32 v8, v8 ; 7E104908 s_buffer_load_dword s4, s[0:3], 0xfc ; C0220100 000000FC s_buffer_load_dword s6, s[0:3], 0x44 ; C0220180 00000044 s_buffer_load_dword s5, s[0:3], 0x40 ; C0220140 00000040 v_mac_f32_e32 v6, s37, v9 ; 2C0C1225 v_mac_f32_e32 v11, s38, v9 ; 2C161226 v_mac_f32_e32 v14, s39, v9 ; 2C1C1227 v_mac_f32_e32 v7, s40, v9 ; 2C0E1228 v_mul_f32_e32 v1, v8, v1 ; 0A020308 v_mul_f32_e32 v5, v8, v5 ; 0A0A0B08 v_mul_f32_e32 v0, v8, v0 ; 0A000108 s_waitcnt lgkmcnt(0) ; BF8C007F v_mac_f32_e32 v7, s4, v10 ; 2C0E1404 v_mac_f32_e32 v6, s41, v10 ; 2C0C1429 v_mac_f32_e32 v11, s42, v10 ; 2C16142A v_mac_f32_e32 v14, s43, v10 ; 2C1C142B v_mul_f32_e32 v10, v5, v1 ; 0A140305 v_mul_f32_e32 v17, s6, v10 ; 0A221406 v_mul_f32_e32 v13, v1, v0 ; 0A1A0101 s_buffer_load_dword s6, s[0:3], 0x54 ; C0220180 00000054 v_mac_f32_e32 v17, s5, v13 ; 2C221A05 s_buffer_load_dword s5, s[0:3], 0x50 ; C0220140 00000050 s_buffer_load_dword s7, s[0:3], 0x48 ; C02201C0 00000048 s_buffer_load_dword s11, s[0:3], 0x58 ; C02202C0 00000058 s_buffer_load_dword s4, s[0:3], 0x3c ; C0220100 0000003C s_buffer_load_dword s8, s[0:3], 0x4c ; C0220200 0000004C s_buffer_load_dword s12, s[0:3], 0x5c ; C0220300 0000005C v_mul_f32_e32 v16, s27, v10 ; 0A20141B s_waitcnt lgkmcnt(0) ; BF8C007F v_mul_f32_e32 v10, s6, v10 ; 0A141406 v_mul_f32_e32 v15, v5, v5 ; 0A1E0B05 v_mac_f32_e32 v16, s26, v13 ; 2C201A1A v_mac_f32_e32 v10, s5, v13 ; 2C141A05 s_buffer_load_dword s0, s[0:3], 0x60 ; C0220000 00000060 v_mul_f32_e32 v13, v0, v5 ; 0A1A0B00 v_mac_f32_e32 v16, s28, v15 ; 2C201E1C v_mac_f32_e32 v17, s7, v15 ; 2C221E07 v_mac_f32_e32 v10, s11, v15 ; 2C141E0B v_mac_f32_e32 v16, s4, v13 ; 2C201A04 v_mac_f32_e32 v17, s8, v13 ; 2C221A08 v_mac_f32_e32 v10, s12, v13 ; 2C141A0C v_mov_b32_e32 v13, s47 ; 7E1A022F v_mul_f32_e32 v8, s15, v1 ; 0A10020F v_mul_f32_e32 v9, s19, v1 ; 0A120213 v_mul_f32_e32 v12, s23, v1 ; 0A180217 v_mac_f32_e32 v13, s45, v3 ; 2C1A062D v_mov_b32_e32 v3, s48 ; 7E060230 v_mac_f32_e32 v8, s14, v0 ; 2C10000E v_mac_f32_e32 v9, s18, v0 ; 2C120012 v_mac_f32_e32 v12, s22, v0 ; 2C180016 v_mac_f32_e32 v3, s46, v4 ; 2C06082E v_mul_f32_e32 v4, v1, v1 ; 0A080301 v_mad_f32 v4, v0, v0, -v4 ; D1C10004 84120100 v_mac_f32_e32 v8, s16, v5 ; 2C100A10 v_mac_f32_e32 v9, s20, v5 ; 2C120A14 v_mac_f32_e32 v12, s24, v5 ; 2C180A18 v_add_f32_e32 v8, s17, v8 ; 02101011 v_add_f32_e32 v9, s21, v9 ; 02121215 v_add_f32_e32 v12, s25, v12 ; 02181819 s_waitcnt lgkmcnt(0) ; BF8C007F v_mac_f32_e32 v16, s0, v4 ; 2C200800 v_mac_f32_e32 v17, s9, v4 ; 2C220809 v_mac_f32_e32 v10, s10, v4 ; 2C14080A v_add_f32_e32 v4, v8, v16 ; 02082108 v_add_f32_e32 v8, v9, v17 ; 02102309 v_add_f32_e32 v9, v12, v10 ; 0212150C exp 15, 32, 0, 0, 0, v13, v3, v0, v1 ; C400020F 0100030D exp 15, 33, 0, 0, 0, v5, v4, v8, v9 ; C400021F 09080405 exp 15, 12, 0, 1, 0, v6, v11, v14, v7 ; C40008CF 070E0B06 s_waitcnt expcnt(0) ; BF8C0F0F Shader epilog disassembly: s_endpgm ; BF810000 *** SHADER STATS *** SGPRS: 96 VGPRS: 20 Spilled SGPRs: 0 Spilled VGPRs: 0 Code Size: 868 bytes LDS: 0 blocks Scratch: 0 bytes per wave Max Waves: 8 ******************** radeonsi: Compiling shader 25 Fragment Shader Epilog LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_ps void @main(i64 inreg, i64 inreg, i64 inreg, i64 inreg, i64 inreg, float inreg, float, float, float, float, float, float, float, float, float, float, float, float, float, float) #0 { main_body: %20 = call i32 @llvm.SI.packf16(float %6, float %7) %21 = bitcast i32 %20 to float %22 = call i32 @llvm.SI.packf16(float %8, float %9) %23 = bitcast i32 %22 to float call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %21, float %23, float undef, float undef) ret void } ; Function Attrs: nounwind readnone declare i32 @llvm.SI.packf16(float, float) #1 ; Function Attrs: nounwind declare void @llvm.SI.export(i32, i32, i32, i32, i32, float, float, float, float) #2 attributes #0 = { "InitialPSInputAddr"="16777215" } attributes #1 = { nounwind readnone } attributes #2 = { nounwind } SHADER KEY prolog.color_two_side = 0 prolog.flatshade_colors = 0 prolog.poly_stipple = 0 prolog.force_persp_sample_interp = 0 prolog.force_linear_sample_interp = 0 prolog.force_persp_center_interp = 0 prolog.force_linear_center_interp = 0 prolog.bc_optimize_for_persp = 0 prolog.bc_optimize_for_linear = 0 epilog.spi_shader_col_format = 0x4 epilog.color_is_int8 = 0x0 epilog.last_cbuf = 0 epilog.alpha_func = 7 epilog.alpha_to_one = 0 epilog.poly_line_smoothing = 0 epilog.clamp_color = 0 Pixel Shader: Shader main disassembly: s_mov_b64 s[0:1], exec ; BE80017E s_wqm_b64 exec, exec ; BEFE077E s_mov_b32 m0, s11 ; BEFC000B v_interp_p1_f32 v7, v2, 2, 0, [m0] ; D41C0202 v_interp_p2_f32 v7, [v7], v3, 2, 0, [m0] ; D41D0203 v_interp_p1_f32 v8, v2, 3, 0, [m0] ; D4200302 s_load_dwordx8 s[12:19], s[4:5], 0x0 ; C00E0302 00000000 s_load_dwordx4 s[4:7], s[4:5], 0x30 ; C00A0102 00000030 v_interp_p2_f32 v8, [v8], v3, 3, 0, [m0] ; D4210303 v_interp_p1_f32 v9, v2, 0, 1, [m0] ; D4240402 v_interp_p2_f32 v9, [v9], v3, 0, 1, [m0] ; D4250403 v_interp_p1_f32 v0, v2, 0, 0, [m0] ; D4000002 v_interp_p2_f32 v0, [v0], v3, 0, 0, [m0] ; D4010003 v_interp_p1_f32 v1, v2, 1, 0, [m0] ; D4040102 v_interp_p2_f32 v1, [v1], v3, 1, 0, [m0] ; D4050103 s_and_b64 exec, exec, s[0:1] ; 86FE007E s_load_dwordx4 s[0:3], s[2:3], 0x0 ; C00A0001 00000000 s_waitcnt lgkmcnt(0) ; BF8C007F image_sample v[4:6], v[0:1], s[12:19], s[4:7] dmask:0x7 ; F0800700 00230400 s_buffer_load_dword s5, s[0:3], 0x30 ; C0220140 00000030 s_buffer_load_dword s6, s[0:3], 0x34 ; C0220180 00000034 s_buffer_load_dword s7, s[0:3], 0x38 ; C02201C0 00000038 s_buffer_load_dword s4, s[0:3], 0x18 ; C0220100 00000018 s_buffer_load_dword s8, s[0:3], 0x10 ; C0220200 00000010 s_waitcnt vmcnt(0) lgkmcnt(0) ; BF8C0070 v_mul_f32_e32 v10, s5, v4 ; 0A140805 s_buffer_load_dword s5, s[0:3], 0x0 ; C0220140 00000000 v_mul_f32_e32 v5, s6, v5 ; 0A0A0A06 s_buffer_load_dword s6, s[0:3], 0x4 ; C0220180 00000004 v_mul_f32_e32 v6, s7, v6 ; 0A0C0C07 s_buffer_load_dword s7, s[0:3], 0x8 ; C02201C0 00000008 s_buffer_load_dword s0, s[0:3], 0x14 ; C0220000 00000014 s_waitcnt lgkmcnt(0) ; BF8C007F v_mul_f32_e32 v7, s5, v7 ; 0A0E0E05 v_mac_f32_e32 v7, s6, v8 ; 2C0E1006 v_mul_f32_e32 v0, s8, v10 ; 0A001408 v_mac_f32_e32 v7, s7, v9 ; 2C0E1207 v_max_f32_e32 v7, 0, v7 ; 160E0E80 v_mul_f32_e32 v1, s0, v5 ; 0A020A00 v_mul_f32_e32 v4, s4, v6 ; 0A080C04 v_mul_f32_e32 v0, v7, v0 ; 0A000107 v_mul_f32_e32 v1, v7, v1 ; 0A020307 v_mul_f32_e32 v4, v7, v4 ; 0A080907 v_interp_p1_f32 v7, v2, 1, 1, [m0] ; D41C0502 v_interp_p2_f32 v7, [v7], v3, 1, 1, [m0] ; D41D0503 v_mac_f32_e32 v0, v7, v10 ; 2C001507 v_interp_p1_f32 v7, v2, 2, 1, [m0] ; D41C0602 v_interp_p2_f32 v7, [v7], v3, 2, 1, [m0] ; D41D0603 v_interp_p1_f32 v2, v2, 3, 1, [m0] ; D4080702 v_interp_p2_f32 v2, [v2], v3, 3, 1, [m0] ; D4090703 v_mac_f32_e32 v4, v2, v6 ; 2C080D02 v_mac_f32_e32 v1, v7, v5 ; 2C020B07 v_mov_b32_e32 v3, 1.0 ; 7E0602F2 v_mov_b32_e32 v2, v4 ; 7E040304 Shader epilog disassembly: v_cvt_pkrtz_f16_f32_e64 v0, v0, v1 ; D2960000 00020300 v_cvt_pkrtz_f16_f32_e64 v1, v2, v3 ; D2960001 00020702 exp 15, 0, 1, 1, 1, v0, v1, v0, v0 ; C4001C0F 00000100 s_endpgm ; BF810000 *** SHADER CONFIG *** SPI_PS_INPUT_ADDR = 0xd077 SPI_PS_INPUT_ENA = 0x0002 *** SHADER STATS *** SGPRS: 96 VGPRS: 16 Spilled SGPRs: 0 Spilled VGPRs: 0 Code Size: 296 bytes LDS: 0 blocks Scratch: 0 bytes per wave Max Waves: 8 ******************** VERT PROPERTY NEXT_SHADER FRAG DCL IN[0] DCL IN[1] DCL IN[2] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] DCL OUT[2], GENERIC[1] DCL CONST[0..8] DCL TEMP[0..3], LOCAL 0: MOV TEMP[0].x, CONST[0].xxxx 1: MOV TEMP[0].y, CONST[1].xxxx 2: MOV TEMP[0].z, CONST[2].xxxx 3: MOV TEMP[1].x, CONST[0].yyyy 4: MOV TEMP[1].y, CONST[1].yyyy 5: MOV TEMP[1].z, CONST[2].yyyy 6: MOV TEMP[2].x, CONST[0].zzzz 7: MOV TEMP[2].y, CONST[1].zzzz 8: MOV TEMP[2].z, CONST[2].zzzz 9: MUL TEMP[3], CONST[5], IN[0].xxxx 10: MAD TEMP[3], CONST[6], IN[0].yyyy, TEMP[3] 11: MAD TEMP[3], CONST[7], IN[0].zzzz, TEMP[3] 12: MAD TEMP[3], CONST[8], IN[0].wwww, TEMP[3] 13: MUL TEMP[0].xyz, TEMP[0].xyzz, IN[1].xxxx 14: MAD TEMP[0].xyz, TEMP[1].xyzz, IN[1].yyyy, TEMP[0].xyzz 15: MAD TEMP[0].xyz, TEMP[2].xyzz, IN[1].zzzz, TEMP[0].xyzz 16: DP3 TEMP[1].x, TEMP[0].xyzz, TEMP[0].xyzz 17: RSQ TEMP[1].x, TEMP[1].xxxx 18: MUL TEMP[0].xyz, TEMP[0].xyzz, TEMP[1].xxxx 19: MAD TEMP[1].xy, IN[2].xyyy, CONST[4].xyyy, CONST[4].zwww 20: MOV TEMP[1].zw, TEMP[0].yyxy 21: MOV TEMP[0].x, TEMP[0].zzzz 22: MOV OUT[0], TEMP[3] 23: MOV OUT[1], TEMP[1] 24: MOV OUT[2], TEMP[0] 25: END radeonsi: Compiling shader 26 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_vs <{ float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32, i32, i32, i32, i32, i32, i32) { main_body: %17 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 0, !amdgpu.uniform !0 %18 = load <16 x i8>, <16 x i8> addrspace(2)* %17, align 16, !invariant.load !0 %19 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %18, i32 0, i32 %14) %20 = extractelement <4 x float> %19, i32 0 %21 = extractelement <4 x float> %19, i32 1 %22 = extractelement <4 x float> %19, i32 2 %23 = extractelement <4 x float> %19, i32 3 %24 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 1, !amdgpu.uniform !0 %25 = load <16 x i8>, <16 x i8> addrspace(2)* %24, align 16, !invariant.load !0 %26 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %25, i32 0, i32 %15) %27 = extractelement <4 x float> %26, i32 0 %28 = extractelement <4 x float> %26, i32 1 %29 = extractelement <4 x float> %26, i32 2 %30 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 2, !amdgpu.uniform !0 %31 = load <16 x i8>, <16 x i8> addrspace(2)* %30, align 16, !invariant.load !0 %32 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %31, i32 0, i32 %16) %33 = extractelement <4 x float> %32, i32 0 %34 = extractelement <4 x float> %32, i32 1 %35 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %36 = load <16 x i8>, <16 x i8> addrspace(2)* %35, align 16, !invariant.load !0 %37 = call float @llvm.SI.load.const(<16 x i8> %36, i32 0) %38 = call float @llvm.SI.load.const(<16 x i8> %36, i32 16) %39 = call float @llvm.SI.load.const(<16 x i8> %36, i32 32) %40 = call float @llvm.SI.load.const(<16 x i8> %36, i32 4) %41 = call float @llvm.SI.load.const(<16 x i8> %36, i32 20) %42 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %43 = load <16 x i8>, <16 x i8> addrspace(2)* %42, align 16, !invariant.load !0 %44 = call float @llvm.SI.load.const(<16 x i8> %43, i32 36) %45 = call float @llvm.SI.load.const(<16 x i8> %43, i32 8) %46 = call float @llvm.SI.load.const(<16 x i8> %43, i32 24) %47 = call float @llvm.SI.load.const(<16 x i8> %43, i32 40) %48 = call float @llvm.SI.load.const(<16 x i8> %43, i32 80) %49 = fmul float %48, %20 %50 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %51 = load <16 x i8>, <16 x i8> addrspace(2)* %50, align 16, !invariant.load !0 %52 = call float @llvm.SI.load.const(<16 x i8> %51, i32 84) %53 = fmul float %52, %20 %54 = call float @llvm.SI.load.const(<16 x i8> %51, i32 88) %55 = fmul float %54, %20 %56 = call float @llvm.SI.load.const(<16 x i8> %51, i32 92) %57 = fmul float %56, %20 %58 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %59 = load <16 x i8>, <16 x i8> addrspace(2)* %58, align 16, !invariant.load !0 %60 = call float @llvm.SI.load.const(<16 x i8> %59, i32 96) %61 = fmul float %60, %21 %62 = fadd float %61, %49 %63 = call float @llvm.SI.load.const(<16 x i8> %59, i32 100) %64 = fmul float %63, %21 %65 = fadd float %64, %53 %66 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %67 = load <16 x i8>, <16 x i8> addrspace(2)* %66, align 16, !invariant.load !0 %68 = call float @llvm.SI.load.const(<16 x i8> %67, i32 104) %69 = fmul float %68, %21 %70 = fadd float %69, %55 %71 = call float @llvm.SI.load.const(<16 x i8> %67, i32 108) %72 = fmul float %71, %21 %73 = fadd float %72, %57 %74 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %75 = load <16 x i8>, <16 x i8> addrspace(2)* %74, align 16, !invariant.load !0 %76 = call float @llvm.SI.load.const(<16 x i8> %75, i32 112) %77 = fmul float %76, %22 %78 = fadd float %77, %62 %79 = call float @llvm.SI.load.const(<16 x i8> %75, i32 116) %80 = fmul float %79, %22 %81 = fadd float %80, %65 %82 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %83 = load <16 x i8>, <16 x i8> addrspace(2)* %82, align 16, !invariant.load !0 %84 = call float @llvm.SI.load.const(<16 x i8> %83, i32 120) %85 = fmul float %84, %22 %86 = fadd float %85, %70 %87 = call float @llvm.SI.load.const(<16 x i8> %83, i32 124) %88 = fmul float %87, %22 %89 = fadd float %88, %73 %90 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %91 = load <16 x i8>, <16 x i8> addrspace(2)* %90, align 16, !invariant.load !0 %92 = call float @llvm.SI.load.const(<16 x i8> %91, i32 128) %93 = fmul float %92, %23 %94 = fadd float %93, %78 %95 = call float @llvm.SI.load.const(<16 x i8> %91, i32 132) %96 = fmul float %95, %23 %97 = fadd float %96, %81 %98 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %99 = load <16 x i8>, <16 x i8> addrspace(2)* %98, align 16, !invariant.load !0 %100 = call float @llvm.SI.load.const(<16 x i8> %99, i32 136) %101 = fmul float %100, %23 %102 = fadd float %101, %86 %103 = call float @llvm.SI.load.const(<16 x i8> %99, i32 140) %104 = fmul float %103, %23 %105 = fadd float %104, %89 %106 = fmul float %37, %27 %107 = fmul float %38, %27 %108 = fmul float %39, %27 %109 = fmul float %40, %28 %110 = fadd float %109, %106 %111 = fmul float %41, %28 %112 = fadd float %111, %107 %113 = fmul float %44, %28 %114 = fadd float %113, %108 %115 = fmul float %45, %29 %116 = fadd float %115, %110 %117 = fmul float %46, %29 %118 = fadd float %117, %112 %119 = fmul float %47, %29 %120 = fadd float %119, %114 %121 = fmul float %116, %116 %122 = fmul float %118, %118 %123 = fadd float %122, %121 %124 = fmul float %120, %120 %125 = fadd float %123, %124 %126 = call float @llvm.sqrt.f32(float %125) %127 = fdiv float 1.000000e+00, %126, !fpmath !1 %128 = fmul float %116, %127 %129 = fmul float %118, %127 %130 = fmul float %120, %127 %131 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %132 = load <16 x i8>, <16 x i8> addrspace(2)* %131, align 16, !invariant.load !0 %133 = call float @llvm.SI.load.const(<16 x i8> %132, i32 64) %134 = call float @llvm.SI.load.const(<16 x i8> %132, i32 72) %135 = fmul float %33, %133 %136 = fadd float %135, %134 %137 = call float @llvm.SI.load.const(<16 x i8> %132, i32 68) %138 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %139 = load <16 x i8>, <16 x i8> addrspace(2)* %138, align 16, !invariant.load !0 %140 = call float @llvm.SI.load.const(<16 x i8> %139, i32 76) %141 = fmul float %34, %137 %142 = fadd float %141, %140 %143 = bitcast i32 %12 to float %144 = insertvalue <{ float, float, float }> undef, float %143, 2 call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 32, i32 0, float %136, float %142, float %128, float %129) call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 33, i32 0, float %130, float %129, float %130, float undef) call void @llvm.SI.export(i32 15, i32 0, i32 1, i32 12, i32 0, float %94, float %97, float %102, float %105) ret <{ float, float, float }> %144 } ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.vs.load.input(<16 x i8>, i32, i32) #0 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #0 ; Function Attrs: nounwind readnone declare float @llvm.sqrt.f32(float) #0 ; Function Attrs: nounwind declare void @llvm.SI.export(i32, i32, i32, i32, i32, float, float, float, float) #1 attributes #0 = { nounwind readnone } attributes #1 = { nounwind } !0 = !{} !1 = !{float 2.500000e+00} FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL IN[1], GENERIC[1], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SVIEW[0], 2D, FLOAT DCL CONST[0..1] DCL CONST[3] DCL TEMP[0..1], LOCAL IMM[0] FLT32 { 0.0000, 1.0000, 0.0000, 0.0000} 0: MOV TEMP[0].xy, IN[0].zwzz 1: MOV TEMP[0].z, IN[1].xxxx 2: MOV TEMP[1].xy, IN[0].xyyy 3: TEX TEMP[1], TEMP[1], SAMP[0], 2D 4: MUL TEMP[1].xyz, TEMP[1], CONST[3] 5: MUL TEMP[1].xyz, TEMP[1].xyzz, CONST[1].xyzz 6: DP3 TEMP[0].x, TEMP[0].xyzz, CONST[0].xyzz 7: MAX TEMP[0].x, IMM[0].xxxx, TEMP[0].xxxx 8: MUL TEMP[0].xyz, TEMP[1].xyzz, TEMP[0].xxxx 9: MOV TEMP[0].xyz, TEMP[0].xyzx 10: MOV TEMP[0].w, IMM[0].yyyy 11: MOV OUT[0], TEMP[0] 12: END radeonsi: Compiling shader 27 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_ps <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), float inreg, i32 inreg, <2 x i32>, <2 x i32>, <2 x i32>, <3 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, float, float, float, float, float, i32, i32, float, i32) #0 { main_body: %23 = call float @llvm.SI.fs.interp(i32 2, i32 0, i32 %6, <2 x i32> %8) %24 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %6, <2 x i32> %8) %25 = call float @llvm.SI.fs.interp(i32 0, i32 1, i32 %6, <2 x i32> %8) %26 = call float @llvm.SI.fs.interp(i32 0, i32 0, i32 %6, <2 x i32> %8) %27 = call float @llvm.SI.fs.interp(i32 1, i32 0, i32 %6, <2 x i32> %8) %28 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 0, !amdgpu.uniform !0 %29 = load <8 x i32>, <8 x i32> addrspace(2)* %28, align 32, !invariant.load !0 %30 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %31 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %30, i64 0, i64 3, !amdgpu.uniform !0 %32 = load <4 x i32>, <4 x i32> addrspace(2)* %31, align 16, !invariant.load !0 %33 = bitcast float %26 to i32 %34 = bitcast float %27 to i32 %35 = insertelement <2 x i32> undef, i32 %33, i32 0 %36 = insertelement <2 x i32> %35, i32 %34, i32 1 %37 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %36, <8 x i32> %29, <4 x i32> %32, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %38 = extractelement <4 x float> %37, i32 0 %39 = extractelement <4 x float> %37, i32 1 %40 = extractelement <4 x float> %37, i32 2 %41 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %42 = load <16 x i8>, <16 x i8> addrspace(2)* %41, align 16, !invariant.load !0 %43 = call float @llvm.SI.load.const(<16 x i8> %42, i32 48) %44 = fmul float %38, %43 %45 = call float @llvm.SI.load.const(<16 x i8> %42, i32 52) %46 = fmul float %39, %45 %47 = call float @llvm.SI.load.const(<16 x i8> %42, i32 56) %48 = fmul float %40, %47 %49 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %50 = load <16 x i8>, <16 x i8> addrspace(2)* %49, align 16, !invariant.load !0 %51 = call float @llvm.SI.load.const(<16 x i8> %50, i32 16) %52 = fmul float %44, %51 %53 = call float @llvm.SI.load.const(<16 x i8> %50, i32 20) %54 = fmul float %46, %53 %55 = call float @llvm.SI.load.const(<16 x i8> %50, i32 24) %56 = fmul float %48, %55 %57 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %58 = load <16 x i8>, <16 x i8> addrspace(2)* %57, align 16, !invariant.load !0 %59 = call float @llvm.SI.load.const(<16 x i8> %58, i32 0) %60 = call float @llvm.SI.load.const(<16 x i8> %58, i32 4) %61 = call float @llvm.SI.load.const(<16 x i8> %58, i32 8) %62 = fmul float %23, %59 %63 = fmul float %24, %60 %64 = fadd float %63, %62 %65 = fmul float %25, %61 %66 = fadd float %64, %65 %67 = call float @llvm.maxnum.f32(float %66, float 0.000000e+00) %68 = fmul float %52, %67 %69 = fmul float %54, %67 %70 = fmul float %56, %67 %71 = bitcast float %5 to i32 %72 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> undef, i32 %71, 10 %73 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %72, float %68, 11 %74 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %73, float %69, 12 %75 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %74, float %70, 13 %76 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %75, float 1.000000e+00, 14 %77 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %76, float %21, 24 ret <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %77 } ; Function Attrs: nounwind readnone declare float @llvm.SI.fs.interp(i32, i32, i32, <2 x i32>) #1 ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.maxnum.f32(float, float) #1 attributes #0 = { "InitialPSInputAddr"="36983" } attributes #1 = { nounwind readnone } !0 = !{} SHADER KEY instance_divisors = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} as_es = 0 as_ls = 0 export_prim_id = 0 Vertex Shader as VS: Shader prolog disassembly: v_add_i32_e32 v4, vcc, s12, v0 ; 3208000C v_mov_b32_e32 v5, v4 ; 7E0A0304 v_mov_b32_e32 v6, v4 ; 7E0C0304 Shader main disassembly: s_load_dwordx4 s[4:7], s[10:11], 0x0 ; C00A0105 00000000 s_load_dwordx4 s[12:15], s[10:11], 0x10 ; C00A0305 00000010 s_load_dwordx4 s[0:3], s[2:3], 0x0 ; C00A0001 00000000 s_waitcnt lgkmcnt(0) ; BF8C007F buffer_load_format_xyzw v[7:10], v4, s[4:7], 0 idxen ; E00C2000 80010704 s_load_dwordx4 s[4:7], s[10:11], 0x20 ; C00A0105 00000020 buffer_load_format_xyzw v[11:14], v5, s[12:15], 0 idxen ; E00C2000 80030B05 s_buffer_load_dword s12, s[0:3], 0x48 ; C0220300 00000048 s_buffer_load_dword s8, s[0:3], 0x14 ; C0220200 00000014 s_buffer_load_dword s29, s[0:3], 0x20 ; C0220740 00000020 s_waitcnt lgkmcnt(0) ; BF8C007F buffer_load_format_xyzw v[3:6], v6, s[4:7], 0 idxen ; E00C2000 80010306 s_buffer_load_dword s4, s[0:3], 0x0 ; C0220100 00000000 s_buffer_load_dword s7, s[0:3], 0x10 ; C02201C0 00000010 s_buffer_load_dword s5, s[0:3], 0x4 ; C0220140 00000004 s_buffer_load_dword s6, s[0:3], 0x8 ; C0220180 00000008 s_buffer_load_dword s13, s[0:3], 0x4c ; C0220340 0000004C s_buffer_load_dword s14, s[0:3], 0x50 ; C0220380 00000050 s_buffer_load_dword s15, s[0:3], 0x54 ; C02203C0 00000054 s_buffer_load_dword s9, s[0:3], 0x18 ; C0220240 00000018 s_buffer_load_dword s10, s[0:3], 0x58 ; C0220280 00000058 s_buffer_load_dword s11, s[0:3], 0x44 ; C02202C0 00000044 s_buffer_load_dword s16, s[0:3], 0x5c ; C0220400 0000005C s_buffer_load_dword s17, s[0:3], 0x60 ; C0220440 00000060 s_buffer_load_dword s18, s[0:3], 0x64 ; C0220480 00000064 s_buffer_load_dword s19, s[0:3], 0x68 ; C02204C0 00000068 s_buffer_load_dword s20, s[0:3], 0x6c ; C0220500 0000006C s_buffer_load_dword s21, s[0:3], 0x70 ; C0220540 00000070 s_buffer_load_dword s22, s[0:3], 0x74 ; C0220580 00000074 s_buffer_load_dword s23, s[0:3], 0x78 ; C02205C0 00000078 s_buffer_load_dword s24, s[0:3], 0x7c ; C0220600 0000007C s_buffer_load_dword s25, s[0:3], 0x80 ; C0220640 00000080 s_buffer_load_dword s26, s[0:3], 0x84 ; C0220680 00000084 s_buffer_load_dword s27, s[0:3], 0x88 ; C02206C0 00000088 s_buffer_load_dword s28, s[0:3], 0x8c ; C0220700 0000008C s_buffer_load_dword s30, s[0:3], 0x24 ; C0220780 00000024 s_buffer_load_dword s31, s[0:3], 0x28 ; C02207C0 00000028 s_buffer_load_dword s0, s[0:3], 0x40 ; C0220000 00000040 v_mov_b32_e32 v0, s12 ; 7E00020C s_waitcnt lgkmcnt(0) ; BF8C007F v_mov_b32_e32 v1, s13 ; 7E02020D s_waitcnt vmcnt(0) ; BF8C0F70 v_mul_f32_e32 v5, s14, v7 ; 0A0A0E0E v_mul_f32_e32 v6, s15, v7 ; 0A0C0E0F v_mul_f32_e32 v14, s4, v11 ; 0A1C1604 v_mul_f32_e32 v15, s7, v11 ; 0A1E1607 v_mac_f32_e32 v14, s5, v12 ; 2C1C1805 v_mul_f32_e32 v11, s29, v11 ; 0A16161D v_mac_f32_e32 v15, s8, v12 ; 2C1E1808 v_mac_f32_e32 v14, s6, v13 ; 2C1C1A06 v_mac_f32_e32 v11, s30, v12 ; 2C16181E v_mac_f32_e32 v0, s0, v3 ; 2C000600 v_mac_f32_e32 v15, s9, v13 ; 2C1E1A09 v_mul_f32_e32 v3, v14, v14 ; 0A061D0E v_mac_f32_e32 v11, s31, v13 ; 2C161A1F v_mac_f32_e32 v3, v15, v15 ; 2C061F0F v_mac_f32_e32 v3, v11, v11 ; 2C06170B v_rsq_f32_e32 v3, v3 ; 7E064903 v_mul_f32_e32 v12, s10, v7 ; 0A180E0A v_mul_f32_e32 v7, s16, v7 ; 0A0E0E10 v_mac_f32_e32 v5, s17, v8 ; 2C0A1011 v_mac_f32_e32 v6, s18, v8 ; 2C0C1012 v_mac_f32_e32 v12, s19, v8 ; 2C181013 v_mac_f32_e32 v7, s20, v8 ; 2C0E1014 v_mac_f32_e32 v5, s21, v9 ; 2C0A1215 v_mac_f32_e32 v6, s22, v9 ; 2C0C1216 v_mac_f32_e32 v12, s23, v9 ; 2C181217 v_mac_f32_e32 v7, s24, v9 ; 2C0E1218 v_mul_f32_e32 v8, v3, v14 ; 0A101D03 v_mul_f32_e32 v9, v3, v15 ; 0A121F03 v_mac_f32_e32 v1, s11, v4 ; 2C02080B v_mul_f32_e32 v3, v3, v11 ; 0A061703 exp 15, 32, 0, 0, 0, v0, v1, v8, v9 ; C400020F 09080100 v_mac_f32_e32 v5, s25, v10 ; 2C0A1419 v_mac_f32_e32 v6, s26, v10 ; 2C0C141A v_mac_f32_e32 v12, s27, v10 ; 2C18141B v_mac_f32_e32 v7, s28, v10 ; 2C0E141C exp 15, 33, 0, 0, 0, v3, v9, v3, v0 ; C400021F 00030903 exp 15, 12, 0, 1, 0, v5, v6, v12, v7 ; C40008CF 070C0605 s_waitcnt expcnt(0) ; BF8C0F0F Shader epilog disassembly: s_endpgm ; BF810000 *** SHADER STATS *** SGPRS: 96 VGPRS: 16 Spilled SGPRs: 0 Spilled VGPRs: 0 Code Size: 492 bytes LDS: 0 blocks Scratch: 0 bytes per wave Max Waves: 8 ******************** SHADER KEY prolog.color_two_side = 0 prolog.flatshade_colors = 0 prolog.poly_stipple = 0 prolog.force_persp_sample_interp = 0 prolog.force_linear_sample_interp = 0 prolog.force_persp_center_interp = 0 prolog.force_linear_center_interp = 0 prolog.bc_optimize_for_persp = 0 prolog.bc_optimize_for_linear = 0 epilog.spi_shader_col_format = 0x4 epilog.color_is_int8 = 0x0 epilog.last_cbuf = 0 epilog.alpha_func = 7 epilog.alpha_to_one = 0 epilog.poly_line_smoothing = 0 epilog.clamp_color = 0 Pixel Shader: Shader main disassembly: s_mov_b64 s[0:1], exec ; BE80017E s_wqm_b64 exec, exec ; BEFE077E s_mov_b32 m0, s11 ; BEFC000B v_interp_p1_f32 v4, v2, 2, 0, [m0] ; D4100202 v_interp_p2_f32 v4, [v4], v3, 2, 0, [m0] ; D4110203 v_interp_p1_f32 v5, v2, 3, 0, [m0] ; D4140302 s_load_dwordx8 s[12:19], s[4:5], 0x0 ; C00E0302 00000000 s_load_dwordx4 s[4:7], s[4:5], 0x30 ; C00A0102 00000030 v_interp_p2_f32 v5, [v5], v3, 3, 0, [m0] ; D4150303 v_interp_p1_f32 v6, v2, 0, 1, [m0] ; D4180402 v_interp_p2_f32 v6, [v6], v3, 0, 1, [m0] ; D4190403 v_interp_p1_f32 v0, v2, 0, 0, [m0] ; D4000002 v_interp_p2_f32 v0, [v0], v3, 0, 0, [m0] ; D4010003 v_interp_p1_f32 v1, v2, 1, 0, [m0] ; D4040102 v_interp_p2_f32 v1, [v1], v3, 1, 0, [m0] ; D4050103 s_and_b64 exec, exec, s[0:1] ; 86FE007E s_load_dwordx4 s[0:3], s[2:3], 0x0 ; C00A0001 00000000 s_waitcnt lgkmcnt(0) ; BF8C007F image_sample v[0:2], v[0:1], s[12:19], s[4:7] dmask:0x7 ; F0800700 00230000 s_buffer_load_dword s5, s[0:3], 0x30 ; C0220140 00000030 s_buffer_load_dword s6, s[0:3], 0x34 ; C0220180 00000034 s_buffer_load_dword s7, s[0:3], 0x38 ; C02201C0 00000038 s_buffer_load_dword s4, s[0:3], 0x18 ; C0220100 00000018 s_buffer_load_dword s8, s[0:3], 0x10 ; C0220200 00000010 s_waitcnt vmcnt(0) lgkmcnt(0) ; BF8C0070 v_mul_f32_e32 v0, s5, v0 ; 0A000005 s_buffer_load_dword s5, s[0:3], 0x0 ; C0220140 00000000 v_mul_f32_e32 v1, s6, v1 ; 0A020206 s_buffer_load_dword s6, s[0:3], 0x4 ; C0220180 00000004 v_mul_f32_e32 v2, s7, v2 ; 0A040407 s_buffer_load_dword s7, s[0:3], 0x8 ; C02201C0 00000008 s_buffer_load_dword s0, s[0:3], 0x14 ; C0220000 00000014 s_waitcnt lgkmcnt(0) ; BF8C007F v_mul_f32_e32 v3, s5, v4 ; 0A060805 v_mac_f32_e32 v3, s6, v5 ; 2C060A06 v_mul_f32_e32 v0, s8, v0 ; 0A000008 v_mac_f32_e32 v3, s7, v6 ; 2C060C07 v_max_f32_e32 v3, 0, v3 ; 16060680 v_mul_f32_e32 v1, s0, v1 ; 0A020200 v_mul_f32_e32 v2, s4, v2 ; 0A040404 v_mul_f32_e32 v0, v3, v0 ; 0A000103 v_mul_f32_e32 v1, v3, v1 ; 0A020303 v_mul_f32_e32 v2, v3, v2 ; 0A040503 v_mov_b32_e32 v3, 1.0 ; 7E0602F2 Shader epilog disassembly: v_cvt_pkrtz_f16_f32_e64 v0, v0, v1 ; D2960000 00020300 v_cvt_pkrtz_f16_f32_e64 v1, v2, v3 ; D2960001 00020702 exp 15, 0, 1, 1, 1, v0, v1, v0, v0 ; C4001C0F 00000100 s_endpgm ; BF810000 *** SHADER CONFIG *** SPI_PS_INPUT_ADDR = 0xd077 SPI_PS_INPUT_ENA = 0x0002 *** SHADER STATS *** SGPRS: 96 VGPRS: 16 Spilled SGPRs: 0 Spilled VGPRs: 0 Code Size: 256 bytes LDS: 0 blocks Scratch: 0 bytes per wave Max Waves: 8 ******************** VERT PROPERTY NEXT_SHADER FRAG DCL IN[0] DCL IN[1] DCL IN[2] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] DCL OUT[2], GENERIC[1] DCL OUT[3], GENERIC[2] DCL CONST[0..4] DCL TEMP[0..2], LOCAL 0: MUL TEMP[0], CONST[1], IN[0].xxxx 1: MAD TEMP[0], CONST[2], IN[0].yyyy, TEMP[0] 2: MAD TEMP[0], CONST[3], IN[0].zzzz, TEMP[0] 3: MAD TEMP[0], CONST[4], IN[0].wwww, TEMP[0] 4: MUL TEMP[1], IN[1], CONST[0] 5: MOV TEMP[2].xy, IN[2].xyxx 6: MOV OUT[2], IN[0] 7: MOV OUT[0], TEMP[0] 8: MOV OUT[3], TEMP[2] 9: MOV OUT[1], TEMP[1] 10: END radeonsi: Compiling shader 28 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_vs <{ float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32, i32, i32, i32, i32, i32, i32) { main_body: %17 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 0, !amdgpu.uniform !0 %18 = load <16 x i8>, <16 x i8> addrspace(2)* %17, align 16, !invariant.load !0 %19 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %18, i32 0, i32 %14) %20 = extractelement <4 x float> %19, i32 0 %21 = extractelement <4 x float> %19, i32 1 %22 = extractelement <4 x float> %19, i32 2 %23 = extractelement <4 x float> %19, i32 3 %24 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 1, !amdgpu.uniform !0 %25 = load <16 x i8>, <16 x i8> addrspace(2)* %24, align 16, !invariant.load !0 %26 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %25, i32 0, i32 %15) %27 = extractelement <4 x float> %26, i32 0 %28 = extractelement <4 x float> %26, i32 1 %29 = extractelement <4 x float> %26, i32 2 %30 = extractelement <4 x float> %26, i32 3 %31 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 2, !amdgpu.uniform !0 %32 = load <16 x i8>, <16 x i8> addrspace(2)* %31, align 16, !invariant.load !0 %33 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %32, i32 0, i32 %16) %34 = extractelement <4 x float> %33, i32 0 %35 = extractelement <4 x float> %33, i32 1 %36 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %37 = load <16 x i8>, <16 x i8> addrspace(2)* %36, align 16, !invariant.load !0 %38 = call float @llvm.SI.load.const(<16 x i8> %37, i32 16) %39 = fmul float %38, %20 %40 = call float @llvm.SI.load.const(<16 x i8> %37, i32 20) %41 = fmul float %40, %20 %42 = call float @llvm.SI.load.const(<16 x i8> %37, i32 24) %43 = fmul float %42, %20 %44 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %45 = load <16 x i8>, <16 x i8> addrspace(2)* %44, align 16, !invariant.load !0 %46 = call float @llvm.SI.load.const(<16 x i8> %45, i32 28) %47 = fmul float %46, %20 %48 = call float @llvm.SI.load.const(<16 x i8> %45, i32 32) %49 = fmul float %48, %21 %50 = fadd float %49, %39 %51 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %52 = load <16 x i8>, <16 x i8> addrspace(2)* %51, align 16, !invariant.load !0 %53 = call float @llvm.SI.load.const(<16 x i8> %52, i32 36) %54 = fmul float %53, %21 %55 = fadd float %54, %41 %56 = call float @llvm.SI.load.const(<16 x i8> %52, i32 40) %57 = fmul float %56, %21 %58 = fadd float %57, %43 %59 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %60 = load <16 x i8>, <16 x i8> addrspace(2)* %59, align 16, !invariant.load !0 %61 = call float @llvm.SI.load.const(<16 x i8> %60, i32 44) %62 = fmul float %61, %21 %63 = fadd float %62, %47 %64 = call float @llvm.SI.load.const(<16 x i8> %60, i32 48) %65 = fmul float %64, %22 %66 = fadd float %65, %50 %67 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %68 = load <16 x i8>, <16 x i8> addrspace(2)* %67, align 16, !invariant.load !0 %69 = call float @llvm.SI.load.const(<16 x i8> %68, i32 52) %70 = fmul float %69, %22 %71 = fadd float %70, %55 %72 = call float @llvm.SI.load.const(<16 x i8> %68, i32 56) %73 = fmul float %72, %22 %74 = fadd float %73, %58 %75 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %76 = load <16 x i8>, <16 x i8> addrspace(2)* %75, align 16, !invariant.load !0 %77 = call float @llvm.SI.load.const(<16 x i8> %76, i32 60) %78 = fmul float %77, %22 %79 = fadd float %78, %63 %80 = call float @llvm.SI.load.const(<16 x i8> %76, i32 64) %81 = fmul float %80, %23 %82 = fadd float %81, %66 %83 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %84 = load <16 x i8>, <16 x i8> addrspace(2)* %83, align 16, !invariant.load !0 %85 = call float @llvm.SI.load.const(<16 x i8> %84, i32 68) %86 = fmul float %85, %23 %87 = fadd float %86, %71 %88 = call float @llvm.SI.load.const(<16 x i8> %84, i32 72) %89 = fmul float %88, %23 %90 = fadd float %89, %74 %91 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %92 = load <16 x i8>, <16 x i8> addrspace(2)* %91, align 16, !invariant.load !0 %93 = call float @llvm.SI.load.const(<16 x i8> %92, i32 76) %94 = fmul float %93, %23 %95 = fadd float %94, %79 %96 = call float @llvm.SI.load.const(<16 x i8> %92, i32 0) %97 = fmul float %27, %96 %98 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %99 = load <16 x i8>, <16 x i8> addrspace(2)* %98, align 16, !invariant.load !0 %100 = call float @llvm.SI.load.const(<16 x i8> %99, i32 4) %101 = fmul float %28, %100 %102 = call float @llvm.SI.load.const(<16 x i8> %99, i32 8) %103 = fmul float %29, %102 %104 = call float @llvm.SI.load.const(<16 x i8> %99, i32 12) %105 = fmul float %30, %104 %106 = bitcast i32 %12 to float %107 = insertvalue <{ float, float, float }> undef, float %106, 2 call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 32, i32 0, float %97, float %101, float %103, float %105) call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 33, i32 0, float %20, float %21, float %22, float %23) call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 34, i32 0, float %34, float %35, float undef, float undef) call void @llvm.SI.export(i32 15, i32 0, i32 1, i32 12, i32 0, float %82, float %87, float %90, float %95) ret <{ float, float, float }> %107 } ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.vs.load.input(<16 x i8>, i32, i32) #0 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #0 ; Function Attrs: nounwind declare void @llvm.SI.export(i32, i32, i32, i32, i32, float, float, float, float) #1 attributes #0 = { nounwind readnone } attributes #1 = { nounwind } !0 = !{} FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL IN[1], GENERIC[1], PERSPECTIVE DCL IN[2], GENERIC[2], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SVIEW[0], 2D, FLOAT DCL CONST[0..3] DCL TEMP[0..3], LOCAL IMM[0] FLT32 { 1.0000, 0.0010, 0.0000, 0.0000} 0: MOV TEMP[0].xy, IN[2].xyyy 1: TEX TEMP[0], TEMP[0], SAMP[0], 2D 2: ADD TEMP[0], TEMP[0], CONST[0] 3: MUL TEMP[0], TEMP[0], IN[0] 4: MOV TEMP[1], TEMP[0] 5: UIF CONST[1].xxxx :0 6: FSGE TEMP[2].x, CONST[2].zzzz, IN[1].xxxx 7: AND TEMP[2].x, TEMP[2].xxxx, IMM[0].xxxx 8: FSGE TEMP[3].x, CONST[2].wwww, IN[1].yyyy 9: AND TEMP[3].x, TEMP[3].xxxx, IMM[0].xxxx 10: MOV TEMP[2].y, TEMP[3].xxxx 11: FSGE TEMP[3].xy, IN[1].xyyy, CONST[2].xyyy 12: AND TEMP[3].xy, TEMP[3].xyyy, IMM[0].xxxx 13: MUL TEMP[2].xy, TEMP[3].xyyy, TEMP[2].xyyy 14: MUL TEMP[2].x, TEMP[2].xxxx, TEMP[2].yyyy 15: MUL TEMP[1], TEMP[0], TEMP[2].xxxx 16: ENDIF 17: FSLT TEMP[0].x, TEMP[1].wwww, IMM[0].yyyy 18: AND TEMP[0].x, CONST[3].xxxx, TEMP[0].xxxx 19: AND TEMP[0].x, TEMP[0].xxxx, IMM[0].xxxx 20: KILL_IF -TEMP[0].xxxx 21: MOV OUT[0], TEMP[1] 22: END radeonsi: Compiling shader 29 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_ps <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), float inreg, i32 inreg, <2 x i32>, <2 x i32>, <2 x i32>, <3 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, float, float, float, float, float, i32, i32, float, i32) #0 { main_body: %23 = call float @llvm.SI.fs.interp(i32 0, i32 2, i32 %6, <2 x i32> %8) %24 = call float @llvm.SI.fs.interp(i32 1, i32 2, i32 %6, <2 x i32> %8) %25 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 0, !amdgpu.uniform !0 %26 = load <8 x i32>, <8 x i32> addrspace(2)* %25, align 32, !invariant.load !0 %27 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %28 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %27, i64 0, i64 3, !amdgpu.uniform !0 %29 = load <4 x i32>, <4 x i32> addrspace(2)* %28, align 16, !invariant.load !0 %30 = bitcast float %23 to i32 %31 = bitcast float %24 to i32 %32 = insertelement <2 x i32> undef, i32 %30, i32 0 %33 = insertelement <2 x i32> %32, i32 %31, i32 1 %34 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %33, <8 x i32> %26, <4 x i32> %29, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %35 = extractelement <4 x float> %34, i32 0 %36 = extractelement <4 x float> %34, i32 1 %37 = extractelement <4 x float> %34, i32 2 %38 = extractelement <4 x float> %34, i32 3 %39 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %40 = load <16 x i8>, <16 x i8> addrspace(2)* %39, align 16, !invariant.load !0 %41 = call float @llvm.SI.load.const(<16 x i8> %40, i32 0) %42 = fadd float %35, %41 %43 = call float @llvm.SI.load.const(<16 x i8> %40, i32 4) %44 = fadd float %36, %43 %45 = call float @llvm.SI.load.const(<16 x i8> %40, i32 8) %46 = fadd float %37, %45 %47 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %48 = load <16 x i8>, <16 x i8> addrspace(2)* %47, align 16, !invariant.load !0 %49 = call float @llvm.SI.load.const(<16 x i8> %48, i32 12) %50 = fadd float %38, %49 %51 = call float @llvm.SI.fs.interp(i32 0, i32 0, i32 %6, <2 x i32> %8) %52 = fmul float %42, %51 %53 = call float @llvm.SI.fs.interp(i32 1, i32 0, i32 %6, <2 x i32> %8) %54 = fmul float %44, %53 %55 = call float @llvm.SI.fs.interp(i32 2, i32 0, i32 %6, <2 x i32> %8) %56 = fmul float %46, %55 %57 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %6, <2 x i32> %8) %58 = fmul float %50, %57 %59 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %60 = load <16 x i8>, <16 x i8> addrspace(2)* %59, align 16, !invariant.load !0 %61 = call float @llvm.SI.load.const(<16 x i8> %60, i32 16) %62 = bitcast float %61 to i32 %63 = icmp eq i32 %62, 0 br i1 %63, label %endif16, label %if5 if5: ; preds = %main_body %64 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %65 = load <16 x i8>, <16 x i8> addrspace(2)* %64, align 16, !invariant.load !0 %66 = call float @llvm.SI.load.const(<16 x i8> %65, i32 40) %67 = call float @llvm.SI.fs.interp(i32 0, i32 1, i32 %6, <2 x i32> %8) %68 = fcmp oge float %66, %67 %69 = select i1 %68, float 1.000000e+00, float 0.000000e+00 %70 = call float @llvm.SI.load.const(<16 x i8> %65, i32 44) %71 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %72 = fcmp oge float %70, %71 %73 = select i1 %72, float 1.000000e+00, float 0.000000e+00 %74 = call float @llvm.SI.fs.interp(i32 0, i32 1, i32 %6, <2 x i32> %8) %75 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %76 = load <16 x i8>, <16 x i8> addrspace(2)* %75, align 16, !invariant.load !0 %77 = call float @llvm.SI.load.const(<16 x i8> %76, i32 32) %78 = fcmp oge float %74, %77 %79 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %80 = call float @llvm.SI.load.const(<16 x i8> %76, i32 36) %81 = fcmp oge float %79, %80 %82 = select i1 %78, float 1.000000e+00, float 0.000000e+00 %83 = select i1 %81, float 1.000000e+00, float 0.000000e+00 %84 = fmul float %82, %69 %85 = fmul float %83, %73 %86 = fmul float %84, %85 %87 = fmul float %52, %86 %88 = fmul float %54, %86 %89 = fmul float %56, %86 %90 = fmul float %58, %86 br label %endif16 endif16: ; preds = %main_body, %if5 %.03 = phi float [ %90, %if5 ], [ %58, %main_body ] %.02 = phi float [ %89, %if5 ], [ %56, %main_body ] %.01 = phi float [ %88, %if5 ], [ %54, %main_body ] %.0 = phi float [ %87, %if5 ], [ %52, %main_body ] %91 = fcmp olt float %.03, 0x3F50624DE0000000 %92 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %93 = load <16 x i8>, <16 x i8> addrspace(2)* %92, align 16, !invariant.load !0 %94 = call float @llvm.SI.load.const(<16 x i8> %93, i32 48) %95 = bitcast float %94 to i32 %.op = and i32 %95, 1065353216 %96 = bitcast i32 %.op to float %97 = select i1 %91, float %96, float 0.000000e+00 %98 = fcmp ogt float %97, -0.000000e+00 %99 = select i1 %98, float -1.000000e+00, float 0.000000e+00 call void @llvm.AMDGPU.kill(float %99) %100 = bitcast float %5 to i32 %101 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> undef, i32 %100, 10 %102 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %101, float %.0, 11 %103 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %102, float %.01, 12 %104 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %103, float %.02, 13 %105 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %104, float %.03, 14 %106 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %105, float %21, 24 ret <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %106 } ; Function Attrs: nounwind readnone declare float @llvm.SI.fs.interp(i32, i32, i32, <2 x i32>) #1 ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #1 ; Function Attrs: nounwind declare void @llvm.AMDGPU.kill(float) #2 attributes #0 = { "InitialPSInputAddr"="36983" } attributes #1 = { nounwind readnone } attributes #2 = { nounwind } !0 = !{} SHADER KEY instance_divisors = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} as_es = 0 as_ls = 0 export_prim_id = 0 Vertex Shader as VS: Shader prolog disassembly: v_add_i32_e32 v4, vcc, s12, v0 ; 3208000C v_mov_b32_e32 v5, v4 ; 7E0A0304 v_mov_b32_e32 v6, v4 ; 7E0C0304 Shader main disassembly: s_load_dwordx4 s[4:7], s[10:11], 0x0 ; C00A0105 00000000 s_load_dwordx4 s[12:15], s[10:11], 0x10 ; C00A0305 00000010 s_load_dwordx4 s[8:11], s[10:11], 0x20 ; C00A0205 00000020 s_load_dwordx4 s[0:3], s[2:3], 0x0 ; C00A0001 00000000 s_waitcnt lgkmcnt(0) ; BF8C007F buffer_load_format_xyzw v[7:10], v4, s[4:7], 0 idxen ; E00C2000 80010704 s_nop 0 ; BF800000 buffer_load_format_xyzw v[11:14], v5, s[12:15], 0 idxen ; E00C2000 80030B05 s_nop 0 ; BF800000 buffer_load_format_xyzw v[3:6], v6, s[8:11], 0 idxen ; E00C2000 80020306 s_buffer_load_dword s8, s[0:3], 0x10 ; C0220200 00000010 s_buffer_load_dword s4, s[0:3], 0x0 ; C0220100 00000000 s_buffer_load_dword s5, s[0:3], 0x4 ; C0220140 00000004 s_buffer_load_dword s6, s[0:3], 0x8 ; C0220180 00000008 s_buffer_load_dword s7, s[0:3], 0xc ; C02201C0 0000000C s_buffer_load_dword s9, s[0:3], 0x14 ; C0220240 00000014 s_buffer_load_dword s10, s[0:3], 0x18 ; C0220280 00000018 s_buffer_load_dword s11, s[0:3], 0x1c ; C02202C0 0000001C s_buffer_load_dword s12, s[0:3], 0x20 ; C0220300 00000020 s_buffer_load_dword s13, s[0:3], 0x24 ; C0220340 00000024 s_buffer_load_dword s14, s[0:3], 0x28 ; C0220380 00000028 s_buffer_load_dword s15, s[0:3], 0x2c ; C02203C0 0000002C s_buffer_load_dword s16, s[0:3], 0x30 ; C0220400 00000030 s_buffer_load_dword s17, s[0:3], 0x34 ; C0220440 00000034 s_buffer_load_dword s18, s[0:3], 0x38 ; C0220480 00000038 s_buffer_load_dword s19, s[0:3], 0x3c ; C02204C0 0000003C s_buffer_load_dword s20, s[0:3], 0x40 ; C0220500 00000040 s_buffer_load_dword s21, s[0:3], 0x44 ; C0220540 00000044 s_buffer_load_dword s22, s[0:3], 0x48 ; C0220580 00000048 s_buffer_load_dword s0, s[0:3], 0x4c ; C0220000 0000004C s_waitcnt vmcnt(2) lgkmcnt(0) ; BF8C0072 v_mul_f32_e32 v0, s8, v7 ; 0A000E08 v_mul_f32_e32 v1, s9, v7 ; 0A020E09 s_waitcnt vmcnt(0) ; BF8C0F70 v_mul_f32_e32 v5, s10, v7 ; 0A0A0E0A v_mul_f32_e32 v6, s11, v7 ; 0A0C0E0B v_mac_f32_e32 v0, s12, v8 ; 2C00100C v_mul_f32_e32 v11, s4, v11 ; 0A161604 v_mul_f32_e32 v12, s5, v12 ; 0A181805 v_mul_f32_e32 v13, s6, v13 ; 0A1A1A06 v_mul_f32_e32 v14, s7, v14 ; 0A1C1C07 v_mac_f32_e32 v1, s13, v8 ; 2C02100D v_mac_f32_e32 v5, s14, v8 ; 2C0A100E v_mac_f32_e32 v6, s15, v8 ; 2C0C100F v_mac_f32_e32 v0, s16, v9 ; 2C001210 exp 15, 32, 0, 0, 0, v11, v12, v13, v14 ; C400020F 0E0D0C0B v_mac_f32_e32 v1, s17, v9 ; 2C021211 v_mac_f32_e32 v5, s18, v9 ; 2C0A1212 v_mac_f32_e32 v6, s19, v9 ; 2C0C1213 exp 15, 33, 0, 0, 0, v7, v8, v9, v10 ; C400021F 0A090807 v_mac_f32_e32 v0, s20, v10 ; 2C001414 v_mac_f32_e32 v1, s21, v10 ; 2C021415 v_mac_f32_e32 v5, s22, v10 ; 2C0A1416 v_mac_f32_e32 v6, s0, v10 ; 2C0C1400 exp 15, 34, 0, 0, 0, v3, v4, v0, v0 ; C400022F 00000403 exp 15, 12, 0, 1, 0, v0, v1, v5, v6 ; C40008CF 06050100 s_waitcnt expcnt(0) ; BF8C0F0F Shader epilog disassembly: s_endpgm ; BF810000 *** SHADER STATS *** SGPRS: 96 VGPRS: 16 Spilled SGPRs: 0 Spilled VGPRs: 0 Code Size: 368 bytes LDS: 0 blocks Scratch: 0 bytes per wave Max Waves: 8 ******************** SHADER KEY prolog.color_two_side = 0 prolog.flatshade_colors = 0 prolog.poly_stipple = 0 prolog.force_persp_sample_interp = 0 prolog.force_linear_sample_interp = 0 prolog.force_persp_center_interp = 0 prolog.force_linear_center_interp = 0 prolog.bc_optimize_for_persp = 0 prolog.bc_optimize_for_linear = 0 epilog.spi_shader_col_format = 0x4 epilog.color_is_int8 = 0x0 epilog.last_cbuf = 0 epilog.alpha_func = 7 epilog.alpha_to_one = 0 epilog.poly_line_smoothing = 0 epilog.clamp_color = 0 Pixel Shader: Shader main disassembly: s_mov_b64 s[0:1], exec ; BE80017E s_wqm_b64 exec, exec ; BEFE077E s_load_dwordx8 s[12:19], s[4:5], 0x0 ; C00E0302 00000000 s_load_dwordx4 s[4:7], s[4:5], 0x30 ; C00A0102 00000030 s_mov_b32 m0, s11 ; BEFC000B v_interp_p1_f32 v0, v2, 0, 2, [m0] ; D4000802 v_interp_p2_f32 v0, [v0], v3, 0, 2, [m0] ; D4010803 v_interp_p1_f32 v1, v2, 1, 2, [m0] ; D4040902 v_interp_p2_f32 v1, [v1], v3, 1, 2, [m0] ; D4050903 s_and_b64 exec, exec, s[0:1] ; 86FE007E s_waitcnt lgkmcnt(0) ; BF8C007F image_sample v[4:7], v[0:1], s[12:19], s[4:7] dmask:0xf ; F0800F00 00230400 s_load_dwordx4 s[4:7], s[2:3], 0x0 ; C00A0101 00000000 s_nop 0 ; BF800000 s_waitcnt lgkmcnt(0) ; BF8C007F s_buffer_load_dword s0, s[4:7], 0x0 ; C0220002 00000000 s_buffer_load_dword s2, s[4:7], 0x8 ; C0220082 00000008 s_buffer_load_dword s1, s[4:7], 0x4 ; C0220042 00000004 s_buffer_load_dword s3, s[4:7], 0xc ; C02200C2 0000000C s_buffer_load_dword s8, s[4:7], 0x10 ; C0220202 00000010 s_waitcnt vmcnt(0) lgkmcnt(0) ; BF8C0070 v_add_f32_e32 v0, s0, v4 ; 02000800 v_add_f32_e32 v4, s2, v6 ; 02080C02 v_interp_p1_f32 v6, v2, 0, 0, [m0] ; D4180002 v_interp_p2_f32 v6, [v6], v3, 0, 0, [m0] ; D4190003 v_mul_f32_e32 v0, v6, v0 ; 0A000106 v_interp_p1_f32 v6, v2, 1, 0, [m0] ; D4180102 v_add_f32_e32 v1, s1, v5 ; 02020A01 v_interp_p2_f32 v6, [v6], v3, 1, 0, [m0] ; D4190103 v_mul_f32_e32 v1, v6, v1 ; 0A020306 v_interp_p1_f32 v6, v2, 2, 0, [m0] ; D4180202 v_interp_p2_f32 v6, [v6], v3, 2, 0, [m0] ; D4190203 v_mul_f32_e32 v4, v6, v4 ; 0A080906 v_interp_p1_f32 v6, v2, 3, 0, [m0] ; D4180302 v_add_f32_e32 v5, s3, v7 ; 020A0E03 v_interp_p2_f32 v6, [v6], v3, 3, 0, [m0] ; D4190303 v_mul_f32_e32 v5, v6, v5 ; 0A0A0B06 s_cmp_eq_u32 s8, 0 ; BF068008 s_cbranch_scc1 BB0_2 ; BF850000 s_buffer_load_dword s2, s[4:7], 0x28 ; C0220082 00000028 s_buffer_load_dword s3, s[4:7], 0x2c ; C02200C2 0000002C s_mov_b32 m0, s11 ; BEFC000B s_buffer_load_dword s0, s[4:7], 0x20 ; C0220002 00000020 s_buffer_load_dword s1, s[4:7], 0x24 ; C0220042 00000024 v_interp_p1_f32 v6, v2, 0, 1, [m0] ; D4180402 v_interp_p2_f32 v6, [v6], v3, 0, 1, [m0] ; D4190403 v_interp_p1_f32 v2, v2, 1, 1, [m0] ; D4080502 s_waitcnt lgkmcnt(0) ; BF8C007F v_cmp_ge_f32_e32 vcc, s2, v6 ; 7C8C0C02 v_interp_p2_f32 v2, [v2], v3, 1, 1, [m0] ; D4090503 v_cndmask_b32_e64 v7, 0, 1.0, vcc ; D1000007 01A9E480 v_cmp_ge_f32_e32 vcc, s3, v2 ; 7C8C0403 v_cndmask_b32_e64 v3, 0, 1.0, vcc ; D1000003 01A9E480 v_cmp_le_f32_e32 vcc, s0, v6 ; 7C860C00 v_cmp_le_f32_e64 s[0:1], s1, v2 ; D0430000 00020401 v_cndmask_b32_e64 v2, 0, 1.0, vcc ; D1000002 01A9E480 v_cndmask_b32_e64 v6, 0, 1.0, s[0:1] ; D1000006 0001E480 v_mul_f32_e32 v2, v7, v2 ; 0A040507 v_mul_f32_e32 v3, v3, v6 ; 0A060D03 v_mul_f32_e32 v2, v3, v2 ; 0A040503 v_mul_f32_e32 v0, v2, v0 ; 0A000102 v_mul_f32_e32 v1, v2, v1 ; 0A020302 v_mul_f32_e32 v4, v2, v4 ; 0A080902 v_mul_f32_e32 v5, v2, v5 ; 0A0A0B02 s_buffer_load_dword s0, s[4:7], 0x30 ; C0220002 00000030 v_mov_b32_e32 v2, 0x3a83126f ; 7E0402FF 3A83126F v_cmp_gt_f32_e32 vcc, v2, v5 ; 7C880B02 v_bfrev_b32_e32 v3, 1 ; 7E065881 s_waitcnt lgkmcnt(0) ; BF8C007F s_and_b32 s0, s0, 1.0 ; 8600F200 v_mov_b32_e32 v2, s0 ; 7E040200 v_cndmask_b32_e32 v2, 0, v2, vcc ; 00040480 v_cmp_lt_f32_e32 vcc, v3, v2 ; 7C820503 v_cndmask_b32_e64 v2, 0, -1.0, vcc ; D1000002 01A9E680 v_cmpx_le_f32_e32 vcc, 0, v2 ; 7CA60480 s_cbranch_execnz BB0_3 ; BF890000 exp 0, 9, 0, 1, 1, v0, v0, v0, v0 ; C4001890 00000000 s_endpgm ; BF810000 v_mov_b32_e32 v2, v4 ; 7E040304 v_mov_b32_e32 v3, v5 ; 7E060305 Shader epilog disassembly: v_cvt_pkrtz_f16_f32_e64 v0, v0, v1 ; D2960000 00020300 v_cvt_pkrtz_f16_f32_e64 v1, v2, v3 ; D2960001 00020702 exp 15, 0, 1, 1, 1, v0, v1, v0, v0 ; C4001C0F 00000100 s_endpgm ; BF810000 *** SHADER CONFIG *** SPI_PS_INPUT_ADDR = 0xd077 SPI_PS_INPUT_ENA = 0x0002 *** SHADER STATS *** SGPRS: 96 VGPRS: 16 Spilled SGPRs: 0 Spilled VGPRs: 0 Code Size: 436 bytes LDS: 0 blocks Scratch: 0 bytes per wave Max Waves: 8 ******************** VERT PROPERTY NEXT_SHADER FRAG DCL IN[0] DCL IN[1] DCL IN[2] DCL IN[3] DCL IN[4] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] DCL OUT[2], GENERIC[1] DCL OUT[3], GENERIC[2] DCL OUT[4], GENERIC[3] DCL CONST[0..14] DCL TEMP[0..6], LOCAL 0: MAD TEMP[0].xy, IN[3].xyyy, CONST[9].xyyy, CONST[9].zwww 1: MAD TEMP[1].xy, IN[2].xyyy, CONST[10].xyyy, CONST[10].zwww 2: MOV TEMP[0].zw, TEMP[1].yyxy 3: MUL TEMP[1], CONST[0], IN[0].xxxx 4: MAD TEMP[1], CONST[1], IN[0].yyyy, TEMP[1] 5: MAD TEMP[1], CONST[2], IN[0].zzzz, TEMP[1] 6: MAD TEMP[1].xyz, CONST[3], IN[0].wwww, TEMP[1] 7: MOV TEMP[2].x, CONST[4].xxxx 8: MOV TEMP[2].y, CONST[5].xxxx 9: MOV TEMP[2].z, CONST[6].xxxx 10: MOV TEMP[3].x, CONST[4].yyyy 11: MOV TEMP[3].y, CONST[5].yyyy 12: MOV TEMP[3].z, CONST[6].yyyy 13: MOV TEMP[4].x, CONST[4].zzzz 14: MOV TEMP[4].y, CONST[5].zzzz 15: MOV TEMP[4].z, CONST[6].zzzz 16: MUL TEMP[2].xyz, TEMP[2].xyzz, IN[1].xxxx 17: MAD TEMP[2].xyz, TEMP[3].xyzz, IN[1].yyyy, TEMP[2].xyzz 18: MAD TEMP[2].xyz, TEMP[4].xyzz, IN[1].zzzz, TEMP[2].xyzz 19: DP3 TEMP[3].x, TEMP[2].xyzz, TEMP[2].xyzz 20: RSQ TEMP[3].x, TEMP[3].xxxx 21: MUL TEMP[2].xyz, TEMP[2].xyzz, TEMP[3].xxxx 22: MUL TEMP[3].xyz, CONST[0].xyzz, IN[4].xxxx 23: MAD TEMP[3].xyz, CONST[1].xyzz, IN[4].yyyy, TEMP[3].xyzz 24: MAD TEMP[3].xyz, CONST[2].xyzz, IN[4].zzzz, TEMP[3].xyzz 25: DP3 TEMP[4].x, TEMP[3].xyzz, TEMP[3].xyzz 26: RSQ TEMP[4].x, TEMP[4].xxxx 27: MUL TEMP[3].xyz, TEMP[3].xyzz, TEMP[4].xxxx 28: MUL TEMP[4].xyz, TEMP[2].zxyy, TEMP[3].yzxx 29: MAD TEMP[4].xyz, TEMP[2].yzxx, TEMP[3].zxyy, -TEMP[4].xyzz 30: MUL TEMP[5].x, IN[4].wwww, CONST[8].wwww 31: MUL TEMP[4].xyz, TEMP[4].xyzz, TEMP[5].xxxx 32: MOV TEMP[5].x, TEMP[3].xxxx 33: MOV TEMP[5].y, TEMP[4].xxxx 34: MOV TEMP[5].z, TEMP[2].xxxx 35: MOV TEMP[5].w, TEMP[1].xxxx 36: MOV TEMP[6].x, TEMP[3].yyyy 37: MOV TEMP[6].y, TEMP[4].yyyy 38: MOV TEMP[6].z, TEMP[2].yyyy 39: MOV TEMP[6].w, TEMP[1].yyyy 40: MOV TEMP[3].x, TEMP[3].zzzz 41: MOV TEMP[3].y, TEMP[4].zzzz 42: MOV TEMP[3].z, TEMP[2].zzzz 43: MOV TEMP[3].w, TEMP[1].zzzz 44: MUL TEMP[1], CONST[11], IN[0].xxxx 45: MAD TEMP[1], CONST[12], IN[0].yyyy, TEMP[1] 46: MAD TEMP[1], CONST[13], IN[0].zzzz, TEMP[1] 47: MAD TEMP[1], CONST[14], IN[0].wwww, TEMP[1] 48: MOV OUT[4], TEMP[3] 49: MOV OUT[0], TEMP[1] 50: MOV OUT[1], TEMP[0] 51: MOV OUT[2], TEMP[5] 52: MOV OUT[3], TEMP[6] 53: END radeonsi: Compiling shader 30 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_vs <{ float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32, i32, i32, i32, i32, i32, i32, i32, i32) { main_body: %19 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 0, !amdgpu.uniform !0 %20 = load <16 x i8>, <16 x i8> addrspace(2)* %19, align 16, !invariant.load !0 %21 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %20, i32 0, i32 %14) %22 = extractelement <4 x float> %21, i32 0 %23 = extractelement <4 x float> %21, i32 1 %24 = extractelement <4 x float> %21, i32 2 %25 = extractelement <4 x float> %21, i32 3 %26 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 1, !amdgpu.uniform !0 %27 = load <16 x i8>, <16 x i8> addrspace(2)* %26, align 16, !invariant.load !0 %28 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %27, i32 0, i32 %15) %29 = extractelement <4 x float> %28, i32 0 %30 = extractelement <4 x float> %28, i32 1 %31 = extractelement <4 x float> %28, i32 2 %32 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 2, !amdgpu.uniform !0 %33 = load <16 x i8>, <16 x i8> addrspace(2)* %32, align 16, !invariant.load !0 %34 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %33, i32 0, i32 %16) %35 = extractelement <4 x float> %34, i32 0 %36 = extractelement <4 x float> %34, i32 1 %37 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 3, !amdgpu.uniform !0 %38 = load <16 x i8>, <16 x i8> addrspace(2)* %37, align 16, !invariant.load !0 %39 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %38, i32 0, i32 %17) %40 = extractelement <4 x float> %39, i32 0 %41 = extractelement <4 x float> %39, i32 1 %42 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 4, !amdgpu.uniform !0 %43 = load <16 x i8>, <16 x i8> addrspace(2)* %42, align 16, !invariant.load !0 %44 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %43, i32 0, i32 %18) %45 = extractelement <4 x float> %44, i32 0 %46 = extractelement <4 x float> %44, i32 1 %47 = extractelement <4 x float> %44, i32 2 %48 = extractelement <4 x float> %44, i32 3 %49 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %50 = load <16 x i8>, <16 x i8> addrspace(2)* %49, align 16, !invariant.load !0 %51 = call float @llvm.SI.load.const(<16 x i8> %50, i32 144) %52 = call float @llvm.SI.load.const(<16 x i8> %50, i32 152) %53 = fmul float %40, %51 %54 = fadd float %53, %52 %55 = call float @llvm.SI.load.const(<16 x i8> %50, i32 148) %56 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %57 = load <16 x i8>, <16 x i8> addrspace(2)* %56, align 16, !invariant.load !0 %58 = call float @llvm.SI.load.const(<16 x i8> %57, i32 156) %59 = fmul float %41, %55 %60 = fadd float %59, %58 %61 = call float @llvm.SI.load.const(<16 x i8> %57, i32 160) %62 = call float @llvm.SI.load.const(<16 x i8> %57, i32 168) %63 = fmul float %35, %61 %64 = fadd float %63, %62 %65 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %66 = load <16 x i8>, <16 x i8> addrspace(2)* %65, align 16, !invariant.load !0 %67 = call float @llvm.SI.load.const(<16 x i8> %66, i32 164) %68 = call float @llvm.SI.load.const(<16 x i8> %66, i32 172) %69 = fmul float %36, %67 %70 = fadd float %69, %68 %71 = call float @llvm.SI.load.const(<16 x i8> %66, i32 0) %72 = fmul float %71, %22 %73 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %74 = load <16 x i8>, <16 x i8> addrspace(2)* %73, align 16, !invariant.load !0 %75 = call float @llvm.SI.load.const(<16 x i8> %74, i32 4) %76 = fmul float %75, %22 %77 = call float @llvm.SI.load.const(<16 x i8> %74, i32 8) %78 = fmul float %77, %22 %79 = call float @llvm.SI.load.const(<16 x i8> %74, i32 16) %80 = fmul float %79, %23 %81 = fadd float %80, %72 %82 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %83 = load <16 x i8>, <16 x i8> addrspace(2)* %82, align 16, !invariant.load !0 %84 = call float @llvm.SI.load.const(<16 x i8> %83, i32 20) %85 = fmul float %84, %23 %86 = fadd float %85, %76 %87 = call float @llvm.SI.load.const(<16 x i8> %83, i32 24) %88 = fmul float %87, %23 %89 = fadd float %88, %78 %90 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %91 = load <16 x i8>, <16 x i8> addrspace(2)* %90, align 16, !invariant.load !0 %92 = call float @llvm.SI.load.const(<16 x i8> %91, i32 32) %93 = fmul float %92, %24 %94 = fadd float %93, %81 %95 = call float @llvm.SI.load.const(<16 x i8> %91, i32 36) %96 = fmul float %95, %24 %97 = fadd float %96, %86 %98 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %99 = load <16 x i8>, <16 x i8> addrspace(2)* %98, align 16, !invariant.load !0 %100 = call float @llvm.SI.load.const(<16 x i8> %99, i32 40) %101 = fmul float %100, %24 %102 = fadd float %101, %89 %103 = call float @llvm.SI.load.const(<16 x i8> %99, i32 48) %104 = fmul float %103, %25 %105 = fadd float %104, %94 %106 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %107 = load <16 x i8>, <16 x i8> addrspace(2)* %106, align 16, !invariant.load !0 %108 = call float @llvm.SI.load.const(<16 x i8> %107, i32 52) %109 = fmul float %108, %25 %110 = fadd float %109, %97 %111 = call float @llvm.SI.load.const(<16 x i8> %107, i32 56) %112 = fmul float %111, %25 %113 = fadd float %112, %102 %114 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %115 = load <16 x i8>, <16 x i8> addrspace(2)* %114, align 16, !invariant.load !0 %116 = call float @llvm.SI.load.const(<16 x i8> %115, i32 64) %117 = call float @llvm.SI.load.const(<16 x i8> %115, i32 80) %118 = call float @llvm.SI.load.const(<16 x i8> %115, i32 96) %119 = call float @llvm.SI.load.const(<16 x i8> %115, i32 68) %120 = call float @llvm.SI.load.const(<16 x i8> %115, i32 84) %121 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %122 = load <16 x i8>, <16 x i8> addrspace(2)* %121, align 16, !invariant.load !0 %123 = call float @llvm.SI.load.const(<16 x i8> %122, i32 100) %124 = call float @llvm.SI.load.const(<16 x i8> %122, i32 72) %125 = call float @llvm.SI.load.const(<16 x i8> %122, i32 88) %126 = call float @llvm.SI.load.const(<16 x i8> %122, i32 104) %127 = fmul float %116, %29 %128 = fmul float %117, %29 %129 = fmul float %118, %29 %130 = fmul float %119, %30 %131 = fadd float %130, %127 %132 = fmul float %120, %30 %133 = fadd float %132, %128 %134 = fmul float %123, %30 %135 = fadd float %134, %129 %136 = fmul float %124, %31 %137 = fadd float %136, %131 %138 = fmul float %125, %31 %139 = fadd float %138, %133 %140 = fmul float %126, %31 %141 = fadd float %140, %135 %142 = fmul float %137, %137 %143 = fmul float %139, %139 %144 = fadd float %143, %142 %145 = fmul float %141, %141 %146 = fadd float %144, %145 %147 = call float @llvm.sqrt.f32(float %146) %148 = fdiv float 1.000000e+00, %147, !fpmath !1 %149 = fmul float %137, %148 %150 = fmul float %139, %148 %151 = fmul float %141, %148 %152 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %153 = load <16 x i8>, <16 x i8> addrspace(2)* %152, align 16, !invariant.load !0 %154 = call float @llvm.SI.load.const(<16 x i8> %153, i32 0) %155 = fmul float %154, %45 %156 = call float @llvm.SI.load.const(<16 x i8> %153, i32 4) %157 = fmul float %156, %45 %158 = call float @llvm.SI.load.const(<16 x i8> %153, i32 8) %159 = fmul float %158, %45 %160 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %161 = load <16 x i8>, <16 x i8> addrspace(2)* %160, align 16, !invariant.load !0 %162 = call float @llvm.SI.load.const(<16 x i8> %161, i32 16) %163 = fmul float %162, %46 %164 = fadd float %163, %155 %165 = call float @llvm.SI.load.const(<16 x i8> %161, i32 20) %166 = fmul float %165, %46 %167 = fadd float %166, %157 %168 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %169 = load <16 x i8>, <16 x i8> addrspace(2)* %168, align 16, !invariant.load !0 %170 = call float @llvm.SI.load.const(<16 x i8> %169, i32 24) %171 = fmul float %170, %46 %172 = fadd float %171, %159 %173 = call float @llvm.SI.load.const(<16 x i8> %169, i32 32) %174 = fmul float %173, %47 %175 = fadd float %174, %164 %176 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %177 = load <16 x i8>, <16 x i8> addrspace(2)* %176, align 16, !invariant.load !0 %178 = call float @llvm.SI.load.const(<16 x i8> %177, i32 36) %179 = fmul float %178, %47 %180 = fadd float %179, %167 %181 = call float @llvm.SI.load.const(<16 x i8> %177, i32 40) %182 = fmul float %181, %47 %183 = fadd float %182, %172 %184 = fmul float %175, %175 %185 = fmul float %180, %180 %186 = fadd float %185, %184 %187 = fmul float %183, %183 %188 = fadd float %186, %187 %189 = call float @llvm.sqrt.f32(float %188) %190 = fdiv float 1.000000e+00, %189, !fpmath !1 %191 = fmul float %175, %190 %192 = fmul float %180, %190 %193 = fmul float %183, %190 %194 = fmul float %151, %192 %195 = fmul float %149, %193 %196 = fmul float %150, %191 %197 = fmul float %150, %193 %198 = fsub float %197, %194 %199 = fmul float %151, %191 %200 = fsub float %199, %195 %201 = fmul float %149, %192 %202 = fsub float %201, %196 %203 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %204 = load <16 x i8>, <16 x i8> addrspace(2)* %203, align 16, !invariant.load !0 %205 = call float @llvm.SI.load.const(<16 x i8> %204, i32 140) %206 = fmul float %48, %205 %207 = fmul float %198, %206 %208 = fmul float %200, %206 %209 = fmul float %202, %206 %210 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %211 = load <16 x i8>, <16 x i8> addrspace(2)* %210, align 16, !invariant.load !0 %212 = call float @llvm.SI.load.const(<16 x i8> %211, i32 176) %213 = fmul float %212, %22 %214 = call float @llvm.SI.load.const(<16 x i8> %211, i32 180) %215 = fmul float %214, %22 %216 = call float @llvm.SI.load.const(<16 x i8> %211, i32 184) %217 = fmul float %216, %22 %218 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %219 = load <16 x i8>, <16 x i8> addrspace(2)* %218, align 16, !invariant.load !0 %220 = call float @llvm.SI.load.const(<16 x i8> %219, i32 188) %221 = fmul float %220, %22 %222 = call float @llvm.SI.load.const(<16 x i8> %219, i32 192) %223 = fmul float %222, %23 %224 = fadd float %223, %213 %225 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %226 = load <16 x i8>, <16 x i8> addrspace(2)* %225, align 16, !invariant.load !0 %227 = call float @llvm.SI.load.const(<16 x i8> %226, i32 196) %228 = fmul float %227, %23 %229 = fadd float %228, %215 %230 = call float @llvm.SI.load.const(<16 x i8> %226, i32 200) %231 = fmul float %230, %23 %232 = fadd float %231, %217 %233 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %234 = load <16 x i8>, <16 x i8> addrspace(2)* %233, align 16, !invariant.load !0 %235 = call float @llvm.SI.load.const(<16 x i8> %234, i32 204) %236 = fmul float %235, %23 %237 = fadd float %236, %221 %238 = call float @llvm.SI.load.const(<16 x i8> %234, i32 208) %239 = fmul float %238, %24 %240 = fadd float %239, %224 %241 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %242 = load <16 x i8>, <16 x i8> addrspace(2)* %241, align 16, !invariant.load !0 %243 = call float @llvm.SI.load.const(<16 x i8> %242, i32 212) %244 = fmul float %243, %24 %245 = fadd float %244, %229 %246 = call float @llvm.SI.load.const(<16 x i8> %242, i32 216) %247 = fmul float %246, %24 %248 = fadd float %247, %232 %249 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %250 = load <16 x i8>, <16 x i8> addrspace(2)* %249, align 16, !invariant.load !0 %251 = call float @llvm.SI.load.const(<16 x i8> %250, i32 220) %252 = fmul float %251, %24 %253 = fadd float %252, %237 %254 = call float @llvm.SI.load.const(<16 x i8> %250, i32 224) %255 = fmul float %254, %25 %256 = fadd float %255, %240 %257 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %258 = load <16 x i8>, <16 x i8> addrspace(2)* %257, align 16, !invariant.load !0 %259 = call float @llvm.SI.load.const(<16 x i8> %258, i32 228) %260 = fmul float %259, %25 %261 = fadd float %260, %245 %262 = call float @llvm.SI.load.const(<16 x i8> %258, i32 232) %263 = fmul float %262, %25 %264 = fadd float %263, %248 %265 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %266 = load <16 x i8>, <16 x i8> addrspace(2)* %265, align 16, !invariant.load !0 %267 = call float @llvm.SI.load.const(<16 x i8> %266, i32 236) %268 = fmul float %267, %25 %269 = fadd float %268, %253 %270 = bitcast i32 %12 to float %271 = insertvalue <{ float, float, float }> undef, float %270, 2 call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 32, i32 0, float %54, float %60, float %64, float %70) call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 33, i32 0, float %191, float %207, float %149, float %105) call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 34, i32 0, float %192, float %208, float %150, float %110) call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 35, i32 0, float %193, float %209, float %151, float %113) call void @llvm.SI.export(i32 15, i32 0, i32 1, i32 12, i32 0, float %256, float %261, float %264, float %269) ret <{ float, float, float }> %271 } ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.vs.load.input(<16 x i8>, i32, i32) #0 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #0 ; Function Attrs: nounwind readnone declare float @llvm.sqrt.f32(float) #0 ; Function Attrs: nounwind declare void @llvm.SI.export(i32, i32, i32, i32, i32, float, float, float, float) #1 attributes #0 = { nounwind readnone } attributes #1 = { nounwind } !0 = !{} !1 = !{float 2.500000e+00} FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL IN[1], GENERIC[1], PERSPECTIVE DCL IN[2], GENERIC[2], PERSPECTIVE DCL IN[3], GENERIC[3], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL SAMP[2] DCL SAMP[3] DCL SAMP[4] DCL SAMP[5] DCL SAMP[6] DCL SAMP[7] DCL SVIEW[0], CUBE, FLOAT DCL SVIEW[1], CUBE, FLOAT DCL SVIEW[2], CUBE, FLOAT DCL SVIEW[3], 2D, FLOAT DCL SVIEW[4], 2D, FLOAT DCL SVIEW[5], 2D, FLOAT DCL SVIEW[6], 2D, FLOAT DCL SVIEW[7], 2D, FLOAT DCL CONST[0..9] DCL CONST[12] DCL CONST[14..23] DCL CONST[29..30] DCL TEMP[0..17], LOCAL IMM[0] FLT32 { 0.0000, 2.0000, 1.0000, 0.5000} IMM[1] FLT32 { -1.0000, 0.0000, 6.0000, 0.0100} IMM[2] FLT32 { 16.0000, 1.2500, 3.0000, 0.0001} IMM[3] FLT32 { 64.0000, 0.3330, 1.4427, 4.0000} IMM[4] FLT32 { 1.2000, 1.7000, 0.0000, 0.0000} IMM[5] INT32 {1, 0, 0, 0} 0: MOV TEMP[0].x, IN[1].wwww 1: MOV TEMP[0].y, IN[2].wwww 2: MOV TEMP[0].z, IN[3].wwww 3: ADD TEMP[1].xyz, CONST[0].xyzz, -TEMP[0].xyzz 4: DP3 TEMP[2].x, TEMP[1].xyzz, TEMP[1].xyzz 5: RSQ TEMP[2].x, TEMP[2].xxxx 6: MUL TEMP[1].xyz, TEMP[1].xyzz, TEMP[2].xxxx 7: MUL TEMP[2].xyz, IN[1].xyzz, TEMP[1].xxxx 8: MAD TEMP[2].xyz, IN[2].xyzz, TEMP[1].yyyy, TEMP[2].xyzz 9: MAD TEMP[2].xyz, IN[3].xyzz, TEMP[1].zzzz, TEMP[2].xyzz 10: MOV TEMP[3].xy, IN[0].zwww 11: TEX TEMP[3], TEMP[3], SAMP[4], 2D 12: MOV TEMP[4].xy, IN[0].xyyy 13: TEX TEMP[4], TEMP[4], SAMP[7], 2D 14: MOV TEMP[5].xy, IN[0].zwww 15: TEX TEMP[5], TEMP[5], SAMP[5], 2D 16: MOV TEMP[6].xy, IN[0].xyyy 17: TEX TEMP[6], TEMP[6], SAMP[6], 2D 18: MOV TEMP[7].xy, IN[0].zwww 19: TEX TEMP[7], TEMP[7], SAMP[3], 2D 20: LRP TEMP[8].xyz, TEMP[4].wwww, TEMP[4].xyzz, TEMP[3].xyzz 21: MUL TEMP[8].xyz, TEMP[8].xyzz, CONST[29].xyzz 22: MUL TEMP[8].xyz, TEMP[8].xyzz, IMM[0].yyyy 23: MUL TEMP[9].xyz, TEMP[8].xyzz, CONST[18].xyzz 24: MUL TEMP[9].xyz, TEMP[9].xyzz, IMM[0].yyyy 25: ADD TEMP[10].xyz, IMM[0].zzzz, -TEMP[8].xyzz 26: MUL TEMP[10].xyz, IMM[0].yyyy, TEMP[10].xyzz 27: ADD TEMP[11].xyz, IMM[0].zzzz, -CONST[18].xyzz 28: MUL TEMP[10].xyz, TEMP[10].xyzz, TEMP[11].xyzz 29: ADD TEMP[10].xyz, IMM[0].zzzz, -TEMP[10].xyzz 30: FSGE TEMP[11].x, TEMP[8].xxxx, IMM[0].wwww 31: AND TEMP[11].x, TEMP[11].xxxx, IMM[0].zzzz 32: LRP TEMP[9].xyz, TEMP[11].xxxx, TEMP[10].xyzz, TEMP[9].xyzz 33: MUL TEMP[10].x, TEMP[6].xxxx, CONST[18].wwww 34: LRP TEMP[8].xyz, TEMP[10].xxxx, TEMP[9].xyzz, TEMP[8].xyzz 35: MUL TEMP[9].xyz, TEMP[8].xyzz, CONST[19].xyzz 36: MUL TEMP[9].xyz, TEMP[9].xyzz, IMM[0].yyyy 37: ADD TEMP[10].xyz, IMM[0].zzzz, -TEMP[8].xyzz 38: MUL TEMP[10].xyz, IMM[0].yyyy, TEMP[10].xyzz 39: ADD TEMP[11].xyz, IMM[0].zzzz, -CONST[19].xyzz 40: MUL TEMP[10].xyz, TEMP[10].xyzz, TEMP[11].xyzz 41: ADD TEMP[10].xyz, IMM[0].zzzz, -TEMP[10].xyzz 42: FSGE TEMP[11].x, TEMP[8].xxxx, IMM[0].wwww 43: AND TEMP[11].x, TEMP[11].xxxx, IMM[0].zzzz 44: LRP TEMP[9].xyz, TEMP[11].xxxx, TEMP[10].xyzz, TEMP[9].xyzz 45: MUL TEMP[10].x, TEMP[6].yyyy, CONST[19].wwww 46: LRP TEMP[8].xyz, TEMP[10].xxxx, TEMP[9].xyzz, TEMP[8].xyzz 47: MUL TEMP[9].xyz, TEMP[8].xyzz, CONST[20].xyzz 48: MUL TEMP[9].xyz, TEMP[9].xyzz, IMM[0].yyyy 49: ADD TEMP[10].xyz, IMM[0].zzzz, -TEMP[8].xyzz 50: MUL TEMP[10].xyz, IMM[0].yyyy, TEMP[10].xyzz 51: ADD TEMP[11].xyz, IMM[0].zzzz, -CONST[20].xyzz 52: MUL TEMP[10].xyz, TEMP[10].xyzz, TEMP[11].xyzz 53: ADD TEMP[10].xyz, IMM[0].zzzz, -TEMP[10].xyzz 54: FSGE TEMP[11].x, TEMP[8].xxxx, IMM[0].wwww 55: AND TEMP[11].x, TEMP[11].xxxx, IMM[0].zzzz 56: LRP TEMP[9].xyz, TEMP[11].xxxx, TEMP[10].xyzz, TEMP[9].xyzz 57: MUL TEMP[10].x, TEMP[6].zzzz, CONST[20].wwww 58: LRP TEMP[8].xyz, TEMP[10].xxxx, TEMP[9].xyzz, TEMP[8].xyzz 59: MAD TEMP[9].xyz, TEMP[5].xyzz, IMM[0].yyyy, IMM[1].xxxx 60: DP3 TEMP[10].x, TEMP[9].xyzz, TEMP[9].xyzz 61: RSQ TEMP[10].x, TEMP[10].xxxx 62: MUL TEMP[9].xyz, TEMP[9].xyzz, TEMP[10].xxxx 63: ADD TEMP[4].x, IMM[0].zzzz, -TEMP[4].wwww 64: MUL TEMP[4].x, TEMP[5].wwww, TEMP[4].xxxx 65: MOV_SAT TEMP[4].x, TEMP[4].xxxx 66: MAD TEMP[4].x, TEMP[2].zzzz, IMM[1].yyyy, TEMP[4].xxxx 67: DP3 TEMP[5].x, TEMP[2].xyzz, TEMP[2].xyzz 68: RSQ TEMP[5].x, TEMP[5].xxxx 69: MUL TEMP[5].xyz, TEMP[2].xyzz, TEMP[5].xxxx 70: DP3 TEMP[10].x, IN[1].xyzz, TEMP[9].xyzz 71: DP3 TEMP[11].x, IN[2].xyzz, TEMP[9].xyzz 72: MOV TEMP[10].y, TEMP[11].xxxx 73: DP3 TEMP[11].x, IN[3].xyzz, TEMP[9].xyzz 74: MOV TEMP[10].z, TEMP[11].xxxx 75: DP3 TEMP[11].x, IN[1].xyzz, TEMP[5].xyzz 76: DP3 TEMP[12].x, IN[2].xyzz, TEMP[5].xyzz 77: MOV TEMP[11].y, TEMP[12].xxxx 78: DP3 TEMP[5].x, IN[3].xyzz, TEMP[5].xyzz 79: MOV TEMP[11].z, TEMP[5].xxxx 80: MOV TEMP[12].xyz, -TEMP[11].xyzx 81: DP3 TEMP[13].x, TEMP[10].xyzz, TEMP[12].xyzz 82: MUL TEMP[13].xyz, TEMP[13].xxxx, TEMP[10].xyzz 83: MUL TEMP[13].xyz, IMM[0].yyyy, TEMP[13].xyzz 84: ADD TEMP[12].xyz, TEMP[12].xyzz, -TEMP[13].xyzz 85: ADD TEMP[13].x, IMM[0].zzzz, -TEMP[7].yyyy 86: MUL TEMP[13].x, TEMP[13].xxxx, IMM[1].zzzz 87: MAX TEMP[14].x, TEMP[8].yyyy, TEMP[8].zzzz 88: MAX TEMP[14].x, TEMP[8].xxxx, TEMP[14].xxxx 89: MOV TEMP[15].xyz, IMM[0].zzzz 90: FSLT TEMP[16].x, IMM[1].wwww, TEMP[14].xxxx 91: UIF TEMP[16].xxxx :0 92: RCP TEMP[14].xyz, TEMP[14].xxxx 93: MUL TEMP[14].xyz, TEMP[8].xyzz, TEMP[14].xyzz 94: MOV_SAT TEMP[15].xyz, TEMP[14].xyzz 95: ENDIF 96: LRP TEMP[14].xyz, TEMP[7].xxxx, TEMP[15].xyzz, CONST[3].xyzz 97: MUL TEMP[15].x, TEMP[7].yyyy, TEMP[7].yyyy 98: MUL TEMP[11].x, TEMP[15].xxxx, IMM[2].xxxx 99: MOV TEMP[12].xyz, TEMP[12].xyzz 100: MOV TEMP[12].w, TEMP[13].xxxx 101: TXB TEMP[12], TEMP[12], SAMP[1], CUBE 102: MUL TEMP[12], TEMP[12], CONST[9] 103: POW TEMP[13].x, TEMP[8].xxxx, IMM[0].wwww 104: POW TEMP[13].y, TEMP[8].yyyy, IMM[0].wwww 105: POW TEMP[13].z, TEMP[8].zzzz, IMM[0].wwww 106: LRP TEMP[13].xyz, TEMP[7].xxxx, TEMP[13].xyzz, CONST[3].xyzz 107: MUL TEMP[12].xyz, TEMP[12].xyzz, TEMP[13].xyzz 108: DP3 TEMP[13].x, TEMP[10].xyzz, TEMP[10].xyzz 109: RSQ TEMP[13].x, TEMP[13].xxxx 110: MUL TEMP[10].y, TEMP[10].xyzz, TEMP[13].xxxx 111: MOV TEMP[13], CONST[5] 112: FSLT TEMP[15].x, IMM[0].xxxx, TEMP[10].yyyy 113: UIF TEMP[15].xxxx :0 114: MOV_SAT TEMP[15].x, TEMP[10].yyyy 115: MUL TEMP[15].x, TEMP[15].xxxx, IMM[2].yyyy 116: MOV_SAT TEMP[15].x, TEMP[15].xxxx 117: MUL TEMP[16].x, IMM[0].yyyy, TEMP[15].xxxx 118: ADD TEMP[16].x, IMM[2].zzzz, -TEMP[16].xxxx 119: MUL TEMP[16].x, TEMP[15].xxxx, TEMP[16].xxxx 120: MUL TEMP[15].x, TEMP[15].xxxx, TEMP[16].xxxx 121: LRP TEMP[13], TEMP[15].xxxx, CONST[4], CONST[5] 122: ELSE :0 123: MOV_SAT TEMP[10].x, -TEMP[10].yyyy 124: MUL TEMP[10].x, TEMP[10].xxxx, IMM[2].yyyy 125: MOV_SAT TEMP[10].x, TEMP[10].xxxx 126: MUL TEMP[15].x, IMM[0].yyyy, TEMP[10].xxxx 127: ADD TEMP[15].x, IMM[2].zzzz, -TEMP[15].xxxx 128: MUL TEMP[15].x, TEMP[10].xxxx, TEMP[15].xxxx 129: MUL TEMP[10].x, TEMP[10].xxxx, TEMP[15].xxxx 130: LRP TEMP[13], TEMP[10].xxxx, CONST[6], TEMP[13] 131: ENDIF 132: MUL TEMP[10], TEMP[13], IMM[0].yyyy 133: MUL TEMP[10], TEMP[10], CONST[7].xxxx 134: MOV TEMP[13].w, TEMP[10].wwww 135: MUL TEMP[13].xyz, TEMP[10].xyzz, TEMP[8].xyzz 136: LRP TEMP[10].xyz, TEMP[7].zzzz, TEMP[12], TEMP[13] 137: MUL TEMP[5].xyz, TEMP[10].xyzz, TEMP[6].wwww 138: MUL TEMP[7].x, TEMP[7].wwww, TEMP[6].wwww 139: MAD TEMP[10].x, TEMP[11].xxxx, IMM[0].wwww, IMM[0].yyyy 140: DP3 TEMP[12].x, TEMP[2].xyzz, TEMP[2].xyzz 141: RSQ TEMP[12].x, TEMP[12].xxxx 142: MUL TEMP[12].xyz, TEMP[2].xyzz, TEMP[12].xxxx 143: DP3 TEMP[12].x, TEMP[12].xyzz, TEMP[9].xyzz 144: ADD TEMP[12].x, IMM[0].zzzz, -TEMP[12].xxxx 145: MAX TEMP[12].x, IMM[1].yyyy, TEMP[12].xxxx 146: POW TEMP[12].x, TEMP[12].xxxx, CONST[23].xxxx 147: MAD TEMP[12], CONST[21], TEMP[12].xxxx, CONST[22] 148: ADD TEMP[6].x, IMM[0].zzzz, -TEMP[6].wwww 149: MOV_SAT TEMP[6].x, TEMP[6].xxxx 150: MUL TEMP[6].xyz, TEMP[12], TEMP[6].xxxx 151: ADD TEMP[2].xyz, TEMP[5].xyzz, TEMP[6].xyzz 152: FSLT TEMP[5].x, TEMP[3].wwww, CONST[30].xxxx 153: AND TEMP[5].x, TEMP[5].xxxx, IMM[0].zzzz 154: KILL_IF -TEMP[5].xxxx 155: DP3 TEMP[5].x, IN[1].xyzz, TEMP[9].xyzz 156: DP3 TEMP[6].x, IN[2].xyzz, TEMP[9].xyzz 157: MOV TEMP[5].y, TEMP[6].xxxx 158: DP3 TEMP[6].x, IN[3].xyzz, TEMP[9].xyzz 159: MOV TEMP[5].z, TEMP[6].xxxx 160: DP3 TEMP[6].x, TEMP[5].xyzz, TEMP[5].xyzz 161: RSQ TEMP[6].x, TEMP[6].xxxx 162: MUL TEMP[5].xyz, TEMP[5].xyzz, TEMP[6].xxxx 163: DP3 TEMP[6].x, CONST[1].xyzz, CONST[1].xyzz 164: RSQ TEMP[6].x, TEMP[6].xxxx 165: MUL TEMP[6].xyz, CONST[1].xyzz, TEMP[6].xxxx 166: DP3 TEMP[9].x, TEMP[1].xyzz, TEMP[1].xyzz 167: RSQ TEMP[9].x, TEMP[9].xxxx 168: MUL TEMP[9].xyz, TEMP[1].xyzz, TEMP[9].xxxx 169: DP3 TEMP[12].x, TEMP[5].xyzz, TEMP[6].xyzz 170: MAX TEMP[13].x, IMM[0].xxxx, TEMP[12].xxxx 171: MOV TEMP[15].x, IMM[0].xxxx 172: FSLT TEMP[16].x, IMM[0].xxxx, TEMP[4].xxxx 173: FSLT TEMP[17].x, IMM[0].xxxx, TEMP[11].xxxx 174: AND TEMP[16].x, TEMP[16].xxxx, TEMP[17].xxxx 175: UIF TEMP[16].xxxx :0 176: MOV TEMP[6].xyz, -TEMP[6].xyzx 177: DP3 TEMP[16].x, TEMP[5].xyzz, TEMP[6].xyzz 178: MUL TEMP[16].xyz, TEMP[16].xxxx, TEMP[5].xyzz 179: MUL TEMP[16].xyz, IMM[0].yyyy, TEMP[16].xyzz 180: ADD TEMP[6].xyz, TEMP[6].xyzz, -TEMP[16].xyzz 181: DP3 TEMP[6].x, TEMP[9].xyzz, TEMP[6].xyzz 182: MAX TEMP[6].x, IMM[1].yyyy, TEMP[6].xxxx 183: MUL TEMP[16].x, TEMP[13].xxxx, IMM[0].yyyy 184: SQRT TEMP[16].x, TEMP[16].xxxx 185: MOV_SAT TEMP[16].x, TEMP[16].xxxx 186: MUL TEMP[6].x, TEMP[6].xxxx, TEMP[16].xxxx 187: ADD TEMP[11].x, TEMP[11].xxxx, IMM[1].wwww 188: MUL TEMP[11].x, TEMP[11].xxxx, IMM[3].xxxx 189: MAX TEMP[11].x, IMM[2].wwww, TEMP[11].xxxx 190: POW TEMP[6].x, TEMP[6].xxxx, TEMP[11].xxxx 191: MUL TEMP[15].x, TEMP[6].xxxx, TEMP[4].xxxx 192: ENDIF 193: ADD TEMP[4].x, IMM[3].yyyy, -TEMP[12].xxxx 194: MOV_SAT TEMP[4].x, TEMP[4].xxxx 195: DP3 TEMP[5].x, TEMP[5].xyzz, TEMP[9].xyzz 196: MOV_SAT TEMP[5].x, TEMP[5].xxxx 197: ADD TEMP[5].x, IMM[0].zzzz, -TEMP[5].xxxx 198: MOV_SAT TEMP[5].x, TEMP[5].xxxx 199: MAX TEMP[6].x, IMM[2].wwww, TEMP[10].xxxx 200: POW TEMP[5].x, TEMP[5].xxxx, TEMP[6].xxxx 201: MUL TEMP[5].x, TEMP[5].xxxx, TEMP[7].xxxx 202: MUL TEMP[4].x, TEMP[4].xxxx, TEMP[4].xxxx 203: MUL TEMP[4].x, TEMP[5].xxxx, TEMP[4].xxxx 204: MUL TEMP[5].xyz, CONST[2].xyzz, TEMP[14].xyzz 205: MUL TEMP[6].xyz, TEMP[8].xyzz, CONST[2].xyzz 206: MUL TEMP[6].xyz, TEMP[6].xyzz, TEMP[13].xxxx 207: MAD TEMP[5].xyz, TEMP[5].xyzz, TEMP[15].xxxx, TEMP[6].xyzz 208: MAD TEMP[4].xyz, TEMP[4].xxxx, CONST[2].xyzz, TEMP[5].xyzz 209: ADD TEMP[1].xyz, TEMP[4].xyzz, TEMP[2].xyzz 210: ADD TEMP[2].xyz, TEMP[0].xyzz, -CONST[0].xyzz 211: DP3 TEMP[4].x, TEMP[2].xyzz, TEMP[2].xyzz 212: SQRT TEMP[4].x, TEMP[4].xxxx 213: DP3 TEMP[5].x, TEMP[2].xyzz, TEMP[2].xyzz 214: RSQ TEMP[5].x, TEMP[5].xxxx 215: MUL TEMP[2].xyz, TEMP[2].xyzz, TEMP[5].xxxx 216: MOV TEMP[5].x, -CONST[17].xxxx 217: MUL TEMP[6].x, TEMP[5].xxxx, IMM[3].zzzz 218: EX2 TEMP[6].x, TEMP[6].xxxx 219: ADD TEMP[6].x, IMM[0].zzzz, -TEMP[6].xxxx 220: ADD TEMP[7].x, CONST[16].wwww, -CONST[16].zzzz 221: ADD TEMP[7].x, TEMP[4].xxxx, -TEMP[7].xxxx 222: RCP TEMP[8].x, CONST[16].zzzz 223: MUL TEMP[7].x, TEMP[7].xxxx, TEMP[8].xxxx 224: MOV_SAT TEMP[7].x, TEMP[7].xxxx 225: MUL TEMP[7].x, TEMP[7].xxxx, TEMP[5].xxxx 226: MUL TEMP[7].x, TEMP[7].xxxx, IMM[3].zzzz 227: EX2 TEMP[7].x, TEMP[7].xxxx 228: ADD TEMP[7].x, IMM[0].zzzz, -TEMP[7].xxxx 229: RCP TEMP[8].x, TEMP[6].xxxx 230: MUL TEMP[7].x, TEMP[7].xxxx, TEMP[8].xxxx 231: MOV_SAT TEMP[7].x, TEMP[7].xxxx 232: ADD TEMP[8].x, TEMP[4].xxxx, -CONST[16].xxxx 233: RCP TEMP[9].x, CONST[16].yyyy 234: MUL TEMP[8].x, TEMP[8].xxxx, TEMP[9].xxxx 235: MOV_SAT TEMP[8].x, TEMP[8].xxxx 236: MUL TEMP[5].x, TEMP[8].xxxx, TEMP[5].xxxx 237: MUL TEMP[5].x, TEMP[5].xxxx, IMM[3].zzzz 238: EX2 TEMP[5].x, TEMP[5].xxxx 239: ADD TEMP[5].x, IMM[0].zzzz, -TEMP[5].xxxx 240: RCP TEMP[6].x, TEMP[6].xxxx 241: MUL TEMP[5].x, TEMP[5].xxxx, TEMP[6].xxxx 242: MOV_SAT TEMP[5].x, TEMP[5].xxxx 243: MOV TEMP[6].xyz, TEMP[2].xyzz 244: TEX TEMP[6], TEMP[6], SAMP[2], CUBE 245: MUL TEMP[6], TEMP[6], CONST[12] 246: DP3 TEMP[8].x, TEMP[2].xyzz, TEMP[2].xyzz 247: RSQ TEMP[8].x, TEMP[8].xxxx 248: MUL TEMP[8].y, TEMP[2].xyzz, TEMP[8].xxxx 249: MOV TEMP[9], CONST[5] 250: FSLT TEMP[10].x, IMM[0].xxxx, TEMP[8].yyyy 251: UIF TEMP[10].xxxx :0 252: MOV_SAT TEMP[10].x, TEMP[8].yyyy 253: MUL TEMP[10].x, TEMP[10].xxxx, IMM[2].yyyy 254: MOV_SAT TEMP[10].x, TEMP[10].xxxx 255: MUL TEMP[11].x, IMM[0].yyyy, TEMP[10].xxxx 256: ADD TEMP[11].x, IMM[2].zzzz, -TEMP[11].xxxx 257: MUL TEMP[11].x, TEMP[10].xxxx, TEMP[11].xxxx 258: MUL TEMP[10].x, TEMP[10].xxxx, TEMP[11].xxxx 259: LRP TEMP[9], TEMP[10].xxxx, CONST[4], CONST[5] 260: ELSE :0 261: MOV_SAT TEMP[8].x, -TEMP[8].yyyy 262: MUL TEMP[8].x, TEMP[8].xxxx, IMM[2].yyyy 263: MOV_SAT TEMP[8].x, TEMP[8].xxxx 264: MUL TEMP[10].x, IMM[0].yyyy, TEMP[8].xxxx 265: ADD TEMP[10].x, IMM[2].zzzz, -TEMP[10].xxxx 266: MUL TEMP[10].x, TEMP[8].xxxx, TEMP[10].xxxx 267: MUL TEMP[8].x, TEMP[8].xxxx, TEMP[10].xxxx 268: LRP TEMP[9], TEMP[8].xxxx, CONST[6], TEMP[9] 269: ENDIF 270: DP3 TEMP[8].x, TEMP[2].xyzz, TEMP[2].xyzz 271: RSQ TEMP[8].x, TEMP[8].xxxx 272: MUL TEMP[8].xyz, TEMP[2].xyzz, TEMP[8].xxxx 273: MUL TEMP[8].xyz, TEMP[8].xyzz, CONST[16].wwww 274: MUL TEMP[8].xyz, TEMP[8].xyzz, IMM[3].wwww 275: MOV TEMP[10].xz, TEMP[8].xxzx 276: ADD TEMP[8].x, TEMP[8].yyyy, CONST[0].yyyy 277: MOV TEMP[10].y, TEMP[8].xxxx 278: MOV TEMP[8].xyz, TEMP[10].xyzz 279: TEX TEMP[8], TEMP[8], SAMP[0], CUBE 280: MUL TEMP[8].xyz, TEMP[8], CONST[8] 281: MUL TEMP[8].xyz, TEMP[8].xyzz, IMM[0].yyyy 282: LRP TEMP[7].xyz, TEMP[7].xxxx, TEMP[8].xyzz, CONST[15].xyzz 283: MUL TEMP[6].xyz, TEMP[6].xyzz, IMM[0].wwww 284: MUL TEMP[8], TEMP[9], CONST[8] 285: MUL TEMP[9].x, IMM[0].yyyy, CONST[7].xxxx 286: MUL TEMP[8].xyz, TEMP[8], TEMP[9].xxxx 287: MAD TEMP[6].xyz, TEMP[8].xyzz, IMM[0].wwww, TEMP[6].xyzz 288: MUL TEMP[8].x, TEMP[4].xxxx, CONST[17].zzzz 289: MUL TEMP[8].x, TEMP[8].xxxx, IMM[4].yyyy 290: MUL TEMP[8].x, -TEMP[8].xxxx, IMM[3].zzzz 291: EX2 TEMP[8].x, TEMP[8].xxxx 292: ADD TEMP[8].x, IMM[4].xxxx, -TEMP[8].xxxx 293: MUL TEMP[8].x, TEMP[6].wwww, TEMP[8].xxxx 294: MUL TEMP[8].x, TEMP[8].xxxx, IMM[2].yyyy 295: MOV_SAT TEMP[8].x, TEMP[8].xxxx 296: LRP TEMP[2].xyz, TEMP[8].xxxx, TEMP[6].xyzz, TEMP[7].xyzz 297: MAX TEMP[5].x, TEMP[5].xxxx, TEMP[8].xxxx 298: MOV TEMP[2].w, TEMP[5].xxxx 299: FSLT TEMP[6].x, IMM[0].xxxx, CONST[14].yyyy 300: UIF TEMP[6].xxxx :0 301: MOV TEMP[6].xyz, IMM[0].xzxx 302: MOV TEMP[6].w, CONST[14].xxxx 303: MOV TEMP[7].w, IMM[0].zzzz 304: MOV TEMP[7].xyz, CONST[0].xyzx 305: DP4 TEMP[7].x, TEMP[6], TEMP[7] 306: FSGE TEMP[8].x, IMM[0].xxxx, TEMP[7].xxxx 307: UIF TEMP[8].xxxx :0 308: MOV TEMP[8].x, IMM[5].xxxx 309: ELSE :0 310: MOV TEMP[8].x, IMM[5].yyyy 311: ENDIF 312: I2F TEMP[8].x, TEMP[8].xxxx 313: MOV TEMP[9].w, IMM[0].zzzz 314: MOV TEMP[9].xyz, TEMP[0].xyzx 315: DP4 TEMP[9].x, TEMP[6], TEMP[9] 316: MOV TEMP[10].w, IMM[0].xxxx 317: ADD TEMP[10].xyz, CONST[0].xyzz, -TEMP[0].xyzz 318: MUL TEMP[11].x, IMM[0].yyyy, TEMP[8].xxxx 319: ADD TEMP[11].x, IMM[0].zzzz, -TEMP[11].xxxx 320: MUL TEMP[11].x, TEMP[11].xxxx, TEMP[9].xxxx 321: MIN TEMP[11].x, IMM[0].xxxx, TEMP[11].xxxx 322: MUL TEMP[4].x, CONST[14].zzzz, TEMP[4].xxxx 323: ADD TEMP[7].x, TEMP[9].xxxx, TEMP[7].xxxx 324: MUL TEMP[9].x, TEMP[11].xxxx, TEMP[11].xxxx 325: DP4 TEMP[6].x, TEMP[6], TEMP[10] 326: ABS TEMP[6].x, TEMP[6].xxxx 327: RCP TEMP[6].x, TEMP[6].xxxx 328: MUL TEMP[6].x, TEMP[9].xxxx, TEMP[6].xxxx 329: MAD TEMP[6].x, TEMP[8].xxxx, TEMP[7].xxxx, -TEMP[6].xxxx 330: MUL TEMP[4].x, -TEMP[4].xxxx, TEMP[6].xxxx 331: MUL TEMP[4].x, -TEMP[4].xxxx, CONST[14].yyyy 332: MUL TEMP[4].x, TEMP[4].xxxx, IMM[3].zzzz 333: EX2 TEMP[4].x, TEMP[4].xxxx 334: MOV_SAT TEMP[4].x, TEMP[4].xxxx 335: ADD TEMP[4].x, IMM[0].zzzz, -TEMP[4].xxxx 336: MAX TEMP[4].x, TEMP[5].xxxx, TEMP[4].xxxx 337: MOV TEMP[2].w, TEMP[4].xxxx 338: ENDIF 339: MOV_SAT TEMP[4].x, TEMP[2].wwww 340: LRP TEMP[0].xyz, TEMP[4].xxxx, TEMP[2].xyzz, TEMP[1].xyzz 341: MOV_SAT TEMP[1].x, TEMP[2].wwww 342: ADD TEMP[1].x, IMM[0].zzzz, -TEMP[1].xxxx 343: MUL TEMP[1].x, TEMP[3].wwww, TEMP[1].xxxx 344: MOV TEMP[0].w, TEMP[1].xxxx 345: MOV OUT[0], TEMP[0] 346: END radeonsi: Compiling shader 31 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_ps <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), float inreg, i32 inreg, <2 x i32>, <2 x i32>, <2 x i32>, <3 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, float, float, float, float, float, i32, i32, float, i32) #0 { main_body: %23 = call float @llvm.SI.fs.interp(i32 3, i32 1, i32 %6, <2 x i32> %8) %24 = call float @llvm.SI.fs.interp(i32 3, i32 2, i32 %6, <2 x i32> %8) %25 = call float @llvm.SI.fs.interp(i32 3, i32 3, i32 %6, <2 x i32> %8) %26 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %27 = load <16 x i8>, <16 x i8> addrspace(2)* %26, align 16, !invariant.load !0 %28 = call float @llvm.SI.load.const(<16 x i8> %27, i32 0) %29 = fsub float %28, %23 %30 = call float @llvm.SI.load.const(<16 x i8> %27, i32 4) %31 = fsub float %30, %24 %32 = call float @llvm.SI.load.const(<16 x i8> %27, i32 8) %33 = fsub float %32, %25 %34 = fmul float %29, %29 %35 = fmul float %31, %31 %36 = fadd float %35, %34 %37 = fmul float %33, %33 %38 = fadd float %36, %37 %39 = call float @llvm.sqrt.f32(float %38) %40 = fdiv float 1.000000e+00, %39, !fpmath !1 %41 = fmul float %29, %40 %42 = fmul float %31, %40 %43 = fmul float %33, %40 %44 = call float @llvm.SI.fs.interp(i32 0, i32 1, i32 %6, <2 x i32> %8) %45 = fmul float %44, %41 %46 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %47 = fmul float %46, %41 %48 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %49 = fmul float %48, %41 %50 = call float @llvm.SI.fs.interp(i32 0, i32 2, i32 %6, <2 x i32> %8) %51 = fmul float %50, %42 %52 = fadd float %51, %45 %53 = call float @llvm.SI.fs.interp(i32 1, i32 2, i32 %6, <2 x i32> %8) %54 = fmul float %53, %42 %55 = fadd float %54, %47 %56 = call float @llvm.SI.fs.interp(i32 2, i32 2, i32 %6, <2 x i32> %8) %57 = fmul float %56, %42 %58 = fadd float %57, %49 %59 = call float @llvm.SI.fs.interp(i32 0, i32 3, i32 %6, <2 x i32> %8) %60 = fmul float %59, %43 %61 = fadd float %60, %52 %62 = call float @llvm.SI.fs.interp(i32 1, i32 3, i32 %6, <2 x i32> %8) %63 = fmul float %62, %43 %64 = fadd float %63, %55 %65 = call float @llvm.SI.fs.interp(i32 2, i32 3, i32 %6, <2 x i32> %8) %66 = fmul float %65, %43 %67 = fadd float %66, %58 %68 = call float @llvm.SI.fs.interp(i32 2, i32 0, i32 %6, <2 x i32> %8) %69 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %6, <2 x i32> %8) %70 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 8, !amdgpu.uniform !0 %71 = load <8 x i32>, <8 x i32> addrspace(2)* %70, align 32, !invariant.load !0 %72 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %73 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %72, i64 0, i64 19, !amdgpu.uniform !0 %74 = load <4 x i32>, <4 x i32> addrspace(2)* %73, align 16, !invariant.load !0 %75 = bitcast float %68 to i32 %76 = bitcast float %69 to i32 %77 = insertelement <2 x i32> undef, i32 %75, i32 0 %78 = insertelement <2 x i32> %77, i32 %76, i32 1 %79 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %78, <8 x i32> %71, <4 x i32> %74, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %80 = extractelement <4 x float> %79, i32 0 %81 = extractelement <4 x float> %79, i32 1 %82 = extractelement <4 x float> %79, i32 2 %83 = extractelement <4 x float> %79, i32 3 %84 = call float @llvm.SI.fs.interp(i32 0, i32 0, i32 %6, <2 x i32> %8) %85 = call float @llvm.SI.fs.interp(i32 1, i32 0, i32 %6, <2 x i32> %8) %86 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 14, !amdgpu.uniform !0 %87 = load <8 x i32>, <8 x i32> addrspace(2)* %86, align 32, !invariant.load !0 %88 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %89 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %88, i64 0, i64 31, !amdgpu.uniform !0 %90 = load <4 x i32>, <4 x i32> addrspace(2)* %89, align 16, !invariant.load !0 %91 = bitcast float %84 to i32 %92 = bitcast float %85 to i32 %93 = insertelement <2 x i32> undef, i32 %91, i32 0 %94 = insertelement <2 x i32> %93, i32 %92, i32 1 %95 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %94, <8 x i32> %87, <4 x i32> %90, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %96 = extractelement <4 x float> %95, i32 0 %97 = extractelement <4 x float> %95, i32 1 %98 = extractelement <4 x float> %95, i32 2 %99 = extractelement <4 x float> %95, i32 3 %100 = call float @llvm.SI.fs.interp(i32 2, i32 0, i32 %6, <2 x i32> %8) %101 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %6, <2 x i32> %8) %102 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 10, !amdgpu.uniform !0 %103 = load <8 x i32>, <8 x i32> addrspace(2)* %102, align 32, !invariant.load !0 %104 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %105 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %104, i64 0, i64 23, !amdgpu.uniform !0 %106 = load <4 x i32>, <4 x i32> addrspace(2)* %105, align 16, !invariant.load !0 %107 = bitcast float %100 to i32 %108 = bitcast float %101 to i32 %109 = insertelement <2 x i32> undef, i32 %107, i32 0 %110 = insertelement <2 x i32> %109, i32 %108, i32 1 %111 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %110, <8 x i32> %103, <4 x i32> %106, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %112 = extractelement <4 x float> %111, i32 0 %113 = extractelement <4 x float> %111, i32 1 %114 = extractelement <4 x float> %111, i32 2 %115 = extractelement <4 x float> %111, i32 3 %116 = call float @llvm.SI.fs.interp(i32 0, i32 0, i32 %6, <2 x i32> %8) %117 = call float @llvm.SI.fs.interp(i32 1, i32 0, i32 %6, <2 x i32> %8) %118 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 12, !amdgpu.uniform !0 %119 = load <8 x i32>, <8 x i32> addrspace(2)* %118, align 32, !invariant.load !0 %120 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %121 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %120, i64 0, i64 27, !amdgpu.uniform !0 %122 = load <4 x i32>, <4 x i32> addrspace(2)* %121, align 16, !invariant.load !0 %123 = bitcast float %116 to i32 %124 = bitcast float %117 to i32 %125 = insertelement <2 x i32> undef, i32 %123, i32 0 %126 = insertelement <2 x i32> %125, i32 %124, i32 1 %127 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %126, <8 x i32> %119, <4 x i32> %122, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %128 = extractelement <4 x float> %127, i32 0 %129 = extractelement <4 x float> %127, i32 1 %130 = extractelement <4 x float> %127, i32 2 %131 = extractelement <4 x float> %127, i32 3 %132 = call float @llvm.SI.fs.interp(i32 2, i32 0, i32 %6, <2 x i32> %8) %133 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %6, <2 x i32> %8) %134 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 6, !amdgpu.uniform !0 %135 = load <8 x i32>, <8 x i32> addrspace(2)* %134, align 32, !invariant.load !0 %136 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %137 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %136, i64 0, i64 15, !amdgpu.uniform !0 %138 = load <4 x i32>, <4 x i32> addrspace(2)* %137, align 16, !invariant.load !0 %139 = bitcast float %132 to i32 %140 = bitcast float %133 to i32 %141 = insertelement <2 x i32> undef, i32 %139, i32 0 %142 = insertelement <2 x i32> %141, i32 %140, i32 1 %143 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %142, <8 x i32> %135, <4 x i32> %138, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %144 = extractelement <4 x float> %143, i32 0 %145 = extractelement <4 x float> %143, i32 1 %146 = extractelement <4 x float> %143, i32 2 %147 = extractelement <4 x float> %143, i32 3 %148 = fsub float 1.000000e+00, %99 %149 = fmul float %96, %99 %150 = fmul float %80, %148 %151 = fadd float %149, %150 %152 = fsub float 1.000000e+00, %99 %153 = fmul float %97, %99 %154 = fmul float %81, %152 %155 = fadd float %153, %154 %156 = fsub float 1.000000e+00, %99 %157 = fmul float %98, %99 %158 = fmul float %82, %156 %159 = fadd float %157, %158 %160 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %161 = load <16 x i8>, <16 x i8> addrspace(2)* %160, align 16, !invariant.load !0 %162 = call float @llvm.SI.load.const(<16 x i8> %161, i32 464) %163 = fmul float %151, %162 %164 = call float @llvm.SI.load.const(<16 x i8> %161, i32 468) %165 = fmul float %155, %164 %166 = call float @llvm.SI.load.const(<16 x i8> %161, i32 472) %167 = fmul float %159, %166 %168 = fmul float %163, 2.000000e+00 %169 = fmul float %165, 2.000000e+00 %170 = fmul float %167, 2.000000e+00 %171 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %172 = load <16 x i8>, <16 x i8> addrspace(2)* %171, align 16, !invariant.load !0 %173 = call float @llvm.SI.load.const(<16 x i8> %172, i32 288) %174 = fmul float %168, %173 %175 = call float @llvm.SI.load.const(<16 x i8> %172, i32 292) %176 = fmul float %169, %175 %177 = call float @llvm.SI.load.const(<16 x i8> %172, i32 296) %178 = fmul float %170, %177 %179 = fmul float %174, 2.000000e+00 %180 = fmul float %176, 2.000000e+00 %181 = fmul float %178, 2.000000e+00 %182 = fsub float 1.000000e+00, %168 %183 = fsub float 1.000000e+00, %169 %184 = fsub float 1.000000e+00, %170 %185 = fmul float %182, 2.000000e+00 %186 = fmul float %183, 2.000000e+00 %187 = fmul float %184, 2.000000e+00 %188 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %189 = load <16 x i8>, <16 x i8> addrspace(2)* %188, align 16, !invariant.load !0 %190 = call float @llvm.SI.load.const(<16 x i8> %189, i32 288) %191 = fsub float 1.000000e+00, %190 %192 = call float @llvm.SI.load.const(<16 x i8> %189, i32 292) %193 = fsub float 1.000000e+00, %192 %194 = call float @llvm.SI.load.const(<16 x i8> %189, i32 296) %195 = fsub float 1.000000e+00, %194 %196 = fmul float %185, %191 %197 = fmul float %186, %193 %198 = fmul float %187, %195 %199 = fsub float 1.000000e+00, %196 %200 = fsub float 1.000000e+00, %197 %201 = fsub float 1.000000e+00, %198 %202 = fcmp oge float %168, 5.000000e-01 %203 = select i1 %202, float 1.000000e+00, float 0.000000e+00 %204 = fsub float 1.000000e+00, %203 %205 = fmul float %199, %203 %206 = fmul float %179, %204 %207 = fadd float %205, %206 %208 = fsub float 1.000000e+00, %203 %209 = fmul float %200, %203 %210 = fmul float %180, %208 %211 = fadd float %209, %210 %212 = fsub float 1.000000e+00, %203 %213 = fmul float %201, %203 %214 = fmul float %181, %212 %215 = fadd float %213, %214 %216 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %217 = load <16 x i8>, <16 x i8> addrspace(2)* %216, align 16, !invariant.load !0 %218 = call float @llvm.SI.load.const(<16 x i8> %217, i32 300) %219 = fmul float %128, %218 %220 = fsub float 1.000000e+00, %219 %221 = fmul float %207, %219 %222 = fmul float %168, %220 %223 = fadd float %221, %222 %224 = fsub float 1.000000e+00, %219 %225 = fmul float %211, %219 %226 = fmul float %169, %224 %227 = fadd float %225, %226 %228 = fsub float 1.000000e+00, %219 %229 = fmul float %215, %219 %230 = fmul float %170, %228 %231 = fadd float %229, %230 %232 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %233 = load <16 x i8>, <16 x i8> addrspace(2)* %232, align 16, !invariant.load !0 %234 = call float @llvm.SI.load.const(<16 x i8> %233, i32 304) %235 = fmul float %223, %234 %236 = call float @llvm.SI.load.const(<16 x i8> %233, i32 308) %237 = fmul float %227, %236 %238 = call float @llvm.SI.load.const(<16 x i8> %233, i32 312) %239 = fmul float %231, %238 %240 = fmul float %235, 2.000000e+00 %241 = fmul float %237, 2.000000e+00 %242 = fmul float %239, 2.000000e+00 %243 = fsub float 1.000000e+00, %223 %244 = fsub float 1.000000e+00, %227 %245 = fsub float 1.000000e+00, %231 %246 = fmul float %243, 2.000000e+00 %247 = fmul float %244, 2.000000e+00 %248 = fmul float %245, 2.000000e+00 %249 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %250 = load <16 x i8>, <16 x i8> addrspace(2)* %249, align 16, !invariant.load !0 %251 = call float @llvm.SI.load.const(<16 x i8> %250, i32 304) %252 = fsub float 1.000000e+00, %251 %253 = call float @llvm.SI.load.const(<16 x i8> %250, i32 308) %254 = fsub float 1.000000e+00, %253 %255 = call float @llvm.SI.load.const(<16 x i8> %250, i32 312) %256 = fsub float 1.000000e+00, %255 %257 = fmul float %246, %252 %258 = fmul float %247, %254 %259 = fmul float %248, %256 %260 = fsub float 1.000000e+00, %257 %261 = fsub float 1.000000e+00, %258 %262 = fsub float 1.000000e+00, %259 %263 = fcmp oge float %223, 5.000000e-01 %264 = select i1 %263, float 1.000000e+00, float 0.000000e+00 %265 = fsub float 1.000000e+00, %264 %266 = fmul float %260, %264 %267 = fmul float %240, %265 %268 = fadd float %266, %267 %269 = fsub float 1.000000e+00, %264 %270 = fmul float %261, %264 %271 = fmul float %241, %269 %272 = fadd float %270, %271 %273 = fsub float 1.000000e+00, %264 %274 = fmul float %262, %264 %275 = fmul float %242, %273 %276 = fadd float %274, %275 %277 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %278 = load <16 x i8>, <16 x i8> addrspace(2)* %277, align 16, !invariant.load !0 %279 = call float @llvm.SI.load.const(<16 x i8> %278, i32 316) %280 = fmul float %129, %279 %281 = fsub float 1.000000e+00, %280 %282 = fmul float %268, %280 %283 = fmul float %223, %281 %284 = fadd float %282, %283 %285 = fsub float 1.000000e+00, %280 %286 = fmul float %272, %280 %287 = fmul float %227, %285 %288 = fadd float %286, %287 %289 = fsub float 1.000000e+00, %280 %290 = fmul float %276, %280 %291 = fmul float %231, %289 %292 = fadd float %290, %291 %293 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %294 = load <16 x i8>, <16 x i8> addrspace(2)* %293, align 16, !invariant.load !0 %295 = call float @llvm.SI.load.const(<16 x i8> %294, i32 320) %296 = fmul float %284, %295 %297 = call float @llvm.SI.load.const(<16 x i8> %294, i32 324) %298 = fmul float %288, %297 %299 = call float @llvm.SI.load.const(<16 x i8> %294, i32 328) %300 = fmul float %292, %299 %301 = fmul float %296, 2.000000e+00 %302 = fmul float %298, 2.000000e+00 %303 = fmul float %300, 2.000000e+00 %304 = fsub float 1.000000e+00, %284 %305 = fsub float 1.000000e+00, %288 %306 = fsub float 1.000000e+00, %292 %307 = fmul float %304, 2.000000e+00 %308 = fmul float %305, 2.000000e+00 %309 = fmul float %306, 2.000000e+00 %310 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %311 = load <16 x i8>, <16 x i8> addrspace(2)* %310, align 16, !invariant.load !0 %312 = call float @llvm.SI.load.const(<16 x i8> %311, i32 320) %313 = fsub float 1.000000e+00, %312 %314 = call float @llvm.SI.load.const(<16 x i8> %311, i32 324) %315 = fsub float 1.000000e+00, %314 %316 = call float @llvm.SI.load.const(<16 x i8> %311, i32 328) %317 = fsub float 1.000000e+00, %316 %318 = fmul float %307, %313 %319 = fmul float %308, %315 %320 = fmul float %309, %317 %321 = fsub float 1.000000e+00, %318 %322 = fsub float 1.000000e+00, %319 %323 = fsub float 1.000000e+00, %320 %324 = fcmp oge float %284, 5.000000e-01 %325 = select i1 %324, float 1.000000e+00, float 0.000000e+00 %326 = fsub float 1.000000e+00, %325 %327 = fmul float %321, %325 %328 = fmul float %301, %326 %329 = fadd float %327, %328 %330 = fsub float 1.000000e+00, %325 %331 = fmul float %322, %325 %332 = fmul float %302, %330 %333 = fadd float %331, %332 %334 = fsub float 1.000000e+00, %325 %335 = fmul float %323, %325 %336 = fmul float %303, %334 %337 = fadd float %335, %336 %338 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %339 = load <16 x i8>, <16 x i8> addrspace(2)* %338, align 16, !invariant.load !0 %340 = call float @llvm.SI.load.const(<16 x i8> %339, i32 332) %341 = fmul float %130, %340 %342 = fsub float 1.000000e+00, %341 %343 = fmul float %329, %341 %344 = fmul float %284, %342 %345 = fadd float %343, %344 %346 = fsub float 1.000000e+00, %341 %347 = fmul float %333, %341 %348 = fmul float %288, %346 %349 = fadd float %347, %348 %350 = fsub float 1.000000e+00, %341 %351 = fmul float %337, %341 %352 = fmul float %292, %350 %353 = fadd float %351, %352 %354 = fmul float %112, 2.000000e+00 %355 = fadd float %354, -1.000000e+00 %356 = fmul float %113, 2.000000e+00 %357 = fadd float %356, -1.000000e+00 %358 = fmul float %114, 2.000000e+00 %359 = fadd float %358, -1.000000e+00 %360 = fmul float %355, %355 %361 = fmul float %357, %357 %362 = fadd float %361, %360 %363 = fmul float %359, %359 %364 = fadd float %362, %363 %365 = call float @llvm.sqrt.f32(float %364) %366 = fdiv float 1.000000e+00, %365, !fpmath !1 %367 = fmul float %355, %366 %368 = fmul float %357, %366 %369 = fmul float %359, %366 %370 = fsub float 1.000000e+00, %99 %371 = fmul float %115, %370 %372 = call float @llvm.AMDGPU.clamp.(float %371, float 0.000000e+00, float 1.000000e+00) %373 = fmul float %67, 0x3EE4F8B580000000 %374 = fadd float %373, %372 %375 = fmul float %61, %61 %376 = fmul float %64, %64 %377 = fadd float %376, %375 %378 = fmul float %67, %67 %379 = fadd float %377, %378 %380 = call float @llvm.sqrt.f32(float %379) %381 = fdiv float 1.000000e+00, %380, !fpmath !1 %382 = fmul float %61, %381 %383 = fmul float %64, %381 %384 = fmul float %67, %381 %385 = call float @llvm.SI.fs.interp(i32 0, i32 1, i32 %6, <2 x i32> %8) %386 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %387 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %388 = fmul float %385, %367 %389 = fmul float %386, %368 %390 = fadd float %389, %388 %391 = fmul float %387, %369 %392 = fadd float %390, %391 %393 = call float @llvm.SI.fs.interp(i32 0, i32 2, i32 %6, <2 x i32> %8) %394 = call float @llvm.SI.fs.interp(i32 1, i32 2, i32 %6, <2 x i32> %8) %395 = call float @llvm.SI.fs.interp(i32 2, i32 2, i32 %6, <2 x i32> %8) %396 = fmul float %393, %367 %397 = fmul float %394, %368 %398 = fadd float %397, %396 %399 = fmul float %395, %369 %400 = fadd float %398, %399 %401 = call float @llvm.SI.fs.interp(i32 0, i32 3, i32 %6, <2 x i32> %8) %402 = call float @llvm.SI.fs.interp(i32 1, i32 3, i32 %6, <2 x i32> %8) %403 = call float @llvm.SI.fs.interp(i32 2, i32 3, i32 %6, <2 x i32> %8) %404 = fmul float %401, %367 %405 = fmul float %402, %368 %406 = fadd float %405, %404 %407 = fmul float %403, %369 %408 = fadd float %406, %407 %409 = call float @llvm.SI.fs.interp(i32 0, i32 1, i32 %6, <2 x i32> %8) %410 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %411 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %412 = fmul float %409, %382 %413 = fmul float %410, %383 %414 = fadd float %413, %412 %415 = fmul float %411, %384 %416 = fadd float %414, %415 %417 = call float @llvm.SI.fs.interp(i32 0, i32 2, i32 %6, <2 x i32> %8) %418 = call float @llvm.SI.fs.interp(i32 1, i32 2, i32 %6, <2 x i32> %8) %419 = call float @llvm.SI.fs.interp(i32 2, i32 2, i32 %6, <2 x i32> %8) %420 = fmul float %417, %382 %421 = fmul float %418, %383 %422 = fadd float %421, %420 %423 = fmul float %419, %384 %424 = fadd float %422, %423 %425 = call float @llvm.SI.fs.interp(i32 0, i32 3, i32 %6, <2 x i32> %8) %426 = call float @llvm.SI.fs.interp(i32 1, i32 3, i32 %6, <2 x i32> %8) %427 = call float @llvm.SI.fs.interp(i32 2, i32 3, i32 %6, <2 x i32> %8) %428 = fmul float %425, %382 %429 = fmul float %426, %383 %430 = fadd float %429, %428 %431 = fmul float %427, %384 %432 = fadd float %430, %431 %433 = fmul float %416, %392 %434 = fsub float -0.000000e+00, %433 %435 = fmul float %424, %400 %436 = fsub float %434, %435 %437 = fmul float %432, %408 %438 = fsub float %436, %437 %439 = fmul float %438, %392 %440 = fmul float %438, %400 %441 = fmul float %438, %408 %442 = fmul float %439, 2.000000e+00 %443 = fmul float %440, 2.000000e+00 %444 = fmul float %441, 2.000000e+00 %445 = fsub float -0.000000e+00, %442 %446 = fsub float %445, %416 %447 = fsub float -0.000000e+00, %443 %448 = fsub float %447, %424 %449 = fsub float -0.000000e+00, %444 %450 = fsub float %449, %432 %451 = fsub float 1.000000e+00, %145 %452 = fmul float %451, 6.000000e+00 %453 = call float @llvm.maxnum.f32(float %349, float %353) %454 = call float @llvm.maxnum.f32(float %345, float %453) %455 = fcmp ogt float %454, 0x3F847AE140000000 br i1 %455, label %if91, label %endif95 if91: ; preds = %main_body %456 = fdiv float 1.000000e+00, %454, !fpmath !1 %457 = fmul float %345, %456 %458 = fmul float %349, %456 %459 = fmul float %353, %456 %460 = call float @llvm.AMDGPU.clamp.(float %457, float 0.000000e+00, float 1.000000e+00) %461 = call float @llvm.AMDGPU.clamp.(float %458, float 0.000000e+00, float 1.000000e+00) %462 = call float @llvm.AMDGPU.clamp.(float %459, float 0.000000e+00, float 1.000000e+00) br label %endif95 endif95: ; preds = %if91, %main_body %.03 = phi float [ %460, %if91 ], [ 1.000000e+00, %main_body ] %.02 = phi float [ %461, %if91 ], [ 1.000000e+00, %main_body ] %.0 = phi float [ %462, %if91 ], [ 1.000000e+00, %main_body ] %463 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %464 = load <16 x i8>, <16 x i8> addrspace(2)* %463, align 16, !invariant.load !0 %465 = call float @llvm.SI.load.const(<16 x i8> %464, i32 48) %466 = fsub float 1.000000e+00, %144 %467 = fmul float %.03, %144 %468 = fmul float %465, %466 %469 = fadd float %467, %468 %470 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %471 = load <16 x i8>, <16 x i8> addrspace(2)* %470, align 16, !invariant.load !0 %472 = call float @llvm.SI.load.const(<16 x i8> %471, i32 52) %473 = fsub float 1.000000e+00, %144 %474 = fmul float %.02, %144 %475 = fmul float %472, %473 %476 = fadd float %474, %475 %477 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %478 = load <16 x i8>, <16 x i8> addrspace(2)* %477, align 16, !invariant.load !0 %479 = call float @llvm.SI.load.const(<16 x i8> %478, i32 56) %480 = fsub float 1.000000e+00, %144 %481 = fmul float %.0, %144 %482 = fmul float %479, %480 %483 = fadd float %481, %482 %484 = fmul float %145, %145 %485 = fmul float %484, 1.600000e+01 %486 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 2, !amdgpu.uniform !0 %487 = load <8 x i32>, <8 x i32> addrspace(2)* %486, align 32, !invariant.load !0 %488 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %489 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %488, i64 0, i64 7, !amdgpu.uniform !0 %490 = load <4 x i32>, <4 x i32> addrspace(2)* %489, align 16, !invariant.load !0 %491 = call float @llvm.amdgcn.cubetc(float %446, float %448, float %450) %492 = call float @llvm.amdgcn.cubesc(float %446, float %448, float %450) %493 = call float @llvm.amdgcn.cubema(float %446, float %448, float %450) %494 = call float @llvm.amdgcn.cubeid(float %446, float %448, float %450) %495 = call float @llvm.fabs.f32(float %493) %496 = fdiv float 1.000000e+00, %495, !fpmath !1 %497 = fmul float %491, %496 %498 = fadd float %497, 1.500000e+00 %499 = fmul float %492, %496 %500 = fadd float %499, 1.500000e+00 %501 = bitcast float %452 to i32 %502 = bitcast float %500 to i32 %503 = bitcast float %498 to i32 %504 = bitcast float %494 to i32 %505 = insertelement <4 x i32> undef, i32 %501, i32 0 %506 = insertelement <4 x i32> %505, i32 %502, i32 1 %507 = insertelement <4 x i32> %506, i32 %503, i32 2 %508 = insertelement <4 x i32> %507, i32 %504, i32 3 %509 = call <4 x float> @llvm.SI.image.sample.b.v4i32(<4 x i32> %508, <8 x i32> %487, <4 x i32> %490, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %510 = extractelement <4 x float> %509, i32 0 %511 = extractelement <4 x float> %509, i32 1 %512 = extractelement <4 x float> %509, i32 2 %513 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %514 = load <16 x i8>, <16 x i8> addrspace(2)* %513, align 16, !invariant.load !0 %515 = call float @llvm.SI.load.const(<16 x i8> %514, i32 144) %516 = fmul float %510, %515 %517 = call float @llvm.SI.load.const(<16 x i8> %514, i32 148) %518 = fmul float %511, %517 %519 = call float @llvm.SI.load.const(<16 x i8> %514, i32 152) %520 = fmul float %512, %519 %sqrtf = call float @sqrtf(float %345) #1 %fabsf = call float @fabsf(float %sqrtf) #1 %521 = fcmp oeq float %345, 0xFFF0000000000000 %522 = select i1 %521, float 0x7FF0000000000000, float %fabsf %sqrtf21 = call float @sqrtf(float %349) #1 %fabsf22 = call float @fabsf(float %sqrtf21) #1 %523 = fcmp oeq float %349, 0xFFF0000000000000 %524 = select i1 %523, float 0x7FF0000000000000, float %fabsf22 %sqrtf23 = call float @sqrtf(float %353) #1 %fabsf24 = call float @fabsf(float %sqrtf23) #1 %525 = fcmp oeq float %353, 0xFFF0000000000000 %526 = select i1 %525, float 0x7FF0000000000000, float %fabsf24 %527 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %528 = load <16 x i8>, <16 x i8> addrspace(2)* %527, align 16, !invariant.load !0 %529 = call float @llvm.SI.load.const(<16 x i8> %528, i32 48) %530 = fsub float 1.000000e+00, %144 %531 = fmul float %522, %144 %532 = fmul float %529, %530 %533 = fadd float %531, %532 %534 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %535 = load <16 x i8>, <16 x i8> addrspace(2)* %534, align 16, !invariant.load !0 %536 = call float @llvm.SI.load.const(<16 x i8> %535, i32 52) %537 = fsub float 1.000000e+00, %144 %538 = fmul float %524, %144 %539 = fmul float %536, %537 %540 = fadd float %538, %539 %541 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %542 = load <16 x i8>, <16 x i8> addrspace(2)* %541, align 16, !invariant.load !0 %543 = call float @llvm.SI.load.const(<16 x i8> %542, i32 56) %544 = fsub float 1.000000e+00, %144 %545 = fmul float %526, %144 %546 = fmul float %543, %544 %547 = fadd float %545, %546 %548 = fmul float %516, %533 %549 = fmul float %518, %540 %550 = fmul float %520, %547 %551 = fmul float %392, %392 %552 = fmul float %400, %400 %553 = fadd float %552, %551 %554 = fmul float %408, %408 %555 = fadd float %553, %554 %556 = call float @llvm.sqrt.f32(float %555) %557 = fdiv float 1.000000e+00, %556, !fpmath !1 %558 = fmul float %400, %557 %559 = fcmp ogt float %558, 0.000000e+00 br i1 %559, label %if113, label %else122 if113: ; preds = %endif95 %560 = call float @llvm.AMDGPU.clamp.(float %558, float 0.000000e+00, float 1.000000e+00) %561 = fmul float %560, 1.250000e+00 %562 = call float @llvm.AMDGPU.clamp.(float %561, float 0.000000e+00, float 1.000000e+00) %563 = fmul float %562, 2.000000e+00 %564 = fsub float 3.000000e+00, %563 %565 = fmul float %562, %564 %566 = fmul float %562, %565 %567 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %568 = load <16 x i8>, <16 x i8> addrspace(2)* %567, align 16, !invariant.load !0 %569 = call float @llvm.SI.load.const(<16 x i8> %568, i32 64) %570 = call float @llvm.SI.load.const(<16 x i8> %568, i32 80) %571 = fsub float 1.000000e+00, %566 %572 = fmul float %569, %566 %573 = fmul float %570, %571 %574 = fadd float %572, %573 %575 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %576 = load <16 x i8>, <16 x i8> addrspace(2)* %575, align 16, !invariant.load !0 %577 = call float @llvm.SI.load.const(<16 x i8> %576, i32 68) %578 = call float @llvm.SI.load.const(<16 x i8> %576, i32 84) %579 = fsub float 1.000000e+00, %566 %580 = fmul float %577, %566 %581 = fmul float %578, %579 %582 = fadd float %580, %581 %583 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %584 = load <16 x i8>, <16 x i8> addrspace(2)* %583, align 16, !invariant.load !0 %585 = call float @llvm.SI.load.const(<16 x i8> %584, i32 72) %586 = call float @llvm.SI.load.const(<16 x i8> %584, i32 88) %587 = fmul float %585, %566 br label %endif131 else122: ; preds = %endif95 %588 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %589 = load <16 x i8>, <16 x i8> addrspace(2)* %588, align 16, !invariant.load !0 %590 = call float @llvm.SI.load.const(<16 x i8> %589, i32 88) %591 = call float @llvm.SI.load.const(<16 x i8> %589, i32 84) %592 = call float @llvm.SI.load.const(<16 x i8> %589, i32 80) %593 = fsub float -0.000000e+00, %558 %594 = call float @llvm.AMDGPU.clamp.(float %593, float 0.000000e+00, float 1.000000e+00) %595 = fmul float %594, 1.250000e+00 %596 = call float @llvm.AMDGPU.clamp.(float %595, float 0.000000e+00, float 1.000000e+00) %597 = fmul float %596, 2.000000e+00 %598 = fsub float 3.000000e+00, %597 %599 = fmul float %596, %598 %600 = fmul float %596, %599 %601 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %602 = load <16 x i8>, <16 x i8> addrspace(2)* %601, align 16, !invariant.load !0 %603 = call float @llvm.SI.load.const(<16 x i8> %602, i32 96) %604 = fsub float 1.000000e+00, %600 %605 = fmul float %603, %600 %606 = fmul float %592, %604 %607 = fadd float %605, %606 %608 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %609 = load <16 x i8>, <16 x i8> addrspace(2)* %608, align 16, !invariant.load !0 %610 = call float @llvm.SI.load.const(<16 x i8> %609, i32 100) %611 = fsub float 1.000000e+00, %600 %612 = fmul float %610, %600 %613 = fmul float %591, %611 %614 = fadd float %612, %613 %615 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %616 = load <16 x i8>, <16 x i8> addrspace(2)* %615, align 16, !invariant.load !0 %617 = call float @llvm.SI.load.const(<16 x i8> %616, i32 104) %618 = fmul float %617, %600 br label %endif131 endif131: ; preds = %else122, %if113 %.pn = phi float [ %600, %else122 ], [ %566, %if113 ] %.sink15 = phi float [ %590, %else122 ], [ %586, %if113 ] %.sink = phi float [ %618, %else122 ], [ %587, %if113 ] %.07 = phi float [ %607, %else122 ], [ %574, %if113 ] %.06 = phi float [ %614, %else122 ], [ %582, %if113 ] %.sink16 = fsub float 1.000000e+00, %.pn %619 = fmul float %.sink15, %.sink16 %620 = fadd float %.sink, %619 %621 = fmul float %.07, 2.000000e+00 %622 = fmul float %.06, 2.000000e+00 %623 = fmul float %620, 2.000000e+00 %624 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %625 = load <16 x i8>, <16 x i8> addrspace(2)* %624, align 16, !invariant.load !0 %626 = call float @llvm.SI.load.const(<16 x i8> %625, i32 112) %627 = fmul float %621, %626 %628 = call float @llvm.SI.load.const(<16 x i8> %625, i32 112) %629 = fmul float %622, %628 %630 = call float @llvm.SI.load.const(<16 x i8> %625, i32 112) %631 = fmul float %623, %630 %632 = fmul float %627, %345 %633 = fmul float %629, %349 %634 = fmul float %631, %353 %635 = fsub float 1.000000e+00, %146 %636 = fmul float %548, %146 %637 = fmul float %632, %635 %638 = fadd float %636, %637 %639 = fsub float 1.000000e+00, %146 %640 = fmul float %549, %146 %641 = fmul float %633, %639 %642 = fadd float %640, %641 %643 = fsub float 1.000000e+00, %146 %644 = fmul float %550, %146 %645 = fmul float %634, %643 %646 = fadd float %644, %645 %647 = fmul float %638, %131 %648 = fmul float %642, %131 %649 = fmul float %646, %131 %650 = fmul float %147, %131 %651 = fmul float %485, 5.000000e-01 %652 = fadd float %651, 2.000000e+00 %653 = fmul float %61, %61 %654 = fmul float %64, %64 %655 = fadd float %654, %653 %656 = fmul float %67, %67 %657 = fadd float %655, %656 %658 = call float @llvm.sqrt.f32(float %657) %659 = fdiv float 1.000000e+00, %658, !fpmath !1 %660 = fmul float %61, %659 %661 = fmul float %64, %659 %662 = fmul float %67, %659 %663 = fmul float %660, %367 %664 = fmul float %661, %368 %665 = fadd float %664, %663 %666 = fmul float %662, %369 %667 = fadd float %665, %666 %668 = fsub float 1.000000e+00, %667 %669 = call float @llvm.maxnum.f32(float %668, float 0x3EE4F8B580000000) %670 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %671 = load <16 x i8>, <16 x i8> addrspace(2)* %670, align 16, !invariant.load !0 %672 = call float @llvm.SI.load.const(<16 x i8> %671, i32 368) %673 = call float @llvm.pow.f32(float %669, float %672) %674 = call float @llvm.SI.load.const(<16 x i8> %671, i32 336) %675 = call float @llvm.SI.load.const(<16 x i8> %671, i32 352) %676 = fmul float %674, %673 %677 = fadd float %676, %675 %678 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %679 = load <16 x i8>, <16 x i8> addrspace(2)* %678, align 16, !invariant.load !0 %680 = call float @llvm.SI.load.const(<16 x i8> %679, i32 340) %681 = call float @llvm.SI.load.const(<16 x i8> %679, i32 356) %682 = fmul float %680, %673 %683 = fadd float %682, %681 %684 = call float @llvm.SI.load.const(<16 x i8> %679, i32 344) %685 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %686 = load <16 x i8>, <16 x i8> addrspace(2)* %685, align 16, !invariant.load !0 %687 = call float @llvm.SI.load.const(<16 x i8> %686, i32 360) %688 = fmul float %684, %673 %689 = fadd float %688, %687 %690 = fsub float 1.000000e+00, %131 %691 = call float @llvm.AMDGPU.clamp.(float %690, float 0.000000e+00, float 1.000000e+00) %692 = fmul float %677, %691 %693 = fmul float %683, %691 %694 = fmul float %689, %691 %695 = fadd float %647, %692 %696 = fadd float %648, %693 %697 = fadd float %649, %694 %698 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %699 = load <16 x i8>, <16 x i8> addrspace(2)* %698, align 16, !invariant.load !0 %700 = call float @llvm.SI.load.const(<16 x i8> %699, i32 480) %701 = fcmp olt float %83, %700 %702 = select i1 %701, float -1.000000e+00, float 0.000000e+00 call void @llvm.AMDGPU.kill(float %702) %703 = call float @llvm.SI.fs.interp(i32 0, i32 1, i32 %6, <2 x i32> %8) %704 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %705 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %706 = fmul float %703, %367 %707 = fmul float %704, %368 %708 = fadd float %707, %706 %709 = fmul float %705, %369 %710 = fadd float %708, %709 %711 = call float @llvm.SI.fs.interp(i32 0, i32 2, i32 %6, <2 x i32> %8) %712 = call float @llvm.SI.fs.interp(i32 1, i32 2, i32 %6, <2 x i32> %8) %713 = call float @llvm.SI.fs.interp(i32 2, i32 2, i32 %6, <2 x i32> %8) %714 = fmul float %711, %367 %715 = fmul float %712, %368 %716 = fadd float %715, %714 %717 = fmul float %713, %369 %718 = fadd float %716, %717 %719 = call float @llvm.SI.fs.interp(i32 0, i32 3, i32 %6, <2 x i32> %8) %720 = call float @llvm.SI.fs.interp(i32 1, i32 3, i32 %6, <2 x i32> %8) %721 = call float @llvm.SI.fs.interp(i32 2, i32 3, i32 %6, <2 x i32> %8) %722 = fmul float %719, %367 %723 = fmul float %720, %368 %724 = fadd float %723, %722 %725 = fmul float %721, %369 %726 = fadd float %724, %725 %727 = fmul float %710, %710 %728 = fmul float %718, %718 %729 = fadd float %728, %727 %730 = fmul float %726, %726 %731 = fadd float %729, %730 %732 = call float @llvm.sqrt.f32(float %731) %733 = fdiv float 1.000000e+00, %732, !fpmath !1 %734 = fmul float %710, %733 %735 = fmul float %718, %733 %736 = fmul float %726, %733 %737 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %738 = load <16 x i8>, <16 x i8> addrspace(2)* %737, align 16, !invariant.load !0 %739 = call float @llvm.SI.load.const(<16 x i8> %738, i32 16) %740 = call float @llvm.SI.load.const(<16 x i8> %738, i32 20) %741 = call float @llvm.SI.load.const(<16 x i8> %738, i32 24) %742 = call float @llvm.SI.load.const(<16 x i8> %738, i32 16) %743 = call float @llvm.SI.load.const(<16 x i8> %738, i32 20) %744 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %745 = load <16 x i8>, <16 x i8> addrspace(2)* %744, align 16, !invariant.load !0 %746 = call float @llvm.SI.load.const(<16 x i8> %745, i32 24) %747 = fmul float %739, %742 %748 = fmul float %740, %743 %749 = fadd float %748, %747 %750 = fmul float %741, %746 %751 = fadd float %749, %750 %752 = call float @llvm.sqrt.f32(float %751) %753 = fdiv float 1.000000e+00, %752, !fpmath !1 %754 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %755 = load <16 x i8>, <16 x i8> addrspace(2)* %754, align 16, !invariant.load !0 %756 = call float @llvm.SI.load.const(<16 x i8> %755, i32 16) %757 = fmul float %756, %753 %758 = call float @llvm.SI.load.const(<16 x i8> %755, i32 20) %759 = fmul float %758, %753 %760 = call float @llvm.SI.load.const(<16 x i8> %755, i32 24) %761 = fmul float %760, %753 %762 = fmul float %41, %41 %763 = fmul float %42, %42 %764 = fadd float %763, %762 %765 = fmul float %43, %43 %766 = fadd float %764, %765 %767 = call float @llvm.sqrt.f32(float %766) %768 = fdiv float 1.000000e+00, %767, !fpmath !1 %769 = fmul float %41, %768 %770 = fmul float %42, %768 %771 = fmul float %43, %768 %772 = fmul float %734, %757 %773 = fmul float %735, %759 %774 = fadd float %773, %772 %775 = fmul float %736, %761 %776 = fadd float %774, %775 %777 = call float @llvm.maxnum.f32(float %776, float 0.000000e+00) %778 = fcmp ogt float %374, 0.000000e+00 %779 = fcmp ogt float %485, 0.000000e+00 %780 = and i1 %778, %779 br i1 %780, label %if175, label %endif192 if175: ; preds = %endif131 %781 = fmul float %757, %734 %782 = fsub float -0.000000e+00, %781 %783 = fmul float %759, %735 %784 = fsub float %782, %783 %785 = fmul float %761, %736 %786 = fsub float %784, %785 %787 = fmul float %786, %734 %788 = fmul float %786, %735 %789 = fmul float %786, %736 %790 = fmul float %787, 2.000000e+00 %791 = fmul float %788, 2.000000e+00 %792 = fmul float %789, 2.000000e+00 %793 = fsub float -0.000000e+00, %790 %794 = fsub float %793, %757 %795 = fsub float -0.000000e+00, %791 %796 = fsub float %795, %759 %797 = fsub float -0.000000e+00, %792 %798 = fsub float %797, %761 %799 = fmul float %769, %794 %800 = fmul float %770, %796 %801 = fadd float %800, %799 %802 = fmul float %771, %798 %803 = fadd float %801, %802 %804 = call float @llvm.maxnum.f32(float %803, float 0x3EE4F8B580000000) %805 = fmul float %777, 2.000000e+00 %806 = call float @llvm.sqrt.f32(float %805) %807 = call float @llvm.AMDGPU.clamp.(float %806, float 0.000000e+00, float 1.000000e+00) %808 = fmul float %804, %807 %809 = fadd float %485, 0x3F847AE140000000 %810 = fmul float %809, 6.400000e+01 %811 = call float @llvm.maxnum.f32(float %810, float 0x3F1A36E2E0000000) %812 = call float @llvm.pow.f32(float %808, float %811) %813 = fmul float %812, %374 br label %endif192 endif192: ; preds = %if175, %endif131 %.1 = phi float [ %813, %if175 ], [ 0.000000e+00, %endif131 ] %814 = fsub float 0x3FD54FDF40000000, %776 %815 = call float @llvm.AMDGPU.clamp.(float %814, float 0.000000e+00, float 1.000000e+00) %816 = fmul float %734, %769 %817 = fmul float %735, %770 %818 = fadd float %817, %816 %819 = fmul float %736, %771 %820 = fadd float %818, %819 %821 = call float @llvm.AMDGPU.clamp.(float %820, float 0.000000e+00, float 1.000000e+00) %822 = fsub float 1.000000e+00, %821 %823 = call float @llvm.AMDGPU.clamp.(float %822, float 0.000000e+00, float 1.000000e+00) %824 = call float @llvm.maxnum.f32(float %652, float 0x3F1A36E2E0000000) %825 = call float @llvm.pow.f32(float %823, float %824) %826 = fmul float %825, %650 %827 = fmul float %815, %815 %828 = fmul float %826, %827 %829 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %830 = load <16 x i8>, <16 x i8> addrspace(2)* %829, align 16, !invariant.load !0 %831 = call float @llvm.SI.load.const(<16 x i8> %830, i32 32) %832 = fmul float %831, %469 %833 = call float @llvm.SI.load.const(<16 x i8> %830, i32 36) %834 = fmul float %833, %476 %835 = call float @llvm.SI.load.const(<16 x i8> %830, i32 40) %836 = fmul float %835, %483 %837 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %838 = load <16 x i8>, <16 x i8> addrspace(2)* %837, align 16, !invariant.load !0 %839 = call float @llvm.SI.load.const(<16 x i8> %838, i32 32) %840 = fmul float %345, %839 %841 = call float @llvm.SI.load.const(<16 x i8> %838, i32 36) %842 = fmul float %349, %841 %843 = call float @llvm.SI.load.const(<16 x i8> %838, i32 40) %844 = fmul float %353, %843 %845 = fmul float %840, %777 %846 = fmul float %842, %777 %847 = fmul float %844, %777 %848 = fmul float %832, %.1 %849 = fadd float %848, %845 %850 = fmul float %834, %.1 %851 = fadd float %850, %846 %852 = fmul float %836, %.1 %853 = fadd float %852, %847 %854 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %855 = load <16 x i8>, <16 x i8> addrspace(2)* %854, align 16, !invariant.load !0 %856 = call float @llvm.SI.load.const(<16 x i8> %855, i32 32) %857 = fmul float %828, %856 %858 = fadd float %857, %849 %859 = call float @llvm.SI.load.const(<16 x i8> %855, i32 36) %860 = fmul float %828, %859 %861 = fadd float %860, %851 %862 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %863 = load <16 x i8>, <16 x i8> addrspace(2)* %862, align 16, !invariant.load !0 %864 = call float @llvm.SI.load.const(<16 x i8> %863, i32 40) %865 = fmul float %828, %864 %866 = fadd float %865, %853 %867 = fadd float %858, %695 %868 = fadd float %861, %696 %869 = fadd float %866, %697 %870 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %871 = load <16 x i8>, <16 x i8> addrspace(2)* %870, align 16, !invariant.load !0 %872 = call float @llvm.SI.load.const(<16 x i8> %871, i32 0) %873 = fsub float %23, %872 %874 = call float @llvm.SI.load.const(<16 x i8> %871, i32 4) %875 = fsub float %24, %874 %876 = call float @llvm.SI.load.const(<16 x i8> %871, i32 8) %877 = fsub float %25, %876 %878 = fmul float %873, %873 %879 = fmul float %875, %875 %880 = fadd float %879, %878 %881 = fmul float %877, %877 %882 = fadd float %880, %881 %883 = call float @llvm.sqrt.f32(float %882) %884 = fmul float %873, %873 %885 = fmul float %875, %875 %886 = fadd float %885, %884 %887 = fmul float %877, %877 %888 = fadd float %886, %887 %889 = call float @llvm.sqrt.f32(float %888) %890 = fdiv float 1.000000e+00, %889, !fpmath !1 %891 = fmul float %873, %890 %892 = fmul float %875, %890 %893 = fmul float %877, %890 %894 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %895 = load <16 x i8>, <16 x i8> addrspace(2)* %894, align 16, !invariant.load !0 %896 = call float @llvm.SI.load.const(<16 x i8> %895, i32 272) %897 = fsub float -0.000000e+00, %896 %898 = fmul float %896, 0xBFF7154760000000 %899 = call float @llvm.exp2.f32(float %898) %900 = fsub float 1.000000e+00, %899 %901 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %902 = load <16 x i8>, <16 x i8> addrspace(2)* %901, align 16, !invariant.load !0 %903 = call float @llvm.SI.load.const(<16 x i8> %902, i32 268) %904 = call float @llvm.SI.load.const(<16 x i8> %902, i32 264) %905 = fsub float %903, %904 %906 = fsub float %883, %905 %907 = call float @llvm.SI.load.const(<16 x i8> %902, i32 264) %908 = fdiv float 1.000000e+00, %907, !fpmath !1 %909 = fmul float %906, %908 %910 = call float @llvm.AMDGPU.clamp.(float %909, float 0.000000e+00, float 1.000000e+00) %911 = fmul float %910, %897 %912 = fmul float %911, 0x3FF7154760000000 %913 = call float @llvm.exp2.f32(float %912) %914 = fsub float 1.000000e+00, %913 %915 = fdiv float 1.000000e+00, %900, !fpmath !1 %916 = fmul float %914, %915 %917 = call float @llvm.AMDGPU.clamp.(float %916, float 0.000000e+00, float 1.000000e+00) %918 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %919 = load <16 x i8>, <16 x i8> addrspace(2)* %918, align 16, !invariant.load !0 %920 = call float @llvm.SI.load.const(<16 x i8> %919, i32 256) %921 = fsub float %883, %920 %922 = call float @llvm.SI.load.const(<16 x i8> %919, i32 260) %923 = fdiv float 1.000000e+00, %922, !fpmath !1 %924 = fmul float %921, %923 %925 = call float @llvm.AMDGPU.clamp.(float %924, float 0.000000e+00, float 1.000000e+00) %926 = fmul float %925, %897 %927 = fmul float %926, 0x3FF7154760000000 %928 = call float @llvm.exp2.f32(float %927) %929 = fsub float 1.000000e+00, %928 %930 = fdiv float 1.000000e+00, %900, !fpmath !1 %931 = fmul float %929, %930 %932 = call float @llvm.AMDGPU.clamp.(float %931, float 0.000000e+00, float 1.000000e+00) %933 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 4, !amdgpu.uniform !0 %934 = load <8 x i32>, <8 x i32> addrspace(2)* %933, align 32, !invariant.load !0 %935 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %936 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %935, i64 0, i64 11, !amdgpu.uniform !0 %937 = load <4 x i32>, <4 x i32> addrspace(2)* %936, align 16, !invariant.load !0 %938 = call float @llvm.amdgcn.cubetc(float %891, float %892, float %893) %939 = call float @llvm.amdgcn.cubesc(float %891, float %892, float %893) %940 = call float @llvm.amdgcn.cubema(float %891, float %892, float %893) %941 = call float @llvm.amdgcn.cubeid(float %891, float %892, float %893) %942 = call float @llvm.fabs.f32(float %940) %943 = fdiv float 1.000000e+00, %942, !fpmath !1 %944 = fmul float %938, %943 %945 = fadd float %944, 1.500000e+00 %946 = fmul float %939, %943 %947 = fadd float %946, 1.500000e+00 %948 = bitcast float %947 to i32 %949 = bitcast float %945 to i32 %950 = bitcast float %941 to i32 %951 = insertelement <4 x i32> undef, i32 %948, i32 0 %952 = insertelement <4 x i32> %951, i32 %949, i32 1 %953 = insertelement <4 x i32> %952, i32 %950, i32 2 %954 = call <4 x float> @llvm.SI.image.sample.v4i32(<4 x i32> %953, <8 x i32> %934, <4 x i32> %937, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %955 = extractelement <4 x float> %954, i32 0 %956 = extractelement <4 x float> %954, i32 1 %957 = extractelement <4 x float> %954, i32 2 %958 = extractelement <4 x float> %954, i32 3 %959 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %960 = load <16 x i8>, <16 x i8> addrspace(2)* %959, align 16, !invariant.load !0 %961 = call float @llvm.SI.load.const(<16 x i8> %960, i32 192) %962 = fmul float %955, %961 %963 = call float @llvm.SI.load.const(<16 x i8> %960, i32 196) %964 = fmul float %956, %963 %965 = call float @llvm.SI.load.const(<16 x i8> %960, i32 200) %966 = fmul float %957, %965 %967 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %968 = load <16 x i8>, <16 x i8> addrspace(2)* %967, align 16, !invariant.load !0 %969 = call float @llvm.SI.load.const(<16 x i8> %968, i32 204) %970 = fmul float %958, %969 %971 = fmul float %891, %891 %972 = fmul float %892, %892 %973 = fadd float %972, %971 %974 = fmul float %893, %893 %975 = fadd float %973, %974 %976 = call float @llvm.sqrt.f32(float %975) %977 = fdiv float 1.000000e+00, %976, !fpmath !1 %978 = fmul float %892, %977 %979 = fcmp ogt float %978, 0.000000e+00 br i1 %979, label %if251, label %else260 if251: ; preds = %endif192 %980 = call float @llvm.AMDGPU.clamp.(float %978, float 0.000000e+00, float 1.000000e+00) %981 = fmul float %980, 1.250000e+00 %982 = call float @llvm.AMDGPU.clamp.(float %981, float 0.000000e+00, float 1.000000e+00) %983 = fmul float %982, 2.000000e+00 %984 = fsub float 3.000000e+00, %983 %985 = fmul float %982, %984 %986 = fmul float %982, %985 %987 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %988 = load <16 x i8>, <16 x i8> addrspace(2)* %987, align 16, !invariant.load !0 %989 = call float @llvm.SI.load.const(<16 x i8> %988, i32 64) %990 = call float @llvm.SI.load.const(<16 x i8> %988, i32 80) %991 = fsub float 1.000000e+00, %986 %992 = fmul float %989, %986 %993 = fmul float %990, %991 %994 = fadd float %992, %993 %995 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %996 = load <16 x i8>, <16 x i8> addrspace(2)* %995, align 16, !invariant.load !0 %997 = call float @llvm.SI.load.const(<16 x i8> %996, i32 68) %998 = call float @llvm.SI.load.const(<16 x i8> %996, i32 84) %999 = fsub float 1.000000e+00, %986 %1000 = fmul float %997, %986 %1001 = fmul float %998, %999 %1002 = fadd float %1000, %1001 %1003 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %1004 = load <16 x i8>, <16 x i8> addrspace(2)* %1003, align 16, !invariant.load !0 %1005 = call float @llvm.SI.load.const(<16 x i8> %1004, i32 72) %1006 = call float @llvm.SI.load.const(<16 x i8> %1004, i32 88) %1007 = fmul float %1005, %986 br label %endif269 else260: ; preds = %endif192 %1008 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %1009 = load <16 x i8>, <16 x i8> addrspace(2)* %1008, align 16, !invariant.load !0 %1010 = call float @llvm.SI.load.const(<16 x i8> %1009, i32 88) %1011 = call float @llvm.SI.load.const(<16 x i8> %1009, i32 84) %1012 = call float @llvm.SI.load.const(<16 x i8> %1009, i32 80) %1013 = fsub float -0.000000e+00, %978 %1014 = call float @llvm.AMDGPU.clamp.(float %1013, float 0.000000e+00, float 1.000000e+00) %1015 = fmul float %1014, 1.250000e+00 %1016 = call float @llvm.AMDGPU.clamp.(float %1015, float 0.000000e+00, float 1.000000e+00) %1017 = fmul float %1016, 2.000000e+00 %1018 = fsub float 3.000000e+00, %1017 %1019 = fmul float %1016, %1018 %1020 = fmul float %1016, %1019 %1021 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %1022 = load <16 x i8>, <16 x i8> addrspace(2)* %1021, align 16, !invariant.load !0 %1023 = call float @llvm.SI.load.const(<16 x i8> %1022, i32 96) %1024 = fsub float 1.000000e+00, %1020 %1025 = fmul float %1023, %1020 %1026 = fmul float %1012, %1024 %1027 = fadd float %1025, %1026 %1028 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %1029 = load <16 x i8>, <16 x i8> addrspace(2)* %1028, align 16, !invariant.load !0 %1030 = call float @llvm.SI.load.const(<16 x i8> %1029, i32 100) %1031 = fsub float 1.000000e+00, %1020 %1032 = fmul float %1030, %1020 %1033 = fmul float %1011, %1031 %1034 = fadd float %1032, %1033 %1035 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %1036 = load <16 x i8>, <16 x i8> addrspace(2)* %1035, align 16, !invariant.load !0 %1037 = call float @llvm.SI.load.const(<16 x i8> %1036, i32 104) %1038 = fmul float %1037, %1020 br label %endif269 endif269: ; preds = %else260, %if251 %.pn25 = phi float [ %1020, %else260 ], [ %986, %if251 ] %.sink19 = phi float [ %1010, %else260 ], [ %1006, %if251 ] %.sink17 = phi float [ %1038, %else260 ], [ %1007, %if251 ] %.012 = phi float [ %1027, %else260 ], [ %994, %if251 ] %.011 = phi float [ %1034, %else260 ], [ %1002, %if251 ] %.sink20 = fsub float 1.000000e+00, %.pn25 %1039 = fmul float %.sink19, %.sink20 %1040 = fadd float %.sink17, %1039 %1041 = fmul float %891, %891 %1042 = fmul float %892, %892 %1043 = fadd float %1042, %1041 %1044 = fmul float %893, %893 %1045 = fadd float %1043, %1044 %1046 = call float @llvm.sqrt.f32(float %1045) %1047 = fdiv float 1.000000e+00, %1046, !fpmath !1 %1048 = fmul float %891, %1047 %1049 = fmul float %892, %1047 %1050 = fmul float %893, %1047 %1051 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %1052 = load <16 x i8>, <16 x i8> addrspace(2)* %1051, align 16, !invariant.load !0 %1053 = call float @llvm.SI.load.const(<16 x i8> %1052, i32 268) %1054 = fmul float %1048, %1053 %1055 = call float @llvm.SI.load.const(<16 x i8> %1052, i32 268) %1056 = fmul float %1049, %1055 %1057 = call float @llvm.SI.load.const(<16 x i8> %1052, i32 268) %1058 = fmul float %1050, %1057 %1059 = fmul float %1054, 4.000000e+00 %1060 = fmul float %1056, 4.000000e+00 %1061 = fmul float %1058, 4.000000e+00 %1062 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %1063 = load <16 x i8>, <16 x i8> addrspace(2)* %1062, align 16, !invariant.load !0 %1064 = call float @llvm.SI.load.const(<16 x i8> %1063, i32 4) %1065 = fadd float %1060, %1064 %1066 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 0, !amdgpu.uniform !0 %1067 = load <8 x i32>, <8 x i32> addrspace(2)* %1066, align 32, !invariant.load !0 %1068 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %1069 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %1068, i64 0, i64 3, !amdgpu.uniform !0 %1070 = load <4 x i32>, <4 x i32> addrspace(2)* %1069, align 16, !invariant.load !0 %1071 = call float @llvm.amdgcn.cubetc(float %1059, float %1065, float %1061) %1072 = call float @llvm.amdgcn.cubesc(float %1059, float %1065, float %1061) %1073 = call float @llvm.amdgcn.cubema(float %1059, float %1065, float %1061) %1074 = call float @llvm.amdgcn.cubeid(float %1059, float %1065, float %1061) %1075 = call float @llvm.fabs.f32(float %1073) %1076 = fdiv float 1.000000e+00, %1075, !fpmath !1 %1077 = fmul float %1071, %1076 %1078 = fadd float %1077, 1.500000e+00 %1079 = fmul float %1072, %1076 %1080 = fadd float %1079, 1.500000e+00 %1081 = bitcast float %1080 to i32 %1082 = bitcast float %1078 to i32 %1083 = bitcast float %1074 to i32 %1084 = insertelement <4 x i32> undef, i32 %1081, i32 0 %1085 = insertelement <4 x i32> %1084, i32 %1082, i32 1 %1086 = insertelement <4 x i32> %1085, i32 %1083, i32 2 %1087 = call <4 x float> @llvm.SI.image.sample.v4i32(<4 x i32> %1086, <8 x i32> %1067, <4 x i32> %1070, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %1088 = extractelement <4 x float> %1087, i32 0 %1089 = extractelement <4 x float> %1087, i32 1 %1090 = extractelement <4 x float> %1087, i32 2 %1091 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %1092 = load <16 x i8>, <16 x i8> addrspace(2)* %1091, align 16, !invariant.load !0 %1093 = call float @llvm.SI.load.const(<16 x i8> %1092, i32 128) %1094 = fmul float %1088, %1093 %1095 = call float @llvm.SI.load.const(<16 x i8> %1092, i32 132) %1096 = fmul float %1089, %1095 %1097 = call float @llvm.SI.load.const(<16 x i8> %1092, i32 136) %1098 = fmul float %1090, %1097 %1099 = fmul float %1094, 2.000000e+00 %1100 = fmul float %1096, 2.000000e+00 %1101 = fmul float %1098, 2.000000e+00 %1102 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %1103 = load <16 x i8>, <16 x i8> addrspace(2)* %1102, align 16, !invariant.load !0 %1104 = call float @llvm.SI.load.const(<16 x i8> %1103, i32 240) %1105 = fsub float 1.000000e+00, %917 %1106 = fmul float %1099, %917 %1107 = fmul float %1104, %1105 %1108 = fadd float %1106, %1107 %1109 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %1110 = load <16 x i8>, <16 x i8> addrspace(2)* %1109, align 16, !invariant.load !0 %1111 = call float @llvm.SI.load.const(<16 x i8> %1110, i32 244) %1112 = fsub float 1.000000e+00, %917 %1113 = fmul float %1100, %917 %1114 = fmul float %1111, %1112 %1115 = fadd float %1113, %1114 %1116 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %1117 = load <16 x i8>, <16 x i8> addrspace(2)* %1116, align 16, !invariant.load !0 %1118 = call float @llvm.SI.load.const(<16 x i8> %1117, i32 248) %1119 = fsub float 1.000000e+00, %917 %1120 = fmul float %1101, %917 %1121 = fmul float %1118, %1119 %1122 = fadd float %1120, %1121 %1123 = fmul float %962, 5.000000e-01 %1124 = fmul float %964, 5.000000e-01 %1125 = fmul float %966, 5.000000e-01 %1126 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %1127 = load <16 x i8>, <16 x i8> addrspace(2)* %1126, align 16, !invariant.load !0 %1128 = call float @llvm.SI.load.const(<16 x i8> %1127, i32 128) %1129 = fmul float %.012, %1128 %1130 = call float @llvm.SI.load.const(<16 x i8> %1127, i32 132) %1131 = fmul float %.011, %1130 %1132 = call float @llvm.SI.load.const(<16 x i8> %1127, i32 136) %1133 = fmul float %1040, %1132 %1134 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %1135 = load <16 x i8>, <16 x i8> addrspace(2)* %1134, align 16, !invariant.load !0 %1136 = call float @llvm.SI.load.const(<16 x i8> %1135, i32 112) %1137 = fmul float %1136, 2.000000e+00 %1138 = fmul float %1129, %1137 %1139 = fmul float %1131, %1137 %1140 = fmul float %1133, %1137 %1141 = fmul float %1138, 5.000000e-01 %1142 = fadd float %1141, %1123 %1143 = fmul float %1139, 5.000000e-01 %1144 = fadd float %1143, %1124 %1145 = fmul float %1140, 5.000000e-01 %1146 = fadd float %1145, %1125 %1147 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %1148 = load <16 x i8>, <16 x i8> addrspace(2)* %1147, align 16, !invariant.load !0 %1149 = call float @llvm.SI.load.const(<16 x i8> %1148, i32 280) %1150 = fmul float %883, %1149 %1151 = fmul float %1150, 0x3FFB333340000000 %1152 = fmul float %1151, 0xBFF7154760000000 %1153 = call float @llvm.exp2.f32(float %1152) %1154 = fsub float 0x3FF3333340000000, %1153 %1155 = fmul float %970, %1154 %1156 = fmul float %1155, 1.250000e+00 %1157 = call float @llvm.AMDGPU.clamp.(float %1156, float 0.000000e+00, float 1.000000e+00) %1158 = fsub float 1.000000e+00, %1157 %1159 = fmul float %1142, %1157 %1160 = fmul float %1108, %1158 %1161 = fadd float %1159, %1160 %1162 = fsub float 1.000000e+00, %1157 %1163 = fmul float %1144, %1157 %1164 = fmul float %1115, %1162 %1165 = fadd float %1163, %1164 %1166 = fsub float 1.000000e+00, %1157 %1167 = fmul float %1146, %1157 %1168 = fmul float %1122, %1166 %1169 = fadd float %1167, %1168 %1170 = call float @llvm.maxnum.f32(float %932, float %1157) %1171 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %1172 = load <16 x i8>, <16 x i8> addrspace(2)* %1171, align 16, !invariant.load !0 %1173 = call float @llvm.SI.load.const(<16 x i8> %1172, i32 228) %1174 = fcmp ogt float %1173, 0.000000e+00 br i1 %1174, label %if300, label %endif338 if300: ; preds = %endif269 %1175 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %1176 = load <16 x i8>, <16 x i8> addrspace(2)* %1175, align 16, !invariant.load !0 %1177 = call float @llvm.SI.load.const(<16 x i8> %1176, i32 224) %1178 = call float @llvm.SI.load.const(<16 x i8> %1176, i32 0) %1179 = call float @llvm.SI.load.const(<16 x i8> %1176, i32 4) %1180 = call float @llvm.SI.load.const(<16 x i8> %1176, i32 8) %1181 = fmul float %1178, 0.000000e+00 %1182 = fadd float %1181, %1179 %1183 = fmul float %1180, 0.000000e+00 %1184 = fadd float %1182, %1183 %1185 = fadd float %1184, %1177 %1186 = fcmp ole float %1185, 0.000000e+00 %1187 = uitofp i1 %1186 to float %1188 = fmul float %23, 0.000000e+00 %1189 = fadd float %1188, %24 %1190 = fmul float %25, 0.000000e+00 %1191 = fadd float %1189, %1190 %1192 = fadd float %1191, %1177 %1193 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %1194 = load <16 x i8>, <16 x i8> addrspace(2)* %1193, align 16, !invariant.load !0 %1195 = call float @llvm.SI.load.const(<16 x i8> %1194, i32 0) %1196 = fsub float %1195, %23 %1197 = call float @llvm.SI.load.const(<16 x i8> %1194, i32 4) %1198 = fsub float %1197, %24 %1199 = call float @llvm.SI.load.const(<16 x i8> %1194, i32 8) %1200 = fsub float %1199, %25 %1201 = fmul float %1187, 2.000000e+00 %1202 = fsub float 1.000000e+00, %1201 %1203 = fmul float %1202, %1192 %1204 = call float @llvm.minnum.f32(float %1203, float 0.000000e+00) %1205 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %1206 = load <16 x i8>, <16 x i8> addrspace(2)* %1205, align 16, !invariant.load !0 %1207 = call float @llvm.SI.load.const(<16 x i8> %1206, i32 232) %1208 = fmul float %1207, %883 %1209 = fadd float %1192, %1185 %1210 = fmul float %1204, %1204 %1211 = fmul float %1196, 0.000000e+00 %1212 = fadd float %1211, %1198 %1213 = fmul float %1200, 0.000000e+00 %1214 = fadd float %1212, %1213 %1215 = fmul float %1177, 0.000000e+00 %1216 = fadd float %1214, %1215 %1217 = call float @llvm.fabs.f32(float %1216) %1218 = fdiv float 1.000000e+00, %1217, !fpmath !1 %1219 = fmul float %1210, %1218 %1220 = fmul float %1187, %1209 %1221 = fsub float %1220, %1219 %1222 = fmul float %1208, %1221 %1223 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %1224 = load <16 x i8>, <16 x i8> addrspace(2)* %1223, align 16, !invariant.load !0 %1225 = call float @llvm.SI.load.const(<16 x i8> %1224, i32 228) %1226 = fmul float %1222, %1225 %1227 = fmul float %1226, 0x3FF7154760000000 %1228 = call float @llvm.exp2.f32(float %1227) %1229 = call float @llvm.AMDGPU.clamp.(float %1228, float 0.000000e+00, float 1.000000e+00) %1230 = fsub float 1.000000e+00, %1229 %1231 = call float @llvm.maxnum.f32(float %1170, float %1230) br label %endif338 endif338: ; preds = %if300, %endif269 %.08 = phi float [ %1231, %if300 ], [ %1170, %endif269 ] %1232 = call float @llvm.AMDGPU.clamp.(float %.08, float 0.000000e+00, float 1.000000e+00) %1233 = fsub float 1.000000e+00, %1232 %1234 = fmul float %1161, %1232 %1235 = fmul float %867, %1233 %1236 = fadd float %1234, %1235 %1237 = fsub float 1.000000e+00, %1232 %1238 = fmul float %1165, %1232 %1239 = fmul float %868, %1237 %1240 = fadd float %1238, %1239 %1241 = fsub float 1.000000e+00, %1232 %1242 = fmul float %1169, %1232 %1243 = fmul float %869, %1241 %1244 = fadd float %1242, %1243 %1245 = call float @llvm.AMDGPU.clamp.(float %.08, float 0.000000e+00, float 1.000000e+00) %1246 = fsub float 1.000000e+00, %1245 %1247 = fmul float %83, %1246 %1248 = bitcast float %5 to i32 %1249 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> undef, i32 %1248, 10 %1250 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %1249, float %1236, 11 %1251 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %1250, float %1240, 12 %1252 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %1251, float %1244, 13 %1253 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %1252, float %1247, 14 %1254 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %1253, float %21, 24 ret <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %1254 } ; Function Attrs: nounwind readnone declare float @llvm.SI.fs.interp(i32, i32, i32, <2 x i32>) #1 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.sqrt.f32(float) #1 ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.AMDGPU.clamp.(float, float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.maxnum.f32(float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.amdgcn.cubetc(float, float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.amdgcn.cubesc(float, float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.amdgcn.cubema(float, float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.amdgcn.cubeid(float, float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.fabs.f32(float) #1 ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.image.sample.b.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.pow.f32(float, float) #1 ; Function Attrs: nounwind declare void @llvm.AMDGPU.kill(float) #2 ; Function Attrs: nounwind readnone declare float @llvm.exp2.f32(float) #1 ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.image.sample.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.minnum.f32(float, float) #1 declare float @sqrtf(float) declare float @fabsf(float) attributes #0 = { "InitialPSInputAddr"="36983" } attributes #1 = { nounwind readnone } attributes #2 = { nounwind } !0 = !{} !1 = !{float 2.500000e+00} VERT PROPERTY NEXT_SHADER FRAG DCL IN[0] DCL IN[1] DCL IN[2] DCL IN[3] DCL IN[4] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] DCL OUT[2], GENERIC[1] DCL OUT[3], GENERIC[2] DCL OUT[4], GENERIC[3] DCL CONST[0..14] DCL TEMP[0..6], LOCAL 0: MAD TEMP[0].xy, IN[3].xyyy, CONST[9].xyyy, CONST[9].zwww 1: MAD TEMP[1].xy, IN[2].xyyy, CONST[10].xyyy, CONST[10].zwww 2: MOV TEMP[0].zw, TEMP[1].yyxy 3: MOV TEMP[1].x, CONST[4].xxxx 4: MOV TEMP[1].y, CONST[5].xxxx 5: MOV TEMP[1].z, CONST[6].xxxx 6: MOV TEMP[2].x, CONST[4].yyyy 7: MOV TEMP[2].y, CONST[5].yyyy 8: MOV TEMP[2].z, CONST[6].yyyy 9: MOV TEMP[3].x, CONST[4].zzzz 10: MOV TEMP[3].y, CONST[5].zzzz 11: MOV TEMP[3].z, CONST[6].zzzz 12: MUL TEMP[1].xyz, TEMP[1].xyzz, IN[1].xxxx 13: MAD TEMP[1].xyz, TEMP[2].xyzz, IN[1].yyyy, TEMP[1].xyzz 14: MAD TEMP[1].xyz, TEMP[3].xyzz, IN[1].zzzz, TEMP[1].xyzz 15: DP3 TEMP[2].x, TEMP[1].xyzz, TEMP[1].xyzz 16: RSQ TEMP[2].x, TEMP[2].xxxx 17: MUL TEMP[1].xyz, TEMP[1].xyzz, TEMP[2].xxxx 18: MUL TEMP[2].xyz, CONST[0].xyzz, IN[4].xxxx 19: MAD TEMP[2].xyz, CONST[1].xyzz, IN[4].yyyy, TEMP[2].xyzz 20: MAD TEMP[2].xyz, CONST[2].xyzz, IN[4].zzzz, TEMP[2].xyzz 21: DP3 TEMP[3].x, TEMP[2].xyzz, TEMP[2].xyzz 22: RSQ TEMP[3].x, TEMP[3].xxxx 23: MUL TEMP[2].xyz, TEMP[2].xyzz, TEMP[3].xxxx 24: MUL TEMP[3].xyz, TEMP[1].zxyy, TEMP[2].yzxx 25: MAD TEMP[3].xyz, TEMP[1].yzxx, TEMP[2].zxyy, -TEMP[3].xyzz 26: MUL TEMP[4].x, IN[4].wwww, CONST[8].wwww 27: MUL TEMP[3].xyz, TEMP[3].xyzz, TEMP[4].xxxx 28: MOV TEMP[4].x, TEMP[2].xxxx 29: MOV TEMP[4].y, TEMP[3].xxxx 30: MOV TEMP[4].z, TEMP[1].xxxx 31: MOV TEMP[5].y, TEMP[3].yyyy 32: MOV TEMP[5].z, TEMP[1].yyyy 33: MOV TEMP[6].x, TEMP[2].zzzz 34: MOV TEMP[6].y, TEMP[3].zzzz 35: MUL TEMP[3], CONST[11], IN[0].xxxx 36: MAD TEMP[3], CONST[12], IN[0].yyyy, TEMP[3] 37: MAD TEMP[3], CONST[13], IN[0].zzzz, TEMP[3] 38: MAD TEMP[3], CONST[14], IN[0].wwww, TEMP[3] 39: MOV TEMP[4].xyz, TEMP[4].xyzx 40: MOV TEMP[4].w, TEMP[2].yyyy 41: MOV TEMP[2].xy, TEMP[5].yzyy 42: MOV TEMP[2].zw, TEMP[6].yyxy 43: MOV TEMP[1].x, TEMP[1].zzzz 44: MUL TEMP[5], CONST[0], IN[0].xxxx 45: MAD TEMP[5], CONST[1], IN[0].yyyy, TEMP[5] 46: MAD TEMP[5], CONST[2], IN[0].zzzz, TEMP[5] 47: MAD TEMP[5].xyz, CONST[3], IN[0].wwww, TEMP[5] 48: MOV TEMP[1].yzw, TEMP[5].yxyz 49: MOV OUT[3], TEMP[2] 50: MOV OUT[0], TEMP[3] 51: MOV OUT[2], TEMP[4] 52: MOV OUT[1], TEMP[0] 53: MOV OUT[4], TEMP[1] 54: END radeonsi: Compiling shader 32 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_vs <{ float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32, i32, i32, i32, i32, i32, i32, i32, i32) { main_body: %19 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 0, !amdgpu.uniform !0 %20 = load <16 x i8>, <16 x i8> addrspace(2)* %19, align 16, !invariant.load !0 %21 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %20, i32 0, i32 %14) %22 = extractelement <4 x float> %21, i32 0 %23 = extractelement <4 x float> %21, i32 1 %24 = extractelement <4 x float> %21, i32 2 %25 = extractelement <4 x float> %21, i32 3 %26 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 1, !amdgpu.uniform !0 %27 = load <16 x i8>, <16 x i8> addrspace(2)* %26, align 16, !invariant.load !0 %28 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %27, i32 0, i32 %15) %29 = extractelement <4 x float> %28, i32 0 %30 = extractelement <4 x float> %28, i32 1 %31 = extractelement <4 x float> %28, i32 2 %32 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 2, !amdgpu.uniform !0 %33 = load <16 x i8>, <16 x i8> addrspace(2)* %32, align 16, !invariant.load !0 %34 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %33, i32 0, i32 %16) %35 = extractelement <4 x float> %34, i32 0 %36 = extractelement <4 x float> %34, i32 1 %37 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 3, !amdgpu.uniform !0 %38 = load <16 x i8>, <16 x i8> addrspace(2)* %37, align 16, !invariant.load !0 %39 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %38, i32 0, i32 %17) %40 = extractelement <4 x float> %39, i32 0 %41 = extractelement <4 x float> %39, i32 1 %42 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 4, !amdgpu.uniform !0 %43 = load <16 x i8>, <16 x i8> addrspace(2)* %42, align 16, !invariant.load !0 %44 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %43, i32 0, i32 %18) %45 = extractelement <4 x float> %44, i32 0 %46 = extractelement <4 x float> %44, i32 1 %47 = extractelement <4 x float> %44, i32 2 %48 = extractelement <4 x float> %44, i32 3 %49 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %50 = load <16 x i8>, <16 x i8> addrspace(2)* %49, align 16, !invariant.load !0 %51 = call float @llvm.SI.load.const(<16 x i8> %50, i32 144) %52 = call float @llvm.SI.load.const(<16 x i8> %50, i32 152) %53 = fmul float %40, %51 %54 = fadd float %53, %52 %55 = call float @llvm.SI.load.const(<16 x i8> %50, i32 148) %56 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %57 = load <16 x i8>, <16 x i8> addrspace(2)* %56, align 16, !invariant.load !0 %58 = call float @llvm.SI.load.const(<16 x i8> %57, i32 156) %59 = fmul float %41, %55 %60 = fadd float %59, %58 %61 = call float @llvm.SI.load.const(<16 x i8> %57, i32 160) %62 = call float @llvm.SI.load.const(<16 x i8> %57, i32 168) %63 = fmul float %35, %61 %64 = fadd float %63, %62 %65 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %66 = load <16 x i8>, <16 x i8> addrspace(2)* %65, align 16, !invariant.load !0 %67 = call float @llvm.SI.load.const(<16 x i8> %66, i32 164) %68 = call float @llvm.SI.load.const(<16 x i8> %66, i32 172) %69 = fmul float %36, %67 %70 = fadd float %69, %68 %71 = call float @llvm.SI.load.const(<16 x i8> %66, i32 64) %72 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %73 = load <16 x i8>, <16 x i8> addrspace(2)* %72, align 16, !invariant.load !0 %74 = call float @llvm.SI.load.const(<16 x i8> %73, i32 80) %75 = call float @llvm.SI.load.const(<16 x i8> %73, i32 96) %76 = call float @llvm.SI.load.const(<16 x i8> %73, i32 68) %77 = call float @llvm.SI.load.const(<16 x i8> %73, i32 84) %78 = call float @llvm.SI.load.const(<16 x i8> %73, i32 100) %79 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %80 = load <16 x i8>, <16 x i8> addrspace(2)* %79, align 16, !invariant.load !0 %81 = call float @llvm.SI.load.const(<16 x i8> %80, i32 72) %82 = call float @llvm.SI.load.const(<16 x i8> %80, i32 88) %83 = call float @llvm.SI.load.const(<16 x i8> %80, i32 104) %84 = fmul float %71, %29 %85 = fmul float %74, %29 %86 = fmul float %75, %29 %87 = fmul float %76, %30 %88 = fadd float %87, %84 %89 = fmul float %77, %30 %90 = fadd float %89, %85 %91 = fmul float %78, %30 %92 = fadd float %91, %86 %93 = fmul float %81, %31 %94 = fadd float %93, %88 %95 = fmul float %82, %31 %96 = fadd float %95, %90 %97 = fmul float %83, %31 %98 = fadd float %97, %92 %99 = fmul float %94, %94 %100 = fmul float %96, %96 %101 = fadd float %100, %99 %102 = fmul float %98, %98 %103 = fadd float %101, %102 %104 = call float @llvm.sqrt.f32(float %103) %105 = fdiv float 1.000000e+00, %104, !fpmath !1 %106 = fmul float %94, %105 %107 = fmul float %96, %105 %108 = fmul float %98, %105 %109 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %110 = load <16 x i8>, <16 x i8> addrspace(2)* %109, align 16, !invariant.load !0 %111 = call float @llvm.SI.load.const(<16 x i8> %110, i32 0) %112 = fmul float %111, %45 %113 = call float @llvm.SI.load.const(<16 x i8> %110, i32 4) %114 = fmul float %113, %45 %115 = call float @llvm.SI.load.const(<16 x i8> %110, i32 8) %116 = fmul float %115, %45 %117 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %118 = load <16 x i8>, <16 x i8> addrspace(2)* %117, align 16, !invariant.load !0 %119 = call float @llvm.SI.load.const(<16 x i8> %118, i32 16) %120 = fmul float %119, %46 %121 = fadd float %120, %112 %122 = call float @llvm.SI.load.const(<16 x i8> %118, i32 20) %123 = fmul float %122, %46 %124 = fadd float %123, %114 %125 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %126 = load <16 x i8>, <16 x i8> addrspace(2)* %125, align 16, !invariant.load !0 %127 = call float @llvm.SI.load.const(<16 x i8> %126, i32 24) %128 = fmul float %127, %46 %129 = fadd float %128, %116 %130 = call float @llvm.SI.load.const(<16 x i8> %126, i32 32) %131 = fmul float %130, %47 %132 = fadd float %131, %121 %133 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %134 = load <16 x i8>, <16 x i8> addrspace(2)* %133, align 16, !invariant.load !0 %135 = call float @llvm.SI.load.const(<16 x i8> %134, i32 36) %136 = fmul float %135, %47 %137 = fadd float %136, %124 %138 = call float @llvm.SI.load.const(<16 x i8> %134, i32 40) %139 = fmul float %138, %47 %140 = fadd float %139, %129 %141 = fmul float %132, %132 %142 = fmul float %137, %137 %143 = fadd float %142, %141 %144 = fmul float %140, %140 %145 = fadd float %143, %144 %146 = call float @llvm.sqrt.f32(float %145) %147 = fdiv float 1.000000e+00, %146, !fpmath !1 %148 = fmul float %132, %147 %149 = fmul float %137, %147 %150 = fmul float %140, %147 %151 = fmul float %108, %149 %152 = fmul float %106, %150 %153 = fmul float %107, %148 %154 = fmul float %107, %150 %155 = fsub float %154, %151 %156 = fmul float %108, %148 %157 = fsub float %156, %152 %158 = fmul float %106, %149 %159 = fsub float %158, %153 %160 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %161 = load <16 x i8>, <16 x i8> addrspace(2)* %160, align 16, !invariant.load !0 %162 = call float @llvm.SI.load.const(<16 x i8> %161, i32 140) %163 = fmul float %48, %162 %164 = fmul float %155, %163 %165 = fmul float %157, %163 %166 = fmul float %159, %163 %167 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %168 = load <16 x i8>, <16 x i8> addrspace(2)* %167, align 16, !invariant.load !0 %169 = call float @llvm.SI.load.const(<16 x i8> %168, i32 176) %170 = fmul float %169, %22 %171 = call float @llvm.SI.load.const(<16 x i8> %168, i32 180) %172 = fmul float %171, %22 %173 = call float @llvm.SI.load.const(<16 x i8> %168, i32 184) %174 = fmul float %173, %22 %175 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %176 = load <16 x i8>, <16 x i8> addrspace(2)* %175, align 16, !invariant.load !0 %177 = call float @llvm.SI.load.const(<16 x i8> %176, i32 188) %178 = fmul float %177, %22 %179 = call float @llvm.SI.load.const(<16 x i8> %176, i32 192) %180 = fmul float %179, %23 %181 = fadd float %180, %170 %182 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %183 = load <16 x i8>, <16 x i8> addrspace(2)* %182, align 16, !invariant.load !0 %184 = call float @llvm.SI.load.const(<16 x i8> %183, i32 196) %185 = fmul float %184, %23 %186 = fadd float %185, %172 %187 = call float @llvm.SI.load.const(<16 x i8> %183, i32 200) %188 = fmul float %187, %23 %189 = fadd float %188, %174 %190 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %191 = load <16 x i8>, <16 x i8> addrspace(2)* %190, align 16, !invariant.load !0 %192 = call float @llvm.SI.load.const(<16 x i8> %191, i32 204) %193 = fmul float %192, %23 %194 = fadd float %193, %178 %195 = call float @llvm.SI.load.const(<16 x i8> %191, i32 208) %196 = fmul float %195, %24 %197 = fadd float %196, %181 %198 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %199 = load <16 x i8>, <16 x i8> addrspace(2)* %198, align 16, !invariant.load !0 %200 = call float @llvm.SI.load.const(<16 x i8> %199, i32 212) %201 = fmul float %200, %24 %202 = fadd float %201, %186 %203 = call float @llvm.SI.load.const(<16 x i8> %199, i32 216) %204 = fmul float %203, %24 %205 = fadd float %204, %189 %206 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %207 = load <16 x i8>, <16 x i8> addrspace(2)* %206, align 16, !invariant.load !0 %208 = call float @llvm.SI.load.const(<16 x i8> %207, i32 220) %209 = fmul float %208, %24 %210 = fadd float %209, %194 %211 = call float @llvm.SI.load.const(<16 x i8> %207, i32 224) %212 = fmul float %211, %25 %213 = fadd float %212, %197 %214 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %215 = load <16 x i8>, <16 x i8> addrspace(2)* %214, align 16, !invariant.load !0 %216 = call float @llvm.SI.load.const(<16 x i8> %215, i32 228) %217 = fmul float %216, %25 %218 = fadd float %217, %202 %219 = call float @llvm.SI.load.const(<16 x i8> %215, i32 232) %220 = fmul float %219, %25 %221 = fadd float %220, %205 %222 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %223 = load <16 x i8>, <16 x i8> addrspace(2)* %222, align 16, !invariant.load !0 %224 = call float @llvm.SI.load.const(<16 x i8> %223, i32 236) %225 = fmul float %224, %25 %226 = fadd float %225, %210 %227 = call float @llvm.SI.load.const(<16 x i8> %223, i32 0) %228 = fmul float %227, %22 %229 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %230 = load <16 x i8>, <16 x i8> addrspace(2)* %229, align 16, !invariant.load !0 %231 = call float @llvm.SI.load.const(<16 x i8> %230, i32 4) %232 = fmul float %231, %22 %233 = call float @llvm.SI.load.const(<16 x i8> %230, i32 8) %234 = fmul float %233, %22 %235 = call float @llvm.SI.load.const(<16 x i8> %230, i32 16) %236 = fmul float %235, %23 %237 = fadd float %236, %228 %238 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %239 = load <16 x i8>, <16 x i8> addrspace(2)* %238, align 16, !invariant.load !0 %240 = call float @llvm.SI.load.const(<16 x i8> %239, i32 20) %241 = fmul float %240, %23 %242 = fadd float %241, %232 %243 = call float @llvm.SI.load.const(<16 x i8> %239, i32 24) %244 = fmul float %243, %23 %245 = fadd float %244, %234 %246 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %247 = load <16 x i8>, <16 x i8> addrspace(2)* %246, align 16, !invariant.load !0 %248 = call float @llvm.SI.load.const(<16 x i8> %247, i32 32) %249 = fmul float %248, %24 %250 = fadd float %249, %237 %251 = call float @llvm.SI.load.const(<16 x i8> %247, i32 36) %252 = fmul float %251, %24 %253 = fadd float %252, %242 %254 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %255 = load <16 x i8>, <16 x i8> addrspace(2)* %254, align 16, !invariant.load !0 %256 = call float @llvm.SI.load.const(<16 x i8> %255, i32 40) %257 = fmul float %256, %24 %258 = fadd float %257, %245 %259 = call float @llvm.SI.load.const(<16 x i8> %255, i32 48) %260 = fmul float %259, %25 %261 = fadd float %260, %250 %262 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %263 = load <16 x i8>, <16 x i8> addrspace(2)* %262, align 16, !invariant.load !0 %264 = call float @llvm.SI.load.const(<16 x i8> %263, i32 52) %265 = fmul float %264, %25 %266 = fadd float %265, %253 %267 = call float @llvm.SI.load.const(<16 x i8> %263, i32 56) %268 = fmul float %267, %25 %269 = fadd float %268, %258 %270 = bitcast i32 %12 to float %271 = insertvalue <{ float, float, float }> undef, float %270, 2 call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 32, i32 0, float %54, float %60, float %64, float %70) call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 33, i32 0, float %148, float %164, float %106, float %149) call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 34, i32 0, float %165, float %107, float %150, float %166) call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 35, i32 0, float %108, float %261, float %266, float %269) call void @llvm.SI.export(i32 15, i32 0, i32 1, i32 12, i32 0, float %213, float %218, float %221, float %226) ret <{ float, float, float }> %271 } ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.vs.load.input(<16 x i8>, i32, i32) #0 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #0 ; Function Attrs: nounwind readnone declare float @llvm.sqrt.f32(float) #0 ; Function Attrs: nounwind declare void @llvm.SI.export(i32, i32, i32, i32, i32, float, float, float, float) #1 attributes #0 = { nounwind readnone } attributes #1 = { nounwind } !0 = !{} !1 = !{float 2.500000e+00} FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL IN[1], GENERIC[1], PERSPECTIVE DCL IN[2], GENERIC[2], PERSPECTIVE DCL IN[3], GENERIC[3], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[2] DCL SAMP[3] DCL SAMP[4] DCL SAMP[5] DCL SAMP[6] DCL SVIEW[0], 2D, FLOAT DCL SVIEW[2], 2D, FLOAT DCL SVIEW[3], 2D, FLOAT DCL SVIEW[4], 2D, FLOAT DCL SVIEW[5], 2D, FLOAT DCL SVIEW[6], 2D, FLOAT DCL CONST[0..3] DCL CONST[5..9] DCL CONST[11..20] DCL CONST[26..27] DCL TEMP[0..15], LOCAL IMM[0] FLT32 { 0.0000, 2.0000, 1.0000, 0.5000} IMM[1] FLT32 { -1.0000, 0.0000, 6.0000, 0.0100} IMM[2] FLT32 { 16.0000, 0.0000, 0.0001, 64.0000} IMM[3] FLT32 { 0.3330, 1.4427, 0.0000, 0.0000} IMM[4] INT32 {1, 0, 0, 0} 0: MOV TEMP[0].x, IN[1].wwww 1: MOV TEMP[0].yz, IN[2].yxyy 2: MOV TEMP[1].xy, IN[2].zwzz 3: MOV TEMP[1].z, IN[3].xxxx 4: ADD TEMP[2].xyz, CONST[1].xyzz, -IN[3].yzww 5: DP3 TEMP[3].x, TEMP[2].xyzz, TEMP[2].xyzz 6: RSQ TEMP[3].x, TEMP[3].xxxx 7: MUL TEMP[2].xyz, TEMP[2].xyzz, TEMP[3].xxxx 8: ADD TEMP[3].xyz, CONST[0].xyzz, -IN[3].yzww 9: DP3 TEMP[4].x, TEMP[3].xyzz, TEMP[3].xyzz 10: RSQ TEMP[4].x, TEMP[4].xxxx 11: MUL TEMP[3].xyz, TEMP[3].xyzz, TEMP[4].xxxx 12: MUL TEMP[4].xyz, IN[1].xyzz, TEMP[3].xxxx 13: MAD TEMP[4].xyz, TEMP[0].xyzz, TEMP[3].yyyy, TEMP[4].xyzz 14: MAD TEMP[4].z, TEMP[1].xyzz, TEMP[3].zzzz, TEMP[4].xyzz 15: MOV TEMP[5].xy, IN[0].zwww 16: TEX TEMP[5], TEMP[5], SAMP[3], 2D 17: MOV TEMP[6].xy, IN[0].xyyy 18: TEX TEMP[6], TEMP[6], SAMP[6], 2D 19: MOV TEMP[7].xy, IN[0].zwww 20: TEX TEMP[7], TEMP[7], SAMP[4], 2D 21: MOV TEMP[8].xy, IN[0].xyyy 22: TEX TEMP[8], TEMP[8], SAMP[5], 2D 23: MOV TEMP[9].xy, IN[0].zwww 24: TEX TEMP[9].xyw, TEMP[9], SAMP[2], 2D 25: LRP TEMP[10].xyz, TEMP[6].wwww, TEMP[6].xyzz, TEMP[5].xyzz 26: MUL TEMP[10].xyz, TEMP[10].xyzz, CONST[26].xyzz 27: MUL TEMP[10].xyz, TEMP[10].xyzz, IMM[0].yyyy 28: MUL TEMP[11].xyz, TEMP[10].xyzz, CONST[15].xyzz 29: MUL TEMP[11].xyz, TEMP[11].xyzz, IMM[0].yyyy 30: ADD TEMP[12].xyz, IMM[0].zzzz, -TEMP[10].xyzz 31: MUL TEMP[12].xyz, IMM[0].yyyy, TEMP[12].xyzz 32: ADD TEMP[13].xyz, IMM[0].zzzz, -CONST[15].xyzz 33: MUL TEMP[12].xyz, TEMP[12].xyzz, TEMP[13].xyzz 34: ADD TEMP[12].xyz, IMM[0].zzzz, -TEMP[12].xyzz 35: FSGE TEMP[13].x, TEMP[10].xxxx, IMM[0].wwww 36: AND TEMP[13].x, TEMP[13].xxxx, IMM[0].zzzz 37: LRP TEMP[11].xyz, TEMP[13].xxxx, TEMP[12].xyzz, TEMP[11].xyzz 38: MUL TEMP[12].x, TEMP[8].xxxx, CONST[15].wwww 39: LRP TEMP[10].xyz, TEMP[12].xxxx, TEMP[11].xyzz, TEMP[10].xyzz 40: MUL TEMP[11].xyz, TEMP[10].xyzz, CONST[16].xyzz 41: MUL TEMP[11].xyz, TEMP[11].xyzz, IMM[0].yyyy 42: ADD TEMP[12].xyz, IMM[0].zzzz, -TEMP[10].xyzz 43: MUL TEMP[12].xyz, IMM[0].yyyy, TEMP[12].xyzz 44: ADD TEMP[13].xyz, IMM[0].zzzz, -CONST[16].xyzz 45: MUL TEMP[12].xyz, TEMP[12].xyzz, TEMP[13].xyzz 46: ADD TEMP[12].xyz, IMM[0].zzzz, -TEMP[12].xyzz 47: FSGE TEMP[13].x, TEMP[10].xxxx, IMM[0].wwww 48: AND TEMP[13].x, TEMP[13].xxxx, IMM[0].zzzz 49: LRP TEMP[11].xyz, TEMP[13].xxxx, TEMP[12].xyzz, TEMP[11].xyzz 50: MUL TEMP[12].x, TEMP[8].yyyy, CONST[16].wwww 51: LRP TEMP[10].xyz, TEMP[12].xxxx, TEMP[11].xyzz, TEMP[10].xyzz 52: MUL TEMP[11].xyz, TEMP[10].xyzz, CONST[17].xyzz 53: MUL TEMP[11].xyz, TEMP[11].xyzz, IMM[0].yyyy 54: ADD TEMP[12].xyz, IMM[0].zzzz, -TEMP[10].xyzz 55: MUL TEMP[12].xyz, IMM[0].yyyy, TEMP[12].xyzz 56: ADD TEMP[13].xyz, IMM[0].zzzz, -CONST[17].xyzz 57: MUL TEMP[12].xyz, TEMP[12].xyzz, TEMP[13].xyzz 58: ADD TEMP[12].xyz, IMM[0].zzzz, -TEMP[12].xyzz 59: FSGE TEMP[13].x, TEMP[10].xxxx, IMM[0].wwww 60: AND TEMP[13].x, TEMP[13].xxxx, IMM[0].zzzz 61: LRP TEMP[11].xyz, TEMP[13].xxxx, TEMP[12].xyzz, TEMP[11].xyzz 62: MUL TEMP[12].x, TEMP[8].zzzz, CONST[17].wwww 63: LRP TEMP[10].xyz, TEMP[12].xxxx, TEMP[11].xyzz, TEMP[10].xyzz 64: MAD TEMP[11].xyz, TEMP[7].xyzz, IMM[0].yyyy, IMM[1].xxxx 65: DP3 TEMP[12].x, TEMP[11].xyzz, TEMP[11].xyzz 66: RSQ TEMP[12].x, TEMP[12].xxxx 67: MUL TEMP[11].xyz, TEMP[11].xyzz, TEMP[12].xxxx 68: ADD TEMP[6].x, IMM[0].zzzz, -TEMP[6].wwww 69: MUL TEMP[6].x, TEMP[7].wwww, TEMP[6].xxxx 70: MOV_SAT TEMP[6].x, TEMP[6].xxxx 71: MAD TEMP[4].x, TEMP[4].zzzz, IMM[1].yyyy, TEMP[6].xxxx 72: MAX TEMP[7].x, TEMP[10].yyyy, TEMP[10].zzzz 73: MAX TEMP[7].x, TEMP[10].xxxx, TEMP[7].xxxx 74: MOV TEMP[12].xyz, IMM[0].zzzz 75: FSLT TEMP[13].x, IMM[1].wwww, TEMP[7].xxxx 76: UIF TEMP[13].xxxx :0 77: RCP TEMP[7].xyz, TEMP[7].xxxx 78: MUL TEMP[7].xyz, TEMP[10].xyzz, TEMP[7].xyzz 79: MOV_SAT TEMP[12].xyz, TEMP[7].xyzz 80: ENDIF 81: LRP TEMP[7].xyz, TEMP[9].xxxx, TEMP[12].xyzz, CONST[3].xyzz 82: MUL TEMP[12].x, TEMP[9].yyyy, TEMP[9].yyyy 83: MUL TEMP[6].x, TEMP[12].xxxx, IMM[2].xxxx 84: MUL TEMP[8].x, TEMP[9].wwww, TEMP[8].wwww 85: MAD TEMP[9].x, TEMP[6].xxxx, IMM[0].wwww, IMM[0].yyyy 86: FSLT TEMP[12].x, TEMP[5].wwww, CONST[27].xxxx 87: AND TEMP[12].x, TEMP[12].xxxx, IMM[0].zzzz 88: KILL_IF -TEMP[12].xxxx 89: MUL TEMP[12], CONST[5], IN[3].yyyy 90: MAD TEMP[12], CONST[6], IN[3].zzzz, TEMP[12] 91: MAD TEMP[12], CONST[7], IN[3].wwww, TEMP[12] 92: ADD TEMP[12].xyz, TEMP[12], CONST[8] 93: DP3 TEMP[13].x, IN[1].xyzz, TEMP[11].xyzz 94: DP3 TEMP[0].x, TEMP[0].xyzz, TEMP[11].xyzz 95: MOV TEMP[13].y, TEMP[0].xxxx 96: DP3 TEMP[0].x, TEMP[1].xyzz, TEMP[11].xyzz 97: MOV TEMP[13].z, TEMP[0].xxxx 98: DP3 TEMP[0].x, TEMP[12].xyzz, TEMP[12].xyzz 99: MOV TEMP[0].xy, TEMP[0].xxxx 100: TEX TEMP[0].w, TEMP[0], SAMP[0], 2D 101: MUL TEMP[0].xyz, CONST[2].xyzz, TEMP[0].wwww 102: DP3 TEMP[1].x, TEMP[13].xyzz, TEMP[13].xyzz 103: RSQ TEMP[1].x, TEMP[1].xxxx 104: MUL TEMP[1].xyz, TEMP[13].xyzz, TEMP[1].xxxx 105: DP3 TEMP[11].x, TEMP[2].xyzz, TEMP[2].xyzz 106: RSQ TEMP[11].x, TEMP[11].xxxx 107: MUL TEMP[2].xyz, TEMP[2].xyzz, TEMP[11].xxxx 108: DP3 TEMP[11].x, TEMP[3].xyzz, TEMP[3].xyzz 109: RSQ TEMP[11].x, TEMP[11].xxxx 110: MUL TEMP[3].xyz, TEMP[3].xyzz, TEMP[11].xxxx 111: DP3 TEMP[11].x, TEMP[1].xyzz, TEMP[2].xyzz 112: MAX TEMP[12].x, IMM[0].xxxx, TEMP[11].xxxx 113: MOV TEMP[13].x, IMM[0].xxxx 114: FSLT TEMP[14].x, IMM[0].xxxx, TEMP[4].xxxx 115: FSLT TEMP[15].x, IMM[0].xxxx, TEMP[6].xxxx 116: AND TEMP[14].x, TEMP[14].xxxx, TEMP[15].xxxx 117: UIF TEMP[14].xxxx :0 118: MOV TEMP[2].xyz, -TEMP[2].xyzx 119: DP3 TEMP[14].x, TEMP[1].xyzz, TEMP[2].xyzz 120: MUL TEMP[14].xyz, TEMP[14].xxxx, TEMP[1].xyzz 121: MUL TEMP[14].xyz, IMM[0].yyyy, TEMP[14].xyzz 122: ADD TEMP[2].xyz, TEMP[2].xyzz, -TEMP[14].xyzz 123: DP3 TEMP[2].x, TEMP[3].xyzz, TEMP[2].xyzz 124: MAX TEMP[2].x, IMM[1].yyyy, TEMP[2].xxxx 125: MUL TEMP[14].x, TEMP[12].xxxx, IMM[0].yyyy 126: SQRT TEMP[14].x, TEMP[14].xxxx 127: MOV_SAT TEMP[14].x, TEMP[14].xxxx 128: MUL TEMP[2].x, TEMP[2].xxxx, TEMP[14].xxxx 129: ADD TEMP[6].x, TEMP[6].xxxx, IMM[1].wwww 130: MUL TEMP[6].x, TEMP[6].xxxx, IMM[2].wwww 131: MAX TEMP[6].x, IMM[2].zzzz, TEMP[6].xxxx 132: POW TEMP[2].x, TEMP[2].xxxx, TEMP[6].xxxx 133: MUL TEMP[13].x, TEMP[2].xxxx, TEMP[4].xxxx 134: ENDIF 135: ADD TEMP[2].x, IMM[3].xxxx, -TEMP[11].xxxx 136: MOV_SAT TEMP[2].x, TEMP[2].xxxx 137: DP3 TEMP[1].x, TEMP[1].xyzz, TEMP[3].xyzz 138: MOV_SAT TEMP[1].x, TEMP[1].xxxx 139: ADD TEMP[1].x, IMM[0].zzzz, -TEMP[1].xxxx 140: MOV_SAT TEMP[1].x, TEMP[1].xxxx 141: MAX TEMP[3].x, IMM[2].zzzz, TEMP[9].xxxx 142: POW TEMP[1].x, TEMP[1].xxxx, TEMP[3].xxxx 143: MUL TEMP[1].x, TEMP[1].xxxx, TEMP[8].xxxx 144: MUL TEMP[2].x, TEMP[2].xxxx, TEMP[2].xxxx 145: MUL TEMP[1].x, TEMP[1].xxxx, TEMP[2].xxxx 146: MUL TEMP[2].xyz, TEMP[0].xyzz, TEMP[7].xyzz 147: MUL TEMP[3].xyz, TEMP[10].xyzz, TEMP[0].xyzz 148: MUL TEMP[3].xyz, TEMP[3].xyzz, TEMP[12].xxxx 149: MAD TEMP[2].xyz, TEMP[2].xyzz, TEMP[13].xxxx, TEMP[3].xyzz 150: MAD TEMP[0].xyz, TEMP[1].xxxx, TEMP[0].xyzz, TEMP[2].xyzz 151: ADD TEMP[1].xyz, IN[3].yzww, -CONST[0].xyzz 152: DP3 TEMP[1].x, TEMP[1].xyzz, TEMP[1].xyzz 153: SQRT TEMP[1].x, TEMP[1].xxxx 154: MOV TEMP[2].x, -CONST[14].xxxx 155: ADD TEMP[3].x, TEMP[1].xxxx, -CONST[13].xxxx 156: RCP TEMP[4].x, CONST[13].yyyy 157: MUL TEMP[3].x, TEMP[3].xxxx, TEMP[4].xxxx 158: MOV_SAT TEMP[3].x, TEMP[3].xxxx 159: MUL TEMP[3].x, TEMP[3].xxxx, TEMP[2].xxxx 160: MUL TEMP[3].x, TEMP[3].xxxx, IMM[3].yyyy 161: EX2 TEMP[3].x, TEMP[3].xxxx 162: ADD TEMP[3].x, IMM[0].zzzz, -TEMP[3].xxxx 163: MUL TEMP[2].x, TEMP[2].xxxx, IMM[3].yyyy 164: EX2 TEMP[2].x, TEMP[2].xxxx 165: ADD TEMP[2].x, IMM[0].zzzz, -TEMP[2].xxxx 166: RCP TEMP[2].x, TEMP[2].xxxx 167: MUL TEMP[2].x, TEMP[3].xxxx, TEMP[2].xxxx 168: MOV_SAT TEMP[2].x, TEMP[2].xxxx 169: MOV TEMP[3].w, TEMP[2].xxxx 170: FSLT TEMP[4].x, IMM[0].xxxx, CONST[11].yyyy 171: UIF TEMP[4].xxxx :0 172: MOV TEMP[4].xyz, IMM[0].xzxx 173: MOV TEMP[4].w, CONST[11].xxxx 174: MOV TEMP[6].w, IMM[0].zzzz 175: MOV TEMP[6].xyz, CONST[0].xyzx 176: DP4 TEMP[6].x, TEMP[4], TEMP[6] 177: FSGE TEMP[7].x, IMM[0].xxxx, TEMP[6].xxxx 178: UIF TEMP[7].xxxx :0 179: MOV TEMP[7].x, IMM[4].xxxx 180: ELSE :0 181: MOV TEMP[7].x, IMM[4].yyyy 182: ENDIF 183: I2F TEMP[7].x, TEMP[7].xxxx 184: MOV TEMP[8].w, IMM[0].zzzz 185: MOV TEMP[8].xyz, IN[3].yzwy 186: DP4 TEMP[8].x, TEMP[4], TEMP[8] 187: MOV TEMP[9].w, IMM[0].xxxx 188: ADD TEMP[9].xyz, CONST[0].xyzz, -IN[3].yzww 189: MUL TEMP[10].x, IMM[0].yyyy, TEMP[7].xxxx 190: ADD TEMP[10].x, IMM[0].zzzz, -TEMP[10].xxxx 191: MUL TEMP[10].x, TEMP[10].xxxx, TEMP[8].xxxx 192: MIN TEMP[10].x, IMM[0].xxxx, TEMP[10].xxxx 193: MUL TEMP[1].x, CONST[11].zzzz, TEMP[1].xxxx 194: ADD TEMP[6].x, TEMP[8].xxxx, TEMP[6].xxxx 195: MUL TEMP[8].x, TEMP[10].xxxx, TEMP[10].xxxx 196: DP4 TEMP[4].x, TEMP[4], TEMP[9] 197: ABS TEMP[4].x, TEMP[4].xxxx 198: RCP TEMP[4].x, TEMP[4].xxxx 199: MUL TEMP[4].x, TEMP[8].xxxx, TEMP[4].xxxx 200: MAD TEMP[4].x, TEMP[7].xxxx, TEMP[6].xxxx, -TEMP[4].xxxx 201: MUL TEMP[1].x, -TEMP[1].xxxx, TEMP[4].xxxx 202: MUL TEMP[1].x, -TEMP[1].xxxx, CONST[11].yyyy 203: MUL TEMP[1].x, TEMP[1].xxxx, IMM[3].yyyy 204: EX2 TEMP[1].x, TEMP[1].xxxx 205: MOV_SAT TEMP[1].x, TEMP[1].xxxx 206: ADD TEMP[1].x, IMM[0].zzzz, -TEMP[1].xxxx 207: MAX TEMP[1].x, TEMP[2].xxxx, TEMP[1].xxxx 208: MOV TEMP[3].w, TEMP[1].xxxx 209: ENDIF 210: MOV_SAT TEMP[1].x, TEMP[3].wwww 211: ADD TEMP[1].xyz, IMM[0].zzzz, -TEMP[1].xxxx 212: MUL TEMP[0].xyz, TEMP[0].xyzz, TEMP[1].xyzz 213: MOV_SAT TEMP[1].x, TEMP[3].wwww 214: ADD TEMP[1].x, IMM[0].zzzz, -TEMP[1].xxxx 215: MUL TEMP[1].x, TEMP[5].wwww, TEMP[1].xxxx 216: MOV TEMP[0].w, TEMP[1].xxxx 217: MOV OUT[0], TEMP[0] 218: END radeonsi: Compiling shader 33 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_ps <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), float inreg, i32 inreg, <2 x i32>, <2 x i32>, <2 x i32>, <3 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, float, float, float, float, float, i32, i32, float, i32) #0 { main_body: %23 = call float @llvm.SI.fs.interp(i32 3, i32 1, i32 %6, <2 x i32> %8) %24 = call float @llvm.SI.fs.interp(i32 0, i32 2, i32 %6, <2 x i32> %8) %25 = call float @llvm.SI.fs.interp(i32 1, i32 2, i32 %6, <2 x i32> %8) %26 = call float @llvm.SI.fs.interp(i32 2, i32 2, i32 %6, <2 x i32> %8) %27 = call float @llvm.SI.fs.interp(i32 3, i32 2, i32 %6, <2 x i32> %8) %28 = call float @llvm.SI.fs.interp(i32 0, i32 3, i32 %6, <2 x i32> %8) %29 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %30 = load <16 x i8>, <16 x i8> addrspace(2)* %29, align 16, !invariant.load !0 %31 = call float @llvm.SI.load.const(<16 x i8> %30, i32 16) %32 = call float @llvm.SI.fs.interp(i32 1, i32 3, i32 %6, <2 x i32> %8) %33 = fsub float %31, %32 %34 = call float @llvm.SI.load.const(<16 x i8> %30, i32 20) %35 = call float @llvm.SI.fs.interp(i32 2, i32 3, i32 %6, <2 x i32> %8) %36 = fsub float %34, %35 %37 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %38 = load <16 x i8>, <16 x i8> addrspace(2)* %37, align 16, !invariant.load !0 %39 = call float @llvm.SI.load.const(<16 x i8> %38, i32 24) %40 = call float @llvm.SI.fs.interp(i32 3, i32 3, i32 %6, <2 x i32> %8) %41 = fsub float %39, %40 %42 = fmul float %33, %33 %43 = fmul float %36, %36 %44 = fadd float %43, %42 %45 = fmul float %41, %41 %46 = fadd float %44, %45 %47 = call float @llvm.sqrt.f32(float %46) %48 = fdiv float 1.000000e+00, %47, !fpmath !1 %49 = fmul float %33, %48 %50 = fmul float %36, %48 %51 = fmul float %41, %48 %52 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %53 = load <16 x i8>, <16 x i8> addrspace(2)* %52, align 16, !invariant.load !0 %54 = call float @llvm.SI.load.const(<16 x i8> %53, i32 0) %55 = call float @llvm.SI.fs.interp(i32 1, i32 3, i32 %6, <2 x i32> %8) %56 = fsub float %54, %55 %57 = call float @llvm.SI.load.const(<16 x i8> %53, i32 4) %58 = call float @llvm.SI.fs.interp(i32 2, i32 3, i32 %6, <2 x i32> %8) %59 = fsub float %57, %58 %60 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %61 = load <16 x i8>, <16 x i8> addrspace(2)* %60, align 16, !invariant.load !0 %62 = call float @llvm.SI.load.const(<16 x i8> %61, i32 8) %63 = call float @llvm.SI.fs.interp(i32 3, i32 3, i32 %6, <2 x i32> %8) %64 = fsub float %62, %63 %65 = fmul float %56, %56 %66 = fmul float %59, %59 %67 = fadd float %66, %65 %68 = fmul float %64, %64 %69 = fadd float %67, %68 %70 = call float @llvm.sqrt.f32(float %69) %71 = fdiv float 1.000000e+00, %70, !fpmath !1 %72 = fmul float %56, %71 %73 = fmul float %59, %71 %74 = fmul float %64, %71 %75 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %76 = fmul float %75, %72 %77 = fmul float %25, %73 %78 = fadd float %77, %76 %79 = fmul float %28, %74 %80 = fadd float %79, %78 %81 = call float @llvm.SI.fs.interp(i32 2, i32 0, i32 %6, <2 x i32> %8) %82 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %6, <2 x i32> %8) %83 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 6, !amdgpu.uniform !0 %84 = load <8 x i32>, <8 x i32> addrspace(2)* %83, align 32, !invariant.load !0 %85 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %86 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %85, i64 0, i64 15, !amdgpu.uniform !0 %87 = load <4 x i32>, <4 x i32> addrspace(2)* %86, align 16, !invariant.load !0 %88 = bitcast float %81 to i32 %89 = bitcast float %82 to i32 %90 = insertelement <2 x i32> undef, i32 %88, i32 0 %91 = insertelement <2 x i32> %90, i32 %89, i32 1 %92 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %91, <8 x i32> %84, <4 x i32> %87, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %93 = extractelement <4 x float> %92, i32 0 %94 = extractelement <4 x float> %92, i32 1 %95 = extractelement <4 x float> %92, i32 2 %96 = extractelement <4 x float> %92, i32 3 %97 = call float @llvm.SI.fs.interp(i32 0, i32 0, i32 %6, <2 x i32> %8) %98 = call float @llvm.SI.fs.interp(i32 1, i32 0, i32 %6, <2 x i32> %8) %99 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 12, !amdgpu.uniform !0 %100 = load <8 x i32>, <8 x i32> addrspace(2)* %99, align 32, !invariant.load !0 %101 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %102 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %101, i64 0, i64 27, !amdgpu.uniform !0 %103 = load <4 x i32>, <4 x i32> addrspace(2)* %102, align 16, !invariant.load !0 %104 = bitcast float %97 to i32 %105 = bitcast float %98 to i32 %106 = insertelement <2 x i32> undef, i32 %104, i32 0 %107 = insertelement <2 x i32> %106, i32 %105, i32 1 %108 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %107, <8 x i32> %100, <4 x i32> %103, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %109 = extractelement <4 x float> %108, i32 0 %110 = extractelement <4 x float> %108, i32 1 %111 = extractelement <4 x float> %108, i32 2 %112 = extractelement <4 x float> %108, i32 3 %113 = call float @llvm.SI.fs.interp(i32 2, i32 0, i32 %6, <2 x i32> %8) %114 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %6, <2 x i32> %8) %115 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 8, !amdgpu.uniform !0 %116 = load <8 x i32>, <8 x i32> addrspace(2)* %115, align 32, !invariant.load !0 %117 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %118 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %117, i64 0, i64 19, !amdgpu.uniform !0 %119 = load <4 x i32>, <4 x i32> addrspace(2)* %118, align 16, !invariant.load !0 %120 = bitcast float %113 to i32 %121 = bitcast float %114 to i32 %122 = insertelement <2 x i32> undef, i32 %120, i32 0 %123 = insertelement <2 x i32> %122, i32 %121, i32 1 %124 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %123, <8 x i32> %116, <4 x i32> %119, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %125 = extractelement <4 x float> %124, i32 0 %126 = extractelement <4 x float> %124, i32 1 %127 = extractelement <4 x float> %124, i32 2 %128 = extractelement <4 x float> %124, i32 3 %129 = call float @llvm.SI.fs.interp(i32 0, i32 0, i32 %6, <2 x i32> %8) %130 = call float @llvm.SI.fs.interp(i32 1, i32 0, i32 %6, <2 x i32> %8) %131 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 10, !amdgpu.uniform !0 %132 = load <8 x i32>, <8 x i32> addrspace(2)* %131, align 32, !invariant.load !0 %133 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %134 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %133, i64 0, i64 23, !amdgpu.uniform !0 %135 = load <4 x i32>, <4 x i32> addrspace(2)* %134, align 16, !invariant.load !0 %136 = bitcast float %129 to i32 %137 = bitcast float %130 to i32 %138 = insertelement <2 x i32> undef, i32 %136, i32 0 %139 = insertelement <2 x i32> %138, i32 %137, i32 1 %140 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %139, <8 x i32> %132, <4 x i32> %135, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %141 = extractelement <4 x float> %140, i32 0 %142 = extractelement <4 x float> %140, i32 1 %143 = extractelement <4 x float> %140, i32 2 %144 = extractelement <4 x float> %140, i32 3 %145 = call float @llvm.SI.fs.interp(i32 2, i32 0, i32 %6, <2 x i32> %8) %146 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %6, <2 x i32> %8) %147 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 4, !amdgpu.uniform !0 %148 = load <8 x i32>, <8 x i32> addrspace(2)* %147, align 32, !invariant.load !0 %149 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %150 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %149, i64 0, i64 11, !amdgpu.uniform !0 %151 = load <4 x i32>, <4 x i32> addrspace(2)* %150, align 16, !invariant.load !0 %152 = bitcast float %145 to i32 %153 = bitcast float %146 to i32 %154 = insertelement <2 x i32> undef, i32 %152, i32 0 %155 = insertelement <2 x i32> %154, i32 %153, i32 1 %156 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %155, <8 x i32> %148, <4 x i32> %151, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %157 = extractelement <4 x float> %156, i32 0 %158 = extractelement <4 x float> %156, i32 1 %159 = extractelement <4 x float> %156, i32 3 %160 = fsub float 1.000000e+00, %112 %161 = fmul float %109, %112 %162 = fmul float %93, %160 %163 = fadd float %161, %162 %164 = fsub float 1.000000e+00, %112 %165 = fmul float %110, %112 %166 = fmul float %94, %164 %167 = fadd float %165, %166 %168 = fsub float 1.000000e+00, %112 %169 = fmul float %111, %112 %170 = fmul float %95, %168 %171 = fadd float %169, %170 %172 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %173 = load <16 x i8>, <16 x i8> addrspace(2)* %172, align 16, !invariant.load !0 %174 = call float @llvm.SI.load.const(<16 x i8> %173, i32 416) %175 = fmul float %163, %174 %176 = call float @llvm.SI.load.const(<16 x i8> %173, i32 420) %177 = fmul float %167, %176 %178 = call float @llvm.SI.load.const(<16 x i8> %173, i32 424) %179 = fmul float %171, %178 %180 = fmul float %175, 2.000000e+00 %181 = fmul float %177, 2.000000e+00 %182 = fmul float %179, 2.000000e+00 %183 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %184 = load <16 x i8>, <16 x i8> addrspace(2)* %183, align 16, !invariant.load !0 %185 = call float @llvm.SI.load.const(<16 x i8> %184, i32 240) %186 = fmul float %180, %185 %187 = call float @llvm.SI.load.const(<16 x i8> %184, i32 244) %188 = fmul float %181, %187 %189 = call float @llvm.SI.load.const(<16 x i8> %184, i32 248) %190 = fmul float %182, %189 %191 = fmul float %186, 2.000000e+00 %192 = fmul float %188, 2.000000e+00 %193 = fmul float %190, 2.000000e+00 %194 = fsub float 1.000000e+00, %180 %195 = fsub float 1.000000e+00, %181 %196 = fsub float 1.000000e+00, %182 %197 = fmul float %194, 2.000000e+00 %198 = fmul float %195, 2.000000e+00 %199 = fmul float %196, 2.000000e+00 %200 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %201 = load <16 x i8>, <16 x i8> addrspace(2)* %200, align 16, !invariant.load !0 %202 = call float @llvm.SI.load.const(<16 x i8> %201, i32 240) %203 = fsub float 1.000000e+00, %202 %204 = call float @llvm.SI.load.const(<16 x i8> %201, i32 244) %205 = fsub float 1.000000e+00, %204 %206 = call float @llvm.SI.load.const(<16 x i8> %201, i32 248) %207 = fsub float 1.000000e+00, %206 %208 = fmul float %197, %203 %209 = fmul float %198, %205 %210 = fmul float %199, %207 %211 = fsub float 1.000000e+00, %208 %212 = fsub float 1.000000e+00, %209 %213 = fsub float 1.000000e+00, %210 %214 = fcmp oge float %180, 5.000000e-01 %215 = select i1 %214, float 1.000000e+00, float 0.000000e+00 %216 = fsub float 1.000000e+00, %215 %217 = fmul float %211, %215 %218 = fmul float %191, %216 %219 = fadd float %217, %218 %220 = fsub float 1.000000e+00, %215 %221 = fmul float %212, %215 %222 = fmul float %192, %220 %223 = fadd float %221, %222 %224 = fsub float 1.000000e+00, %215 %225 = fmul float %213, %215 %226 = fmul float %193, %224 %227 = fadd float %225, %226 %228 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %229 = load <16 x i8>, <16 x i8> addrspace(2)* %228, align 16, !invariant.load !0 %230 = call float @llvm.SI.load.const(<16 x i8> %229, i32 252) %231 = fmul float %141, %230 %232 = fsub float 1.000000e+00, %231 %233 = fmul float %219, %231 %234 = fmul float %180, %232 %235 = fadd float %233, %234 %236 = fsub float 1.000000e+00, %231 %237 = fmul float %223, %231 %238 = fmul float %181, %236 %239 = fadd float %237, %238 %240 = fsub float 1.000000e+00, %231 %241 = fmul float %227, %231 %242 = fmul float %182, %240 %243 = fadd float %241, %242 %244 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %245 = load <16 x i8>, <16 x i8> addrspace(2)* %244, align 16, !invariant.load !0 %246 = call float @llvm.SI.load.const(<16 x i8> %245, i32 256) %247 = fmul float %235, %246 %248 = call float @llvm.SI.load.const(<16 x i8> %245, i32 260) %249 = fmul float %239, %248 %250 = call float @llvm.SI.load.const(<16 x i8> %245, i32 264) %251 = fmul float %243, %250 %252 = fmul float %247, 2.000000e+00 %253 = fmul float %249, 2.000000e+00 %254 = fmul float %251, 2.000000e+00 %255 = fsub float 1.000000e+00, %235 %256 = fsub float 1.000000e+00, %239 %257 = fsub float 1.000000e+00, %243 %258 = fmul float %255, 2.000000e+00 %259 = fmul float %256, 2.000000e+00 %260 = fmul float %257, 2.000000e+00 %261 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %262 = load <16 x i8>, <16 x i8> addrspace(2)* %261, align 16, !invariant.load !0 %263 = call float @llvm.SI.load.const(<16 x i8> %262, i32 256) %264 = fsub float 1.000000e+00, %263 %265 = call float @llvm.SI.load.const(<16 x i8> %262, i32 260) %266 = fsub float 1.000000e+00, %265 %267 = call float @llvm.SI.load.const(<16 x i8> %262, i32 264) %268 = fsub float 1.000000e+00, %267 %269 = fmul float %258, %264 %270 = fmul float %259, %266 %271 = fmul float %260, %268 %272 = fsub float 1.000000e+00, %269 %273 = fsub float 1.000000e+00, %270 %274 = fsub float 1.000000e+00, %271 %275 = fcmp oge float %235, 5.000000e-01 %276 = select i1 %275, float 1.000000e+00, float 0.000000e+00 %277 = fsub float 1.000000e+00, %276 %278 = fmul float %272, %276 %279 = fmul float %252, %277 %280 = fadd float %278, %279 %281 = fsub float 1.000000e+00, %276 %282 = fmul float %273, %276 %283 = fmul float %253, %281 %284 = fadd float %282, %283 %285 = fsub float 1.000000e+00, %276 %286 = fmul float %274, %276 %287 = fmul float %254, %285 %288 = fadd float %286, %287 %289 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %290 = load <16 x i8>, <16 x i8> addrspace(2)* %289, align 16, !invariant.load !0 %291 = call float @llvm.SI.load.const(<16 x i8> %290, i32 268) %292 = fmul float %142, %291 %293 = fsub float 1.000000e+00, %292 %294 = fmul float %280, %292 %295 = fmul float %235, %293 %296 = fadd float %294, %295 %297 = fsub float 1.000000e+00, %292 %298 = fmul float %284, %292 %299 = fmul float %239, %297 %300 = fadd float %298, %299 %301 = fsub float 1.000000e+00, %292 %302 = fmul float %288, %292 %303 = fmul float %243, %301 %304 = fadd float %302, %303 %305 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %306 = load <16 x i8>, <16 x i8> addrspace(2)* %305, align 16, !invariant.load !0 %307 = call float @llvm.SI.load.const(<16 x i8> %306, i32 272) %308 = fmul float %296, %307 %309 = call float @llvm.SI.load.const(<16 x i8> %306, i32 276) %310 = fmul float %300, %309 %311 = call float @llvm.SI.load.const(<16 x i8> %306, i32 280) %312 = fmul float %304, %311 %313 = fmul float %308, 2.000000e+00 %314 = fmul float %310, 2.000000e+00 %315 = fmul float %312, 2.000000e+00 %316 = fsub float 1.000000e+00, %296 %317 = fsub float 1.000000e+00, %300 %318 = fsub float 1.000000e+00, %304 %319 = fmul float %316, 2.000000e+00 %320 = fmul float %317, 2.000000e+00 %321 = fmul float %318, 2.000000e+00 %322 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %323 = load <16 x i8>, <16 x i8> addrspace(2)* %322, align 16, !invariant.load !0 %324 = call float @llvm.SI.load.const(<16 x i8> %323, i32 272) %325 = fsub float 1.000000e+00, %324 %326 = call float @llvm.SI.load.const(<16 x i8> %323, i32 276) %327 = fsub float 1.000000e+00, %326 %328 = call float @llvm.SI.load.const(<16 x i8> %323, i32 280) %329 = fsub float 1.000000e+00, %328 %330 = fmul float %319, %325 %331 = fmul float %320, %327 %332 = fmul float %321, %329 %333 = fsub float 1.000000e+00, %330 %334 = fsub float 1.000000e+00, %331 %335 = fsub float 1.000000e+00, %332 %336 = fcmp oge float %296, 5.000000e-01 %337 = select i1 %336, float 1.000000e+00, float 0.000000e+00 %338 = fsub float 1.000000e+00, %337 %339 = fmul float %333, %337 %340 = fmul float %313, %338 %341 = fadd float %339, %340 %342 = fsub float 1.000000e+00, %337 %343 = fmul float %334, %337 %344 = fmul float %314, %342 %345 = fadd float %343, %344 %346 = fsub float 1.000000e+00, %337 %347 = fmul float %335, %337 %348 = fmul float %315, %346 %349 = fadd float %347, %348 %350 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %351 = load <16 x i8>, <16 x i8> addrspace(2)* %350, align 16, !invariant.load !0 %352 = call float @llvm.SI.load.const(<16 x i8> %351, i32 284) %353 = fmul float %143, %352 %354 = fsub float 1.000000e+00, %353 %355 = fmul float %341, %353 %356 = fmul float %296, %354 %357 = fadd float %355, %356 %358 = fsub float 1.000000e+00, %353 %359 = fmul float %345, %353 %360 = fmul float %300, %358 %361 = fadd float %359, %360 %362 = fsub float 1.000000e+00, %353 %363 = fmul float %349, %353 %364 = fmul float %304, %362 %365 = fadd float %363, %364 %366 = fmul float %125, 2.000000e+00 %367 = fadd float %366, -1.000000e+00 %368 = fmul float %126, 2.000000e+00 %369 = fadd float %368, -1.000000e+00 %370 = fmul float %127, 2.000000e+00 %371 = fadd float %370, -1.000000e+00 %372 = fmul float %367, %367 %373 = fmul float %369, %369 %374 = fadd float %373, %372 %375 = fmul float %371, %371 %376 = fadd float %374, %375 %377 = call float @llvm.sqrt.f32(float %376) %378 = fdiv float 1.000000e+00, %377, !fpmath !1 %379 = fmul float %367, %378 %380 = fmul float %369, %378 %381 = fmul float %371, %378 %382 = fsub float 1.000000e+00, %112 %383 = fmul float %128, %382 %384 = call float @llvm.AMDGPU.clamp.(float %383, float 0.000000e+00, float 1.000000e+00) %385 = fmul float %80, 0x3EE4F8B580000000 %386 = fadd float %385, %384 %387 = call float @llvm.maxnum.f32(float %361, float %365) %388 = call float @llvm.maxnum.f32(float %357, float %387) %389 = fcmp ogt float %388, 0x3F847AE140000000 br i1 %389, label %if76, label %endif80 if76: ; preds = %main_body %390 = fdiv float 1.000000e+00, %388, !fpmath !1 %391 = fmul float %357, %390 %392 = fmul float %361, %390 %393 = fmul float %365, %390 %394 = call float @llvm.AMDGPU.clamp.(float %391, float 0.000000e+00, float 1.000000e+00) %395 = call float @llvm.AMDGPU.clamp.(float %392, float 0.000000e+00, float 1.000000e+00) %396 = call float @llvm.AMDGPU.clamp.(float %393, float 0.000000e+00, float 1.000000e+00) br label %endif80 endif80: ; preds = %if76, %main_body %.04 = phi float [ %394, %if76 ], [ 1.000000e+00, %main_body ] %.03 = phi float [ %395, %if76 ], [ 1.000000e+00, %main_body ] %.02 = phi float [ %396, %if76 ], [ 1.000000e+00, %main_body ] %397 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %398 = load <16 x i8>, <16 x i8> addrspace(2)* %397, align 16, !invariant.load !0 %399 = call float @llvm.SI.load.const(<16 x i8> %398, i32 48) %400 = fsub float 1.000000e+00, %157 %401 = fmul float %.04, %157 %402 = fmul float %399, %400 %403 = fadd float %401, %402 %404 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %405 = load <16 x i8>, <16 x i8> addrspace(2)* %404, align 16, !invariant.load !0 %406 = call float @llvm.SI.load.const(<16 x i8> %405, i32 52) %407 = fsub float 1.000000e+00, %157 %408 = fmul float %.03, %157 %409 = fmul float %406, %407 %410 = fadd float %408, %409 %411 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %412 = load <16 x i8>, <16 x i8> addrspace(2)* %411, align 16, !invariant.load !0 %413 = call float @llvm.SI.load.const(<16 x i8> %412, i32 56) %414 = fsub float 1.000000e+00, %157 %415 = fmul float %.02, %157 %416 = fmul float %413, %414 %417 = fadd float %415, %416 %418 = fmul float %158, %158 %419 = fmul float %418, 1.600000e+01 %420 = fmul float %159, %144 %421 = fmul float %419, 5.000000e-01 %422 = fadd float %421, 2.000000e+00 %423 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %424 = load <16 x i8>, <16 x i8> addrspace(2)* %423, align 16, !invariant.load !0 %425 = call float @llvm.SI.load.const(<16 x i8> %424, i32 432) %426 = fcmp olt float %96, %425 %427 = select i1 %426, float -1.000000e+00, float 0.000000e+00 call void @llvm.AMDGPU.kill(float %427) %428 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %429 = load <16 x i8>, <16 x i8> addrspace(2)* %428, align 16, !invariant.load !0 %430 = call float @llvm.SI.load.const(<16 x i8> %429, i32 80) %431 = call float @llvm.SI.fs.interp(i32 1, i32 3, i32 %6, <2 x i32> %8) %432 = fmul float %430, %431 %433 = call float @llvm.SI.load.const(<16 x i8> %429, i32 84) %434 = call float @llvm.SI.fs.interp(i32 1, i32 3, i32 %6, <2 x i32> %8) %435 = fmul float %433, %434 %436 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %437 = load <16 x i8>, <16 x i8> addrspace(2)* %436, align 16, !invariant.load !0 %438 = call float @llvm.SI.load.const(<16 x i8> %437, i32 88) %439 = call float @llvm.SI.fs.interp(i32 1, i32 3, i32 %6, <2 x i32> %8) %440 = fmul float %438, %439 %441 = call float @llvm.SI.load.const(<16 x i8> %437, i32 96) %442 = call float @llvm.SI.fs.interp(i32 2, i32 3, i32 %6, <2 x i32> %8) %443 = fmul float %441, %442 %444 = fadd float %443, %432 %445 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %446 = load <16 x i8>, <16 x i8> addrspace(2)* %445, align 16, !invariant.load !0 %447 = call float @llvm.SI.load.const(<16 x i8> %446, i32 100) %448 = call float @llvm.SI.fs.interp(i32 2, i32 3, i32 %6, <2 x i32> %8) %449 = fmul float %447, %448 %450 = fadd float %449, %435 %451 = call float @llvm.SI.load.const(<16 x i8> %446, i32 104) %452 = call float @llvm.SI.fs.interp(i32 2, i32 3, i32 %6, <2 x i32> %8) %453 = fmul float %451, %452 %454 = fadd float %453, %440 %455 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %456 = load <16 x i8>, <16 x i8> addrspace(2)* %455, align 16, !invariant.load !0 %457 = call float @llvm.SI.load.const(<16 x i8> %456, i32 112) %458 = call float @llvm.SI.fs.interp(i32 3, i32 3, i32 %6, <2 x i32> %8) %459 = fmul float %457, %458 %460 = fadd float %459, %444 %461 = call float @llvm.SI.load.const(<16 x i8> %456, i32 116) %462 = call float @llvm.SI.fs.interp(i32 3, i32 3, i32 %6, <2 x i32> %8) %463 = fmul float %461, %462 %464 = fadd float %463, %450 %465 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %466 = load <16 x i8>, <16 x i8> addrspace(2)* %465, align 16, !invariant.load !0 %467 = call float @llvm.SI.load.const(<16 x i8> %466, i32 120) %468 = call float @llvm.SI.fs.interp(i32 3, i32 3, i32 %6, <2 x i32> %8) %469 = fmul float %467, %468 %470 = fadd float %469, %454 %471 = call float @llvm.SI.load.const(<16 x i8> %466, i32 128) %472 = fadd float %460, %471 %473 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %474 = load <16 x i8>, <16 x i8> addrspace(2)* %473, align 16, !invariant.load !0 %475 = call float @llvm.SI.load.const(<16 x i8> %474, i32 132) %476 = fadd float %464, %475 %477 = call float @llvm.SI.load.const(<16 x i8> %474, i32 136) %478 = fadd float %470, %477 %479 = call float @llvm.SI.fs.interp(i32 0, i32 1, i32 %6, <2 x i32> %8) %480 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %481 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %482 = fmul float %479, %379 %483 = fmul float %480, %380 %484 = fadd float %483, %482 %485 = fmul float %481, %381 %486 = fadd float %484, %485 %487 = fmul float %23, %379 %488 = fmul float %24, %380 %489 = fadd float %488, %487 %490 = fmul float %25, %381 %491 = fadd float %489, %490 %492 = fmul float %26, %379 %493 = fmul float %27, %380 %494 = fadd float %493, %492 %495 = fmul float %28, %381 %496 = fadd float %494, %495 %497 = fmul float %472, %472 %498 = fmul float %476, %476 %499 = fadd float %498, %497 %500 = fmul float %478, %478 %501 = fadd float %499, %500 %502 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 0, !amdgpu.uniform !0 %503 = load <8 x i32>, <8 x i32> addrspace(2)* %502, align 32, !invariant.load !0 %504 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %505 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %504, i64 0, i64 3, !amdgpu.uniform !0 %506 = load <4 x i32>, <4 x i32> addrspace(2)* %505, align 16, !invariant.load !0 %507 = bitcast float %501 to i32 %508 = bitcast float %501 to i32 %509 = insertelement <2 x i32> undef, i32 %507, i32 0 %510 = insertelement <2 x i32> %509, i32 %508, i32 1 %511 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %510, <8 x i32> %503, <4 x i32> %506, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %512 = extractelement <4 x float> %511, i32 3 %513 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %514 = load <16 x i8>, <16 x i8> addrspace(2)* %513, align 16, !invariant.load !0 %515 = call float @llvm.SI.load.const(<16 x i8> %514, i32 32) %516 = fmul float %515, %512 %517 = call float @llvm.SI.load.const(<16 x i8> %514, i32 36) %518 = fmul float %517, %512 %519 = call float @llvm.SI.load.const(<16 x i8> %514, i32 40) %520 = fmul float %519, %512 %521 = fmul float %486, %486 %522 = fmul float %491, %491 %523 = fadd float %522, %521 %524 = fmul float %496, %496 %525 = fadd float %523, %524 %526 = call float @llvm.sqrt.f32(float %525) %527 = fdiv float 1.000000e+00, %526, !fpmath !1 %528 = fmul float %486, %527 %529 = fmul float %491, %527 %530 = fmul float %496, %527 %531 = fmul float %49, %49 %532 = fmul float %50, %50 %533 = fadd float %532, %531 %534 = fmul float %51, %51 %535 = fadd float %533, %534 %536 = call float @llvm.sqrt.f32(float %535) %537 = fdiv float 1.000000e+00, %536, !fpmath !1 %538 = fmul float %49, %537 %539 = fmul float %50, %537 %540 = fmul float %51, %537 %541 = fmul float %72, %72 %542 = fmul float %73, %73 %543 = fadd float %542, %541 %544 = fmul float %74, %74 %545 = fadd float %543, %544 %546 = call float @llvm.sqrt.f32(float %545) %547 = fdiv float 1.000000e+00, %546, !fpmath !1 %548 = fmul float %72, %547 %549 = fmul float %73, %547 %550 = fmul float %74, %547 %551 = fmul float %528, %538 %552 = fmul float %529, %539 %553 = fadd float %552, %551 %554 = fmul float %530, %540 %555 = fadd float %553, %554 %556 = call float @llvm.maxnum.f32(float %555, float 0.000000e+00) %557 = fcmp ogt float %386, 0.000000e+00 %558 = fcmp ogt float %419, 0.000000e+00 %559 = and i1 %557, %558 br i1 %559, label %if117, label %endif134 if117: ; preds = %endif80 %560 = fmul float %538, %528 %561 = fsub float -0.000000e+00, %560 %562 = fmul float %539, %529 %563 = fsub float %561, %562 %564 = fmul float %540, %530 %565 = fsub float %563, %564 %566 = fmul float %565, %528 %567 = fmul float %565, %529 %568 = fmul float %565, %530 %569 = fmul float %566, 2.000000e+00 %570 = fmul float %567, 2.000000e+00 %571 = fmul float %568, 2.000000e+00 %572 = fsub float -0.000000e+00, %569 %573 = fsub float %572, %538 %574 = fsub float -0.000000e+00, %570 %575 = fsub float %574, %539 %576 = fsub float -0.000000e+00, %571 %577 = fsub float %576, %540 %578 = fmul float %548, %573 %579 = fmul float %549, %575 %580 = fadd float %579, %578 %581 = fmul float %550, %577 %582 = fadd float %580, %581 %583 = call float @llvm.maxnum.f32(float %582, float 0x3EE4F8B580000000) %584 = fmul float %556, 2.000000e+00 %585 = call float @llvm.sqrt.f32(float %584) %586 = call float @llvm.AMDGPU.clamp.(float %585, float 0.000000e+00, float 1.000000e+00) %587 = fmul float %583, %586 %588 = fadd float %419, 0x3F847AE140000000 %589 = fmul float %588, 6.400000e+01 %590 = call float @llvm.maxnum.f32(float %589, float 0x3F1A36E2E0000000) %591 = call float @llvm.pow.f32(float %587, float %590) %592 = fmul float %591, %386 br label %endif134 endif134: ; preds = %if117, %endif80 %.0 = phi float [ %592, %if117 ], [ 0.000000e+00, %endif80 ] %593 = fsub float 0x3FD54FDF40000000, %555 %594 = call float @llvm.AMDGPU.clamp.(float %593, float 0.000000e+00, float 1.000000e+00) %595 = fmul float %528, %548 %596 = fmul float %529, %549 %597 = fadd float %596, %595 %598 = fmul float %530, %550 %599 = fadd float %597, %598 %600 = call float @llvm.AMDGPU.clamp.(float %599, float 0.000000e+00, float 1.000000e+00) %601 = fsub float 1.000000e+00, %600 %602 = call float @llvm.AMDGPU.clamp.(float %601, float 0.000000e+00, float 1.000000e+00) %603 = call float @llvm.maxnum.f32(float %422, float 0x3F1A36E2E0000000) %604 = call float @llvm.pow.f32(float %602, float %603) %605 = fmul float %604, %420 %606 = fmul float %594, %594 %607 = fmul float %605, %606 %608 = fmul float %516, %403 %609 = fmul float %518, %410 %610 = fmul float %520, %417 %611 = fmul float %357, %516 %612 = fmul float %361, %518 %613 = fmul float %365, %520 %614 = fmul float %611, %556 %615 = fmul float %612, %556 %616 = fmul float %613, %556 %617 = fmul float %608, %.0 %618 = fadd float %617, %614 %619 = fmul float %609, %.0 %620 = fadd float %619, %615 %621 = fmul float %610, %.0 %622 = fadd float %621, %616 %623 = fmul float %607, %516 %624 = fadd float %623, %618 %625 = fmul float %607, %518 %626 = fadd float %625, %620 %627 = fmul float %607, %520 %628 = fadd float %627, %622 %629 = call float @llvm.SI.fs.interp(i32 1, i32 3, i32 %6, <2 x i32> %8) %630 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %631 = load <16 x i8>, <16 x i8> addrspace(2)* %630, align 16, !invariant.load !0 %632 = call float @llvm.SI.load.const(<16 x i8> %631, i32 0) %633 = fsub float %629, %632 %634 = call float @llvm.SI.fs.interp(i32 2, i32 3, i32 %6, <2 x i32> %8) %635 = call float @llvm.SI.load.const(<16 x i8> %631, i32 4) %636 = fsub float %634, %635 %637 = call float @llvm.SI.fs.interp(i32 3, i32 3, i32 %6, <2 x i32> %8) %638 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %639 = load <16 x i8>, <16 x i8> addrspace(2)* %638, align 16, !invariant.load !0 %640 = call float @llvm.SI.load.const(<16 x i8> %639, i32 8) %641 = fsub float %637, %640 %642 = fmul float %633, %633 %643 = fmul float %636, %636 %644 = fadd float %643, %642 %645 = fmul float %641, %641 %646 = fadd float %644, %645 %647 = call float @llvm.sqrt.f32(float %646) %648 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %649 = load <16 x i8>, <16 x i8> addrspace(2)* %648, align 16, !invariant.load !0 %650 = call float @llvm.SI.load.const(<16 x i8> %649, i32 224) %651 = call float @llvm.SI.load.const(<16 x i8> %649, i32 208) %652 = fsub float %647, %651 %653 = call float @llvm.SI.load.const(<16 x i8> %649, i32 212) %654 = fdiv float 1.000000e+00, %653, !fpmath !1 %655 = fmul float %652, %654 %656 = call float @llvm.AMDGPU.clamp.(float %655, float 0.000000e+00, float 1.000000e+00) %657 = fmul float %650, %656 %658 = fmul float %657, 0xBFF7154760000000 %659 = call float @llvm.exp2.f32(float %658) %660 = fsub float 1.000000e+00, %659 %661 = fmul float %650, 0xBFF7154760000000 %662 = call float @llvm.exp2.f32(float %661) %663 = fsub float 1.000000e+00, %662 %664 = fdiv float 1.000000e+00, %663, !fpmath !1 %665 = fmul float %660, %664 %666 = call float @llvm.AMDGPU.clamp.(float %665, float 0.000000e+00, float 1.000000e+00) %667 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %668 = load <16 x i8>, <16 x i8> addrspace(2)* %667, align 16, !invariant.load !0 %669 = call float @llvm.SI.load.const(<16 x i8> %668, i32 180) %670 = fcmp ogt float %669, 0.000000e+00 br i1 %670, label %if171, label %endif209 if171: ; preds = %endif134 %671 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %672 = load <16 x i8>, <16 x i8> addrspace(2)* %671, align 16, !invariant.load !0 %673 = call float @llvm.SI.load.const(<16 x i8> %672, i32 176) %674 = call float @llvm.SI.load.const(<16 x i8> %672, i32 0) %675 = call float @llvm.SI.load.const(<16 x i8> %672, i32 4) %676 = call float @llvm.SI.load.const(<16 x i8> %672, i32 8) %677 = fmul float %674, 0.000000e+00 %678 = fadd float %677, %675 %679 = fmul float %676, 0.000000e+00 %680 = fadd float %678, %679 %681 = fadd float %680, %673 %682 = fcmp ole float %681, 0.000000e+00 %683 = uitofp i1 %682 to float %684 = call float @llvm.SI.fs.interp(i32 1, i32 3, i32 %6, <2 x i32> %8) %685 = call float @llvm.SI.fs.interp(i32 2, i32 3, i32 %6, <2 x i32> %8) %686 = call float @llvm.SI.fs.interp(i32 3, i32 3, i32 %6, <2 x i32> %8) %687 = fmul float %684, 0.000000e+00 %688 = fadd float %687, %685 %689 = fmul float %686, 0.000000e+00 %690 = fadd float %688, %689 %691 = fadd float %690, %673 %692 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %693 = load <16 x i8>, <16 x i8> addrspace(2)* %692, align 16, !invariant.load !0 %694 = call float @llvm.SI.load.const(<16 x i8> %693, i32 0) %695 = call float @llvm.SI.fs.interp(i32 1, i32 3, i32 %6, <2 x i32> %8) %696 = fsub float %694, %695 %697 = call float @llvm.SI.load.const(<16 x i8> %693, i32 4) %698 = call float @llvm.SI.fs.interp(i32 2, i32 3, i32 %6, <2 x i32> %8) %699 = fsub float %697, %698 %700 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %701 = load <16 x i8>, <16 x i8> addrspace(2)* %700, align 16, !invariant.load !0 %702 = call float @llvm.SI.load.const(<16 x i8> %701, i32 8) %703 = call float @llvm.SI.fs.interp(i32 3, i32 3, i32 %6, <2 x i32> %8) %704 = fsub float %702, %703 %705 = fmul float %683, 2.000000e+00 %706 = fsub float 1.000000e+00, %705 %707 = fmul float %706, %691 %708 = call float @llvm.minnum.f32(float %707, float 0.000000e+00) %709 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %710 = load <16 x i8>, <16 x i8> addrspace(2)* %709, align 16, !invariant.load !0 %711 = call float @llvm.SI.load.const(<16 x i8> %710, i32 184) %712 = fmul float %711, %647 %713 = fadd float %691, %681 %714 = fmul float %708, %708 %715 = fmul float %696, 0.000000e+00 %716 = fadd float %715, %699 %717 = fmul float %704, 0.000000e+00 %718 = fadd float %716, %717 %719 = fmul float %673, 0.000000e+00 %720 = fadd float %718, %719 %721 = call float @llvm.fabs.f32(float %720) %722 = fdiv float 1.000000e+00, %721, !fpmath !1 %723 = fmul float %714, %722 %724 = fmul float %683, %713 %725 = fsub float %724, %723 %726 = fmul float %712, %725 %727 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %728 = load <16 x i8>, <16 x i8> addrspace(2)* %727, align 16, !invariant.load !0 %729 = call float @llvm.SI.load.const(<16 x i8> %728, i32 180) %730 = fmul float %726, %729 %731 = fmul float %730, 0x3FF7154760000000 %732 = call float @llvm.exp2.f32(float %731) %733 = call float @llvm.AMDGPU.clamp.(float %732, float 0.000000e+00, float 1.000000e+00) %734 = fsub float 1.000000e+00, %733 %735 = call float @llvm.maxnum.f32(float %666, float %734) br label %endif209 endif209: ; preds = %if171, %endif134 %.06 = phi float [ %735, %if171 ], [ %666, %endif134 ] %736 = call float @llvm.AMDGPU.clamp.(float %.06, float 0.000000e+00, float 1.000000e+00) %737 = fsub float 1.000000e+00, %736 %738 = fsub float 1.000000e+00, %736 %739 = fsub float 1.000000e+00, %736 %740 = fmul float %624, %737 %741 = fmul float %626, %738 %742 = fmul float %628, %739 %743 = call float @llvm.AMDGPU.clamp.(float %.06, float 0.000000e+00, float 1.000000e+00) %744 = fsub float 1.000000e+00, %743 %745 = fmul float %96, %744 %746 = bitcast float %5 to i32 %747 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> undef, i32 %746, 10 %748 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %747, float %740, 11 %749 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %748, float %741, 12 %750 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %749, float %742, 13 %751 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %750, float %745, 14 %752 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %751, float %21, 24 ret <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %752 } ; Function Attrs: nounwind readnone declare float @llvm.SI.fs.interp(i32, i32, i32, <2 x i32>) #1 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.sqrt.f32(float) #1 ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.AMDGPU.clamp.(float, float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.maxnum.f32(float, float) #1 ; Function Attrs: nounwind declare void @llvm.AMDGPU.kill(float) #2 ; Function Attrs: nounwind readnone declare float @llvm.pow.f32(float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.exp2.f32(float) #1 ; Function Attrs: nounwind readnone declare float @llvm.minnum.f32(float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.fabs.f32(float) #1 attributes #0 = { "InitialPSInputAddr"="36983" } attributes #1 = { nounwind readnone } attributes #2 = { nounwind } !0 = !{} !1 = !{float 2.500000e+00} VERT PROPERTY NEXT_SHADER FRAG DCL IN[0] DCL IN[1] DCL IN[2] DCL IN[3] DCL IN[4] DCL IN[5] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] DCL OUT[2], GENERIC[1] DCL OUT[3], GENERIC[2] DCL OUT[4], GENERIC[3] DCL CONST[0..17] DCL TEMP[0..7], LOCAL IMM[0] FLT32 { 0.0000, 0.0001, 0.0000, 0.0000} 0: MOV TEMP[0].xyz, IN[0] 1: UIF CONST[11].xxxx :0 2: MAD TEMP[0].xy, IN[3].xyyy, CONST[9].xyyy, CONST[9].zwww 3: FSLT TEMP[1].x, IMM[0].xxxx, IN[0].zzzz 4: UIF TEMP[1].xxxx :0 5: MOV TEMP[1].x, IMM[0].yyyy 6: ELSE :0 7: MOV TEMP[1].x, IMM[0].xxxx 8: ENDIF 9: MOV TEMP[0].z, TEMP[1].xxxx 10: ENDIF 11: UIF CONST[11].yyyy :0 12: MAD TEMP[0].xy, IN[4].xyyy, CONST[10].xyyy, CONST[10].zwww 13: FSLT TEMP[1].x, IMM[0].xxxx, TEMP[0].zzzz 14: UIF TEMP[1].xxxx :0 15: MOV TEMP[1].x, IMM[0].yyyy 16: ELSE :0 17: MOV TEMP[1].x, IMM[0].xxxx 18: ENDIF 19: MOV TEMP[0].z, TEMP[1].xxxx 20: ENDIF 21: MAD TEMP[1].xy, IN[3].xyyy, CONST[12].xyyy, CONST[12].zwww 22: MAD TEMP[2].xy, IN[2].xyyy, CONST[13].xyyy, CONST[13].zwww 23: MOV TEMP[1].zw, TEMP[2].yyxy 24: MUL TEMP[2], CONST[0], IN[0].xxxx 25: MAD TEMP[2], CONST[1], IN[0].yyyy, TEMP[2] 26: MAD TEMP[2], CONST[2], IN[0].zzzz, TEMP[2] 27: MAD TEMP[2].xyz, CONST[3], IN[0].wwww, TEMP[2] 28: MOV TEMP[3].x, CONST[4].xxxx 29: MOV TEMP[3].y, CONST[5].xxxx 30: MOV TEMP[3].z, CONST[6].xxxx 31: MOV TEMP[4].x, CONST[4].yyyy 32: MOV TEMP[4].y, CONST[5].yyyy 33: MOV TEMP[4].z, CONST[6].yyyy 34: MOV TEMP[5].x, CONST[4].zzzz 35: MOV TEMP[5].y, CONST[5].zzzz 36: MOV TEMP[5].z, CONST[6].zzzz 37: MUL TEMP[3].xyz, TEMP[3].xyzz, IN[1].xxxx 38: MAD TEMP[3].xyz, TEMP[4].xyzz, IN[1].yyyy, TEMP[3].xyzz 39: MAD TEMP[3].xyz, TEMP[5].xyzz, IN[1].zzzz, TEMP[3].xyzz 40: DP3 TEMP[4].x, TEMP[3].xyzz, TEMP[3].xyzz 41: RSQ TEMP[4].x, TEMP[4].xxxx 42: MUL TEMP[3].xyz, TEMP[3].xyzz, TEMP[4].xxxx 43: MUL TEMP[4].xyz, CONST[0].xyzz, IN[5].xxxx 44: MAD TEMP[4].xyz, CONST[1].xyzz, IN[5].yyyy, TEMP[4].xyzz 45: MAD TEMP[4].xyz, CONST[2].xyzz, IN[5].zzzz, TEMP[4].xyzz 46: DP3 TEMP[5].x, TEMP[4].xyzz, TEMP[4].xyzz 47: RSQ TEMP[5].x, TEMP[5].xxxx 48: MUL TEMP[4].xyz, TEMP[4].xyzz, TEMP[5].xxxx 49: MUL TEMP[5].xyz, TEMP[3].zxyy, TEMP[4].yzxx 50: MAD TEMP[5].xyz, TEMP[3].yzxx, TEMP[4].zxyy, -TEMP[5].xyzz 51: MUL TEMP[6].x, IN[5].wwww, CONST[8].wwww 52: MUL TEMP[5].xyz, TEMP[5].xyzz, TEMP[6].xxxx 53: MOV TEMP[6].x, TEMP[4].xxxx 54: MOV TEMP[6].y, TEMP[5].xxxx 55: MOV TEMP[6].z, TEMP[3].xxxx 56: MOV TEMP[6].w, TEMP[2].xxxx 57: MOV TEMP[7].x, TEMP[4].yyyy 58: MOV TEMP[7].y, TEMP[5].yyyy 59: MOV TEMP[7].z, TEMP[3].yyyy 60: MOV TEMP[7].w, TEMP[2].yyyy 61: MOV TEMP[4].x, TEMP[4].zzzz 62: MOV TEMP[4].y, TEMP[5].zzzz 63: MOV TEMP[4].z, TEMP[3].zzzz 64: MOV TEMP[4].w, TEMP[2].zzzz 65: MUL TEMP[2], CONST[14], TEMP[0].xxxx 66: MAD TEMP[2], CONST[15], TEMP[0].yyyy, TEMP[2] 67: MAD TEMP[0], CONST[16], TEMP[0].zzzz, TEMP[2] 68: MAD TEMP[0], CONST[17], IN[0].wwww, TEMP[0] 69: MOV OUT[4], TEMP[4] 70: MOV OUT[0], TEMP[0] 71: MOV OUT[1], TEMP[1] 72: MOV OUT[2], TEMP[6] 73: MOV OUT[3], TEMP[7] 74: END radeonsi: Compiling shader 34 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_vs <{ float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) { main_body: %20 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 0, !amdgpu.uniform !0 %21 = load <16 x i8>, <16 x i8> addrspace(2)* %20, align 16, !invariant.load !0 %22 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %21, i32 0, i32 %14) %23 = extractelement <4 x float> %22, i32 0 %24 = extractelement <4 x float> %22, i32 1 %25 = extractelement <4 x float> %22, i32 2 %26 = extractelement <4 x float> %22, i32 3 %27 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 1, !amdgpu.uniform !0 %28 = load <16 x i8>, <16 x i8> addrspace(2)* %27, align 16, !invariant.load !0 %29 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %28, i32 0, i32 %15) %30 = extractelement <4 x float> %29, i32 0 %31 = extractelement <4 x float> %29, i32 1 %32 = extractelement <4 x float> %29, i32 2 %33 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 2, !amdgpu.uniform !0 %34 = load <16 x i8>, <16 x i8> addrspace(2)* %33, align 16, !invariant.load !0 %35 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %34, i32 0, i32 %16) %36 = extractelement <4 x float> %35, i32 0 %37 = extractelement <4 x float> %35, i32 1 %38 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 3, !amdgpu.uniform !0 %39 = load <16 x i8>, <16 x i8> addrspace(2)* %38, align 16, !invariant.load !0 %40 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %39, i32 0, i32 %17) %41 = extractelement <4 x float> %40, i32 0 %42 = extractelement <4 x float> %40, i32 1 %43 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 4, !amdgpu.uniform !0 %44 = load <16 x i8>, <16 x i8> addrspace(2)* %43, align 16, !invariant.load !0 %45 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %44, i32 0, i32 %18) %46 = extractelement <4 x float> %45, i32 0 %47 = extractelement <4 x float> %45, i32 1 %48 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 5, !amdgpu.uniform !0 %49 = load <16 x i8>, <16 x i8> addrspace(2)* %48, align 16, !invariant.load !0 %50 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %49, i32 0, i32 %19) %51 = extractelement <4 x float> %50, i32 0 %52 = extractelement <4 x float> %50, i32 1 %53 = extractelement <4 x float> %50, i32 2 %54 = extractelement <4 x float> %50, i32 3 %55 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %56 = load <16 x i8>, <16 x i8> addrspace(2)* %55, align 16, !invariant.load !0 %57 = call float @llvm.SI.load.const(<16 x i8> %56, i32 176) %58 = bitcast float %57 to i32 %59 = icmp eq i32 %58, 0 br i1 %59, label %endif10, label %if1 if1: ; preds = %main_body %60 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %61 = load <16 x i8>, <16 x i8> addrspace(2)* %60, align 16, !invariant.load !0 %62 = call float @llvm.SI.load.const(<16 x i8> %61, i32 144) %63 = call float @llvm.SI.load.const(<16 x i8> %61, i32 152) %64 = fmul float %41, %62 %65 = fadd float %64, %63 %66 = call float @llvm.SI.load.const(<16 x i8> %61, i32 148) %67 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %68 = load <16 x i8>, <16 x i8> addrspace(2)* %67, align 16, !invariant.load !0 %69 = call float @llvm.SI.load.const(<16 x i8> %68, i32 156) %70 = fmul float %42, %66 %71 = fadd float %70, %69 %72 = fcmp ogt float %25, 0.000000e+00 %. = select i1 %72, float 0x3F1A36E2E0000000, float 0.000000e+00 br label %endif10 endif10: ; preds = %main_body, %if1 %.05 = phi float [ %., %if1 ], [ %25, %main_body ] %.03 = phi float [ %71, %if1 ], [ %24, %main_body ] %.0 = phi float [ %65, %if1 ], [ %23, %main_body ] %73 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %74 = load <16 x i8>, <16 x i8> addrspace(2)* %73, align 16, !invariant.load !0 %75 = call float @llvm.SI.load.const(<16 x i8> %74, i32 180) %76 = bitcast float %75 to i32 %77 = icmp eq i32 %76, 0 br i1 %77, label %endif20, label %if11 if11: ; preds = %endif10 %78 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %79 = load <16 x i8>, <16 x i8> addrspace(2)* %78, align 16, !invariant.load !0 %80 = call float @llvm.SI.load.const(<16 x i8> %79, i32 160) %81 = call float @llvm.SI.load.const(<16 x i8> %79, i32 168) %82 = fmul float %46, %80 %83 = fadd float %82, %81 %84 = call float @llvm.SI.load.const(<16 x i8> %79, i32 164) %85 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %86 = load <16 x i8>, <16 x i8> addrspace(2)* %85, align 16, !invariant.load !0 %87 = call float @llvm.SI.load.const(<16 x i8> %86, i32 172) %88 = fmul float %47, %84 %89 = fadd float %88, %87 %90 = fcmp ogt float %.05, 0.000000e+00 %.9 = select i1 %90, float 0x3F1A36E2E0000000, float 0.000000e+00 br label %endif20 endif20: ; preds = %endif10, %if11 %.16 = phi float [ %.9, %if11 ], [ %.05, %endif10 ] %.14 = phi float [ %89, %if11 ], [ %.03, %endif10 ] %.1 = phi float [ %83, %if11 ], [ %.0, %endif10 ] %91 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %92 = load <16 x i8>, <16 x i8> addrspace(2)* %91, align 16, !invariant.load !0 %93 = call float @llvm.SI.load.const(<16 x i8> %92, i32 192) %94 = call float @llvm.SI.load.const(<16 x i8> %92, i32 200) %95 = fmul float %41, %93 %96 = fadd float %95, %94 %97 = call float @llvm.SI.load.const(<16 x i8> %92, i32 196) %98 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %99 = load <16 x i8>, <16 x i8> addrspace(2)* %98, align 16, !invariant.load !0 %100 = call float @llvm.SI.load.const(<16 x i8> %99, i32 204) %101 = fmul float %42, %97 %102 = fadd float %101, %100 %103 = call float @llvm.SI.load.const(<16 x i8> %99, i32 208) %104 = call float @llvm.SI.load.const(<16 x i8> %99, i32 216) %105 = fmul float %36, %103 %106 = fadd float %105, %104 %107 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %108 = load <16 x i8>, <16 x i8> addrspace(2)* %107, align 16, !invariant.load !0 %109 = call float @llvm.SI.load.const(<16 x i8> %108, i32 212) %110 = call float @llvm.SI.load.const(<16 x i8> %108, i32 220) %111 = fmul float %37, %109 %112 = fadd float %111, %110 %113 = call float @llvm.SI.load.const(<16 x i8> %108, i32 0) %114 = fmul float %113, %23 %115 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %116 = load <16 x i8>, <16 x i8> addrspace(2)* %115, align 16, !invariant.load !0 %117 = call float @llvm.SI.load.const(<16 x i8> %116, i32 4) %118 = fmul float %117, %23 %119 = call float @llvm.SI.load.const(<16 x i8> %116, i32 8) %120 = fmul float %119, %23 %121 = call float @llvm.SI.load.const(<16 x i8> %116, i32 16) %122 = fmul float %121, %24 %123 = fadd float %122, %114 %124 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %125 = load <16 x i8>, <16 x i8> addrspace(2)* %124, align 16, !invariant.load !0 %126 = call float @llvm.SI.load.const(<16 x i8> %125, i32 20) %127 = fmul float %126, %24 %128 = fadd float %127, %118 %129 = call float @llvm.SI.load.const(<16 x i8> %125, i32 24) %130 = fmul float %129, %24 %131 = fadd float %130, %120 %132 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %133 = load <16 x i8>, <16 x i8> addrspace(2)* %132, align 16, !invariant.load !0 %134 = call float @llvm.SI.load.const(<16 x i8> %133, i32 32) %135 = fmul float %134, %25 %136 = fadd float %135, %123 %137 = call float @llvm.SI.load.const(<16 x i8> %133, i32 36) %138 = fmul float %137, %25 %139 = fadd float %138, %128 %140 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %141 = load <16 x i8>, <16 x i8> addrspace(2)* %140, align 16, !invariant.load !0 %142 = call float @llvm.SI.load.const(<16 x i8> %141, i32 40) %143 = fmul float %142, %25 %144 = fadd float %143, %131 %145 = call float @llvm.SI.load.const(<16 x i8> %141, i32 48) %146 = fmul float %145, %26 %147 = fadd float %146, %136 %148 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %149 = load <16 x i8>, <16 x i8> addrspace(2)* %148, align 16, !invariant.load !0 %150 = call float @llvm.SI.load.const(<16 x i8> %149, i32 52) %151 = fmul float %150, %26 %152 = fadd float %151, %139 %153 = call float @llvm.SI.load.const(<16 x i8> %149, i32 56) %154 = fmul float %153, %26 %155 = fadd float %154, %144 %156 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %157 = load <16 x i8>, <16 x i8> addrspace(2)* %156, align 16, !invariant.load !0 %158 = call float @llvm.SI.load.const(<16 x i8> %157, i32 64) %159 = call float @llvm.SI.load.const(<16 x i8> %157, i32 80) %160 = call float @llvm.SI.load.const(<16 x i8> %157, i32 96) %161 = call float @llvm.SI.load.const(<16 x i8> %157, i32 68) %162 = call float @llvm.SI.load.const(<16 x i8> %157, i32 84) %163 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %164 = load <16 x i8>, <16 x i8> addrspace(2)* %163, align 16, !invariant.load !0 %165 = call float @llvm.SI.load.const(<16 x i8> %164, i32 100) %166 = call float @llvm.SI.load.const(<16 x i8> %164, i32 72) %167 = call float @llvm.SI.load.const(<16 x i8> %164, i32 88) %168 = call float @llvm.SI.load.const(<16 x i8> %164, i32 104) %169 = fmul float %158, %30 %170 = fmul float %159, %30 %171 = fmul float %160, %30 %172 = fmul float %161, %31 %173 = fadd float %172, %169 %174 = fmul float %162, %31 %175 = fadd float %174, %170 %176 = fmul float %165, %31 %177 = fadd float %176, %171 %178 = fmul float %166, %32 %179 = fadd float %178, %173 %180 = fmul float %167, %32 %181 = fadd float %180, %175 %182 = fmul float %168, %32 %183 = fadd float %182, %177 %184 = fmul float %179, %179 %185 = fmul float %181, %181 %186 = fadd float %185, %184 %187 = fmul float %183, %183 %188 = fadd float %186, %187 %189 = call float @llvm.sqrt.f32(float %188) %190 = fdiv float 1.000000e+00, %189, !fpmath !1 %191 = fmul float %179, %190 %192 = fmul float %181, %190 %193 = fmul float %183, %190 %194 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %195 = load <16 x i8>, <16 x i8> addrspace(2)* %194, align 16, !invariant.load !0 %196 = call float @llvm.SI.load.const(<16 x i8> %195, i32 0) %197 = fmul float %196, %51 %198 = call float @llvm.SI.load.const(<16 x i8> %195, i32 4) %199 = fmul float %198, %51 %200 = call float @llvm.SI.load.const(<16 x i8> %195, i32 8) %201 = fmul float %200, %51 %202 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %203 = load <16 x i8>, <16 x i8> addrspace(2)* %202, align 16, !invariant.load !0 %204 = call float @llvm.SI.load.const(<16 x i8> %203, i32 16) %205 = fmul float %204, %52 %206 = fadd float %205, %197 %207 = call float @llvm.SI.load.const(<16 x i8> %203, i32 20) %208 = fmul float %207, %52 %209 = fadd float %208, %199 %210 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %211 = load <16 x i8>, <16 x i8> addrspace(2)* %210, align 16, !invariant.load !0 %212 = call float @llvm.SI.load.const(<16 x i8> %211, i32 24) %213 = fmul float %212, %52 %214 = fadd float %213, %201 %215 = call float @llvm.SI.load.const(<16 x i8> %211, i32 32) %216 = fmul float %215, %53 %217 = fadd float %216, %206 %218 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %219 = load <16 x i8>, <16 x i8> addrspace(2)* %218, align 16, !invariant.load !0 %220 = call float @llvm.SI.load.const(<16 x i8> %219, i32 36) %221 = fmul float %220, %53 %222 = fadd float %221, %209 %223 = call float @llvm.SI.load.const(<16 x i8> %219, i32 40) %224 = fmul float %223, %53 %225 = fadd float %224, %214 %226 = fmul float %217, %217 %227 = fmul float %222, %222 %228 = fadd float %227, %226 %229 = fmul float %225, %225 %230 = fadd float %228, %229 %231 = call float @llvm.sqrt.f32(float %230) %232 = fdiv float 1.000000e+00, %231, !fpmath !1 %233 = fmul float %217, %232 %234 = fmul float %222, %232 %235 = fmul float %225, %232 %236 = fmul float %193, %234 %237 = fmul float %191, %235 %238 = fmul float %192, %233 %239 = fmul float %192, %235 %240 = fsub float %239, %236 %241 = fmul float %193, %233 %242 = fsub float %241, %237 %243 = fmul float %191, %234 %244 = fsub float %243, %238 %245 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %246 = load <16 x i8>, <16 x i8> addrspace(2)* %245, align 16, !invariant.load !0 %247 = call float @llvm.SI.load.const(<16 x i8> %246, i32 140) %248 = fmul float %54, %247 %249 = fmul float %240, %248 %250 = fmul float %242, %248 %251 = fmul float %244, %248 %252 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %253 = load <16 x i8>, <16 x i8> addrspace(2)* %252, align 16, !invariant.load !0 %254 = call float @llvm.SI.load.const(<16 x i8> %253, i32 224) %255 = fmul float %254, %.1 %256 = call float @llvm.SI.load.const(<16 x i8> %253, i32 228) %257 = fmul float %256, %.1 %258 = call float @llvm.SI.load.const(<16 x i8> %253, i32 232) %259 = fmul float %258, %.1 %260 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %261 = load <16 x i8>, <16 x i8> addrspace(2)* %260, align 16, !invariant.load !0 %262 = call float @llvm.SI.load.const(<16 x i8> %261, i32 236) %263 = fmul float %262, %.1 %264 = call float @llvm.SI.load.const(<16 x i8> %261, i32 240) %265 = fmul float %264, %.14 %266 = fadd float %265, %255 %267 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %268 = load <16 x i8>, <16 x i8> addrspace(2)* %267, align 16, !invariant.load !0 %269 = call float @llvm.SI.load.const(<16 x i8> %268, i32 244) %270 = fmul float %269, %.14 %271 = fadd float %270, %257 %272 = call float @llvm.SI.load.const(<16 x i8> %268, i32 248) %273 = fmul float %272, %.14 %274 = fadd float %273, %259 %275 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %276 = load <16 x i8>, <16 x i8> addrspace(2)* %275, align 16, !invariant.load !0 %277 = call float @llvm.SI.load.const(<16 x i8> %276, i32 252) %278 = fmul float %277, %.14 %279 = fadd float %278, %263 %280 = call float @llvm.SI.load.const(<16 x i8> %276, i32 256) %281 = fmul float %280, %.16 %282 = fadd float %281, %266 %283 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %284 = load <16 x i8>, <16 x i8> addrspace(2)* %283, align 16, !invariant.load !0 %285 = call float @llvm.SI.load.const(<16 x i8> %284, i32 260) %286 = fmul float %285, %.16 %287 = fadd float %286, %271 %288 = call float @llvm.SI.load.const(<16 x i8> %284, i32 264) %289 = fmul float %288, %.16 %290 = fadd float %289, %274 %291 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %292 = load <16 x i8>, <16 x i8> addrspace(2)* %291, align 16, !invariant.load !0 %293 = call float @llvm.SI.load.const(<16 x i8> %292, i32 268) %294 = fmul float %293, %.16 %295 = fadd float %294, %279 %296 = call float @llvm.SI.load.const(<16 x i8> %292, i32 272) %297 = fmul float %296, %26 %298 = fadd float %297, %282 %299 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %300 = load <16 x i8>, <16 x i8> addrspace(2)* %299, align 16, !invariant.load !0 %301 = call float @llvm.SI.load.const(<16 x i8> %300, i32 276) %302 = fmul float %301, %26 %303 = fadd float %302, %287 %304 = call float @llvm.SI.load.const(<16 x i8> %300, i32 280) %305 = fmul float %304, %26 %306 = fadd float %305, %290 %307 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %308 = load <16 x i8>, <16 x i8> addrspace(2)* %307, align 16, !invariant.load !0 %309 = call float @llvm.SI.load.const(<16 x i8> %308, i32 284) %310 = fmul float %309, %26 %311 = fadd float %310, %295 %312 = bitcast i32 %12 to float %313 = insertvalue <{ float, float, float }> undef, float %312, 2 call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 32, i32 0, float %96, float %102, float %106, float %112) call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 33, i32 0, float %233, float %249, float %191, float %147) call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 34, i32 0, float %234, float %250, float %192, float %152) call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 35, i32 0, float %235, float %251, float %193, float %155) call void @llvm.SI.export(i32 15, i32 0, i32 1, i32 12, i32 0, float %298, float %303, float %306, float %311) ret <{ float, float, float }> %313 } ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.vs.load.input(<16 x i8>, i32, i32) #0 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #0 ; Function Attrs: nounwind readnone declare float @llvm.sqrt.f32(float) #0 ; Function Attrs: nounwind declare void @llvm.SI.export(i32, i32, i32, i32, i32, float, float, float, float) #1 attributes #0 = { nounwind readnone } attributes #1 = { nounwind } !0 = !{} !1 = !{float 2.500000e+00} FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL IN[1], GENERIC[1], PERSPECTIVE DCL IN[2], GENERIC[2], PERSPECTIVE DCL IN[3], GENERIC[3], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL SAMP[2] DCL SAMP[3] DCL SAMP[4] DCL SAMP[5] DCL SVIEW[0], CUBE, FLOAT DCL SVIEW[1], 2D, FLOAT DCL SVIEW[2], 2D, FLOAT DCL SVIEW[3], 2D, FLOAT DCL SVIEW[4], 2D, FLOAT DCL SVIEW[5], 2D, FLOAT DCL CONST[0..2] DCL CONST[4..9] DCL CONST[15..20] DCL TEMP[0..9], LOCAL IMM[0] FLT32 { 2.0000, 1.0000, 0.5000, -1.0000} IMM[1] FLT32 { 6.0000, 0.0000, 0.0000, 0.0000} IMM[2] FLT32 { 0.3053, 0.6822, 0.0125, 0.0103} IMM[3] FLT32 { 0.0200, 255.0000, 0.0039, 0.0000} 0: MOV TEMP[0].x, IN[1].wwww 1: MOV TEMP[0].y, IN[2].wwww 2: MOV TEMP[0].z, IN[3].wwww 3: ADD TEMP[0].xyz, CONST[0].xyzz, -TEMP[0].xyzz 4: DP3 TEMP[1].x, TEMP[0].xyzz, TEMP[0].xyzz 5: RSQ TEMP[1].x, TEMP[1].xxxx 6: MUL TEMP[0].xyz, TEMP[0].xyzz, TEMP[1].xxxx 7: MUL TEMP[1].xyz, IN[1].xyzz, TEMP[0].xxxx 8: MAD TEMP[1].xyz, IN[2].xyzz, TEMP[0].yyyy, TEMP[1].xyzz 9: MAD TEMP[0].xyz, IN[3].xyzz, TEMP[0].zzzz, TEMP[1].xyzz 10: MOV TEMP[1].xy, IN[0].zwww 11: TEX TEMP[1], TEMP[1], SAMP[2], 2D 12: MOV TEMP[2].xy, IN[0].xyyy 13: TEX TEMP[2], TEMP[2], SAMP[5], 2D 14: MOV TEMP[3].xy, IN[0].xyyy 15: TEX TEMP[3], TEMP[3], SAMP[4], 2D 16: MOV TEMP[4].xy, IN[0].zwww 17: TEX TEMP[4].xyz, TEMP[4], SAMP[1], 2D 18: LRP TEMP[2].xyz, TEMP[2].wwww, TEMP[2].xyzz, TEMP[1].xyzz 19: MUL TEMP[2].xyz, TEMP[2].xyzz, CONST[15].xyzz 20: MUL TEMP[2].xyz, TEMP[2].xyzz, IMM[0].xxxx 21: MUL TEMP[5].xyz, TEMP[2].xyzz, CONST[4].xyzz 22: MUL TEMP[5].xyz, TEMP[5].xyzz, IMM[0].xxxx 23: ADD TEMP[6].xyz, IMM[0].yyyy, -TEMP[2].xyzz 24: MUL TEMP[6].xyz, IMM[0].xxxx, TEMP[6].xyzz 25: ADD TEMP[7].xyz, IMM[0].yyyy, -CONST[4].xyzz 26: MUL TEMP[6].xyz, TEMP[6].xyzz, TEMP[7].xyzz 27: ADD TEMP[6].xyz, IMM[0].yyyy, -TEMP[6].xyzz 28: FSGE TEMP[7].x, TEMP[2].xxxx, IMM[0].zzzz 29: AND TEMP[7].x, TEMP[7].xxxx, IMM[0].yyyy 30: LRP TEMP[5].xyz, TEMP[7].xxxx, TEMP[6].xyzz, TEMP[5].xyzz 31: MUL TEMP[6].x, TEMP[3].xxxx, CONST[4].wwww 32: LRP TEMP[2].xyz, TEMP[6].xxxx, TEMP[5].xyzz, TEMP[2].xyzz 33: MUL TEMP[5].xyz, TEMP[2].xyzz, CONST[5].xyzz 34: MUL TEMP[5].xyz, TEMP[5].xyzz, IMM[0].xxxx 35: ADD TEMP[6].xyz, IMM[0].yyyy, -TEMP[2].xyzz 36: MUL TEMP[6].xyz, IMM[0].xxxx, TEMP[6].xyzz 37: ADD TEMP[7].xyz, IMM[0].yyyy, -CONST[5].xyzz 38: MUL TEMP[6].xyz, TEMP[6].xyzz, TEMP[7].xyzz 39: ADD TEMP[6].xyz, IMM[0].yyyy, -TEMP[6].xyzz 40: FSGE TEMP[7].x, TEMP[2].xxxx, IMM[0].zzzz 41: AND TEMP[7].x, TEMP[7].xxxx, IMM[0].yyyy 42: LRP TEMP[5].xyz, TEMP[7].xxxx, TEMP[6].xyzz, TEMP[5].xyzz 43: MUL TEMP[6].x, TEMP[3].yyyy, CONST[5].wwww 44: LRP TEMP[2].xyz, TEMP[6].xxxx, TEMP[5].xyzz, TEMP[2].xyzz 45: MUL TEMP[5].xyz, TEMP[2].xyzz, CONST[6].xyzz 46: MUL TEMP[5].xyz, TEMP[5].xyzz, IMM[0].xxxx 47: ADD TEMP[6].xyz, IMM[0].yyyy, -TEMP[2].xyzz 48: MUL TEMP[6].xyz, IMM[0].xxxx, TEMP[6].xyzz 49: ADD TEMP[7].xyz, IMM[0].yyyy, -CONST[6].xyzz 50: MUL TEMP[6].xyz, TEMP[6].xyzz, TEMP[7].xyzz 51: ADD TEMP[6].xyz, IMM[0].yyyy, -TEMP[6].xyzz 52: FSGE TEMP[7].x, TEMP[2].xxxx, IMM[0].zzzz 53: AND TEMP[7].x, TEMP[7].xxxx, IMM[0].yyyy 54: LRP TEMP[5].xyz, TEMP[7].xxxx, TEMP[6].xyzz, TEMP[5].xyzz 55: MUL TEMP[6].x, TEMP[3].zzzz, CONST[6].wwww 56: LRP TEMP[2].xyz, TEMP[6].xxxx, TEMP[5].xyzz, TEMP[2].xyzz 57: MOV TEMP[5].xy, IN[0].zwww 58: TEX TEMP[5].xyz, TEMP[5], SAMP[3], 2D 59: MAD TEMP[5].xyz, TEMP[5].xyzz, IMM[0].xxxx, IMM[0].wwww 60: DP3 TEMP[6].x, TEMP[5].xyzz, TEMP[5].xyzz 61: RSQ TEMP[6].x, TEMP[6].xxxx 62: MUL TEMP[5].xyz, TEMP[5].xyzz, TEMP[6].xxxx 63: DP3 TEMP[6].x, TEMP[0].xyzz, TEMP[0].xyzz 64: RSQ TEMP[6].x, TEMP[6].xxxx 65: MUL TEMP[6].xyz, TEMP[0].xyzz, TEMP[6].xxxx 66: DP3 TEMP[7].x, IN[1].xyzz, TEMP[5].xyzz 67: DP3 TEMP[8].x, IN[2].xyzz, TEMP[5].xyzz 68: MOV TEMP[7].y, TEMP[8].xxxx 69: DP3 TEMP[8].x, IN[3].xyzz, TEMP[5].xyzz 70: MOV TEMP[7].z, TEMP[8].xxxx 71: DP3 TEMP[8].x, IN[1].xyzz, TEMP[6].xyzz 72: DP3 TEMP[9].x, IN[2].xyzz, TEMP[6].xyzz 73: MOV TEMP[8].y, TEMP[9].xxxx 74: DP3 TEMP[6].x, IN[3].xyzz, TEMP[6].xyzz 75: MOV TEMP[8].z, TEMP[6].xxxx 76: MOV TEMP[6].xyz, -TEMP[8].xyzx 77: DP3 TEMP[8].x, TEMP[7].xyzz, TEMP[6].xyzz 78: MUL TEMP[8].xyz, TEMP[8].xxxx, TEMP[7].xyzz 79: MUL TEMP[8].xyz, IMM[0].xxxx, TEMP[8].xyzz 80: ADD TEMP[6].xyz, TEMP[6].xyzz, -TEMP[8].xyzz 81: ADD TEMP[8].x, IMM[0].yyyy, -TEMP[4].yyyy 82: MUL TEMP[8].x, TEMP[8].xxxx, IMM[1].xxxx 83: MOV TEMP[6].xyz, TEMP[6].xyzz 84: MOV TEMP[6].w, TEMP[8].xxxx 85: TXB TEMP[6], TEMP[6], SAMP[0], CUBE 86: MUL TEMP[6], TEMP[6], CONST[2] 87: POW TEMP[8].x, TEMP[2].xxxx, IMM[0].zzzz 88: POW TEMP[8].y, TEMP[2].yyyy, IMM[0].zzzz 89: POW TEMP[8].z, TEMP[2].zzzz, IMM[0].zzzz 90: LRP TEMP[8].xyz, TEMP[4].xxxx, TEMP[8].xyzz, CONST[1].xyzz 91: MUL TEMP[6].xyz, TEMP[6].xyzz, TEMP[8].xyzz 92: MOV TEMP[8].x, IMM[1].yyyy 93: MUL TEMP[7].xyz, TEMP[7].xyzz, IMM[1].zzzz 94: MOV TEMP[8].yz, TEMP[7].yxyz 95: MOV TEMP[7].w, TEMP[7].zzzz 96: MUL TEMP[7].xyz, TEMP[8].xyzz, TEMP[2].xyzz 97: LRP TEMP[4].xyz, TEMP[4].zzzz, TEMP[6], TEMP[7] 98: DP3 TEMP[6].x, TEMP[0].xyzz, TEMP[0].xyzz 99: RSQ TEMP[6].x, TEMP[6].xxxx 100: MUL TEMP[0].xyz, TEMP[0].xyzz, TEMP[6].xxxx 101: DP3 TEMP[0].x, TEMP[0].xyzz, TEMP[5].xyzz 102: ADD TEMP[0].x, IMM[0].yyyy, -TEMP[0].xxxx 103: MAX TEMP[0].x, IMM[1].wwww, TEMP[0].xxxx 104: POW TEMP[0].x, TEMP[0].xxxx, CONST[9].xxxx 105: MAD TEMP[0], CONST[7], TEMP[0].xxxx, CONST[8] 106: ADD TEMP[5].x, IMM[0].yyyy, -TEMP[3].wwww 107: MOV_SAT TEMP[5].x, TEMP[5].xxxx 108: MUL TEMP[0].xyz, TEMP[0], TEMP[5].xxxx 109: MAD TEMP[0].xyz, TEMP[4].xyzz, TEMP[3].wwww, TEMP[0].xyzz 110: FSLT TEMP[1].x, TEMP[1].wwww, CONST[20].xxxx 111: AND TEMP[1].x, TEMP[1].xxxx, IMM[0].yyyy 112: KILL_IF -TEMP[1].xxxx 113: MOV TEMP[1], IMM[1].yyyy 114: UIF CONST[16].xxxx :0 115: MOV TEMP[1].w, IMM[0].yyyy 116: MOV_SAT TEMP[3].x, CONST[17].xxxx 117: POW TEMP[4].x, TEMP[2].xxxx, TEMP[3].xxxx 118: POW TEMP[4].y, TEMP[2].yyyy, TEMP[3].xxxx 119: POW TEMP[4].z, TEMP[2].zzzz, TEMP[3].xxxx 120: MAX TEMP[2].xyz, TEMP[4].xyzz, IMM[1].yyyy 121: MIN TEMP[1].xyz, TEMP[2].xyzz, CONST[18].xxxx 122: ENDIF 123: UIF CONST[16].yyyy :0 124: FSNE TEMP[2].x, CONST[19].xxxx, IMM[1].yyyy 125: UIF TEMP[2].xxxx :0 126: MOV TEMP[2].xyz, TEMP[0].xyzx 127: ELSE :0 128: MAD TEMP[3].xyz, TEMP[0].xyzz, IMM[2].xxxx, IMM[2].yyyy 129: MAD TEMP[3].xyz, TEMP[0].xyzz, TEMP[3].xyzz, IMM[2].zzzz 130: MUL TEMP[2].xyz, TEMP[0].xyzz, TEMP[3].xyzz 131: ENDIF 132: MUL TEMP[0].xyz, TEMP[2].xyzz, IMM[2].wwww 133: MAX TEMP[3].x, TEMP[0].xxxx, TEMP[0].yyyy 134: MAX TEMP[4].x, TEMP[0].zzzz, IMM[3].xxxx 135: MAX TEMP[3].x, TEMP[3].xxxx, TEMP[4].xxxx 136: MUL TEMP[3].x, TEMP[3].xxxx, IMM[3].yyyy 137: CEIL TEMP[3].x, TEMP[3].xxxx 138: MUL TEMP[3].x, TEMP[3].xxxx, IMM[3].zzzz 139: MAX TEMP[3].x, TEMP[3].xxxx, IMM[3].xxxx 140: MOV TEMP[2].w, TEMP[3].xxxx 141: RCP TEMP[3].x, TEMP[3].xxxx 142: MUL TEMP[2].xyz, TEMP[0].xyzz, TEMP[3].xxxx 143: MOV TEMP[1], TEMP[2] 144: ENDIF 145: MOV OUT[0], TEMP[1] 146: END radeonsi: Compiling shader 35 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_ps <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), float inreg, i32 inreg, <2 x i32>, <2 x i32>, <2 x i32>, <3 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, float, float, float, float, float, i32, i32, float, i32) #0 { main_body: %23 = call float @llvm.SI.fs.interp(i32 3, i32 1, i32 %6, <2 x i32> %8) %24 = call float @llvm.SI.fs.interp(i32 3, i32 2, i32 %6, <2 x i32> %8) %25 = call float @llvm.SI.fs.interp(i32 3, i32 3, i32 %6, <2 x i32> %8) %26 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %27 = load <16 x i8>, <16 x i8> addrspace(2)* %26, align 16, !invariant.load !0 %28 = call float @llvm.SI.load.const(<16 x i8> %27, i32 0) %29 = fsub float %28, %23 %30 = call float @llvm.SI.load.const(<16 x i8> %27, i32 4) %31 = fsub float %30, %24 %32 = call float @llvm.SI.load.const(<16 x i8> %27, i32 8) %33 = fsub float %32, %25 %34 = fmul float %29, %29 %35 = fmul float %31, %31 %36 = fadd float %35, %34 %37 = fmul float %33, %33 %38 = fadd float %36, %37 %39 = call float @llvm.sqrt.f32(float %38) %40 = fdiv float 1.000000e+00, %39, !fpmath !1 %41 = fmul float %29, %40 %42 = fmul float %31, %40 %43 = fmul float %33, %40 %44 = call float @llvm.SI.fs.interp(i32 0, i32 1, i32 %6, <2 x i32> %8) %45 = fmul float %44, %41 %46 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %47 = fmul float %46, %41 %48 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %49 = fmul float %48, %41 %50 = call float @llvm.SI.fs.interp(i32 0, i32 2, i32 %6, <2 x i32> %8) %51 = fmul float %50, %42 %52 = fadd float %51, %45 %53 = call float @llvm.SI.fs.interp(i32 1, i32 2, i32 %6, <2 x i32> %8) %54 = fmul float %53, %42 %55 = fadd float %54, %47 %56 = call float @llvm.SI.fs.interp(i32 2, i32 2, i32 %6, <2 x i32> %8) %57 = fmul float %56, %42 %58 = fadd float %57, %49 %59 = call float @llvm.SI.fs.interp(i32 0, i32 3, i32 %6, <2 x i32> %8) %60 = fmul float %59, %43 %61 = fadd float %60, %52 %62 = call float @llvm.SI.fs.interp(i32 1, i32 3, i32 %6, <2 x i32> %8) %63 = fmul float %62, %43 %64 = fadd float %63, %55 %65 = call float @llvm.SI.fs.interp(i32 2, i32 3, i32 %6, <2 x i32> %8) %66 = fmul float %65, %43 %67 = fadd float %66, %58 %68 = call float @llvm.SI.fs.interp(i32 2, i32 0, i32 %6, <2 x i32> %8) %69 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %6, <2 x i32> %8) %70 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 4, !amdgpu.uniform !0 %71 = load <8 x i32>, <8 x i32> addrspace(2)* %70, align 32, !invariant.load !0 %72 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %73 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %72, i64 0, i64 11, !amdgpu.uniform !0 %74 = load <4 x i32>, <4 x i32> addrspace(2)* %73, align 16, !invariant.load !0 %75 = bitcast float %68 to i32 %76 = bitcast float %69 to i32 %77 = insertelement <2 x i32> undef, i32 %75, i32 0 %78 = insertelement <2 x i32> %77, i32 %76, i32 1 %79 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %78, <8 x i32> %71, <4 x i32> %74, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %80 = extractelement <4 x float> %79, i32 0 %81 = extractelement <4 x float> %79, i32 1 %82 = extractelement <4 x float> %79, i32 2 %83 = extractelement <4 x float> %79, i32 3 %84 = call float @llvm.SI.fs.interp(i32 0, i32 0, i32 %6, <2 x i32> %8) %85 = call float @llvm.SI.fs.interp(i32 1, i32 0, i32 %6, <2 x i32> %8) %86 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 10, !amdgpu.uniform !0 %87 = load <8 x i32>, <8 x i32> addrspace(2)* %86, align 32, !invariant.load !0 %88 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %89 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %88, i64 0, i64 23, !amdgpu.uniform !0 %90 = load <4 x i32>, <4 x i32> addrspace(2)* %89, align 16, !invariant.load !0 %91 = bitcast float %84 to i32 %92 = bitcast float %85 to i32 %93 = insertelement <2 x i32> undef, i32 %91, i32 0 %94 = insertelement <2 x i32> %93, i32 %92, i32 1 %95 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %94, <8 x i32> %87, <4 x i32> %90, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %96 = extractelement <4 x float> %95, i32 0 %97 = extractelement <4 x float> %95, i32 1 %98 = extractelement <4 x float> %95, i32 2 %99 = extractelement <4 x float> %95, i32 3 %100 = call float @llvm.SI.fs.interp(i32 0, i32 0, i32 %6, <2 x i32> %8) %101 = call float @llvm.SI.fs.interp(i32 1, i32 0, i32 %6, <2 x i32> %8) %102 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 8, !amdgpu.uniform !0 %103 = load <8 x i32>, <8 x i32> addrspace(2)* %102, align 32, !invariant.load !0 %104 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %105 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %104, i64 0, i64 19, !amdgpu.uniform !0 %106 = load <4 x i32>, <4 x i32> addrspace(2)* %105, align 16, !invariant.load !0 %107 = bitcast float %100 to i32 %108 = bitcast float %101 to i32 %109 = insertelement <2 x i32> undef, i32 %107, i32 0 %110 = insertelement <2 x i32> %109, i32 %108, i32 1 %111 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %110, <8 x i32> %103, <4 x i32> %106, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %112 = extractelement <4 x float> %111, i32 0 %113 = extractelement <4 x float> %111, i32 1 %114 = extractelement <4 x float> %111, i32 2 %115 = extractelement <4 x float> %111, i32 3 %116 = call float @llvm.SI.fs.interp(i32 2, i32 0, i32 %6, <2 x i32> %8) %117 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %6, <2 x i32> %8) %118 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 2, !amdgpu.uniform !0 %119 = load <8 x i32>, <8 x i32> addrspace(2)* %118, align 32, !invariant.load !0 %120 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %121 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %120, i64 0, i64 7, !amdgpu.uniform !0 %122 = load <4 x i32>, <4 x i32> addrspace(2)* %121, align 16, !invariant.load !0 %123 = bitcast float %116 to i32 %124 = bitcast float %117 to i32 %125 = insertelement <2 x i32> undef, i32 %123, i32 0 %126 = insertelement <2 x i32> %125, i32 %124, i32 1 %127 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %126, <8 x i32> %119, <4 x i32> %122, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %128 = extractelement <4 x float> %127, i32 0 %129 = extractelement <4 x float> %127, i32 1 %130 = extractelement <4 x float> %127, i32 2 %131 = fsub float 1.000000e+00, %99 %132 = fmul float %96, %99 %133 = fmul float %80, %131 %134 = fadd float %132, %133 %135 = fsub float 1.000000e+00, %99 %136 = fmul float %97, %99 %137 = fmul float %81, %135 %138 = fadd float %136, %137 %139 = fsub float 1.000000e+00, %99 %140 = fmul float %98, %99 %141 = fmul float %82, %139 %142 = fadd float %140, %141 %143 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %144 = load <16 x i8>, <16 x i8> addrspace(2)* %143, align 16, !invariant.load !0 %145 = call float @llvm.SI.load.const(<16 x i8> %144, i32 240) %146 = fmul float %134, %145 %147 = call float @llvm.SI.load.const(<16 x i8> %144, i32 244) %148 = fmul float %138, %147 %149 = call float @llvm.SI.load.const(<16 x i8> %144, i32 248) %150 = fmul float %142, %149 %151 = fmul float %146, 2.000000e+00 %152 = fmul float %148, 2.000000e+00 %153 = fmul float %150, 2.000000e+00 %154 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %155 = load <16 x i8>, <16 x i8> addrspace(2)* %154, align 16, !invariant.load !0 %156 = call float @llvm.SI.load.const(<16 x i8> %155, i32 64) %157 = fmul float %151, %156 %158 = call float @llvm.SI.load.const(<16 x i8> %155, i32 68) %159 = fmul float %152, %158 %160 = call float @llvm.SI.load.const(<16 x i8> %155, i32 72) %161 = fmul float %153, %160 %162 = fmul float %157, 2.000000e+00 %163 = fmul float %159, 2.000000e+00 %164 = fmul float %161, 2.000000e+00 %165 = fsub float 1.000000e+00, %151 %166 = fsub float 1.000000e+00, %152 %167 = fsub float 1.000000e+00, %153 %168 = fmul float %165, 2.000000e+00 %169 = fmul float %166, 2.000000e+00 %170 = fmul float %167, 2.000000e+00 %171 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %172 = load <16 x i8>, <16 x i8> addrspace(2)* %171, align 16, !invariant.load !0 %173 = call float @llvm.SI.load.const(<16 x i8> %172, i32 64) %174 = fsub float 1.000000e+00, %173 %175 = call float @llvm.SI.load.const(<16 x i8> %172, i32 68) %176 = fsub float 1.000000e+00, %175 %177 = call float @llvm.SI.load.const(<16 x i8> %172, i32 72) %178 = fsub float 1.000000e+00, %177 %179 = fmul float %168, %174 %180 = fmul float %169, %176 %181 = fmul float %170, %178 %182 = fsub float 1.000000e+00, %179 %183 = fsub float 1.000000e+00, %180 %184 = fsub float 1.000000e+00, %181 %185 = fcmp oge float %151, 5.000000e-01 %186 = select i1 %185, float 1.000000e+00, float 0.000000e+00 %187 = fsub float 1.000000e+00, %186 %188 = fmul float %182, %186 %189 = fmul float %162, %187 %190 = fadd float %188, %189 %191 = fsub float 1.000000e+00, %186 %192 = fmul float %183, %186 %193 = fmul float %163, %191 %194 = fadd float %192, %193 %195 = fsub float 1.000000e+00, %186 %196 = fmul float %184, %186 %197 = fmul float %164, %195 %198 = fadd float %196, %197 %199 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %200 = load <16 x i8>, <16 x i8> addrspace(2)* %199, align 16, !invariant.load !0 %201 = call float @llvm.SI.load.const(<16 x i8> %200, i32 76) %202 = fmul float %112, %201 %203 = fsub float 1.000000e+00, %202 %204 = fmul float %190, %202 %205 = fmul float %151, %203 %206 = fadd float %204, %205 %207 = fsub float 1.000000e+00, %202 %208 = fmul float %194, %202 %209 = fmul float %152, %207 %210 = fadd float %208, %209 %211 = fsub float 1.000000e+00, %202 %212 = fmul float %198, %202 %213 = fmul float %153, %211 %214 = fadd float %212, %213 %215 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %216 = load <16 x i8>, <16 x i8> addrspace(2)* %215, align 16, !invariant.load !0 %217 = call float @llvm.SI.load.const(<16 x i8> %216, i32 80) %218 = fmul float %206, %217 %219 = call float @llvm.SI.load.const(<16 x i8> %216, i32 84) %220 = fmul float %210, %219 %221 = call float @llvm.SI.load.const(<16 x i8> %216, i32 88) %222 = fmul float %214, %221 %223 = fmul float %218, 2.000000e+00 %224 = fmul float %220, 2.000000e+00 %225 = fmul float %222, 2.000000e+00 %226 = fsub float 1.000000e+00, %206 %227 = fsub float 1.000000e+00, %210 %228 = fsub float 1.000000e+00, %214 %229 = fmul float %226, 2.000000e+00 %230 = fmul float %227, 2.000000e+00 %231 = fmul float %228, 2.000000e+00 %232 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %233 = load <16 x i8>, <16 x i8> addrspace(2)* %232, align 16, !invariant.load !0 %234 = call float @llvm.SI.load.const(<16 x i8> %233, i32 80) %235 = fsub float 1.000000e+00, %234 %236 = call float @llvm.SI.load.const(<16 x i8> %233, i32 84) %237 = fsub float 1.000000e+00, %236 %238 = call float @llvm.SI.load.const(<16 x i8> %233, i32 88) %239 = fsub float 1.000000e+00, %238 %240 = fmul float %229, %235 %241 = fmul float %230, %237 %242 = fmul float %231, %239 %243 = fsub float 1.000000e+00, %240 %244 = fsub float 1.000000e+00, %241 %245 = fsub float 1.000000e+00, %242 %246 = fcmp oge float %206, 5.000000e-01 %247 = select i1 %246, float 1.000000e+00, float 0.000000e+00 %248 = fsub float 1.000000e+00, %247 %249 = fmul float %243, %247 %250 = fmul float %223, %248 %251 = fadd float %249, %250 %252 = fsub float 1.000000e+00, %247 %253 = fmul float %244, %247 %254 = fmul float %224, %252 %255 = fadd float %253, %254 %256 = fsub float 1.000000e+00, %247 %257 = fmul float %245, %247 %258 = fmul float %225, %256 %259 = fadd float %257, %258 %260 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %261 = load <16 x i8>, <16 x i8> addrspace(2)* %260, align 16, !invariant.load !0 %262 = call float @llvm.SI.load.const(<16 x i8> %261, i32 92) %263 = fmul float %113, %262 %264 = fsub float 1.000000e+00, %263 %265 = fmul float %251, %263 %266 = fmul float %206, %264 %267 = fadd float %265, %266 %268 = fsub float 1.000000e+00, %263 %269 = fmul float %255, %263 %270 = fmul float %210, %268 %271 = fadd float %269, %270 %272 = fsub float 1.000000e+00, %263 %273 = fmul float %259, %263 %274 = fmul float %214, %272 %275 = fadd float %273, %274 %276 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %277 = load <16 x i8>, <16 x i8> addrspace(2)* %276, align 16, !invariant.load !0 %278 = call float @llvm.SI.load.const(<16 x i8> %277, i32 96) %279 = fmul float %267, %278 %280 = call float @llvm.SI.load.const(<16 x i8> %277, i32 100) %281 = fmul float %271, %280 %282 = call float @llvm.SI.load.const(<16 x i8> %277, i32 104) %283 = fmul float %275, %282 %284 = fmul float %279, 2.000000e+00 %285 = fmul float %281, 2.000000e+00 %286 = fmul float %283, 2.000000e+00 %287 = fsub float 1.000000e+00, %267 %288 = fsub float 1.000000e+00, %271 %289 = fsub float 1.000000e+00, %275 %290 = fmul float %287, 2.000000e+00 %291 = fmul float %288, 2.000000e+00 %292 = fmul float %289, 2.000000e+00 %293 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %294 = load <16 x i8>, <16 x i8> addrspace(2)* %293, align 16, !invariant.load !0 %295 = call float @llvm.SI.load.const(<16 x i8> %294, i32 96) %296 = fsub float 1.000000e+00, %295 %297 = call float @llvm.SI.load.const(<16 x i8> %294, i32 100) %298 = fsub float 1.000000e+00, %297 %299 = call float @llvm.SI.load.const(<16 x i8> %294, i32 104) %300 = fsub float 1.000000e+00, %299 %301 = fmul float %290, %296 %302 = fmul float %291, %298 %303 = fmul float %292, %300 %304 = fsub float 1.000000e+00, %301 %305 = fsub float 1.000000e+00, %302 %306 = fsub float 1.000000e+00, %303 %307 = fcmp oge float %267, 5.000000e-01 %308 = select i1 %307, float 1.000000e+00, float 0.000000e+00 %309 = fsub float 1.000000e+00, %308 %310 = fmul float %304, %308 %311 = fmul float %284, %309 %312 = fadd float %310, %311 %313 = fsub float 1.000000e+00, %308 %314 = fmul float %305, %308 %315 = fmul float %285, %313 %316 = fadd float %314, %315 %317 = fsub float 1.000000e+00, %308 %318 = fmul float %306, %308 %319 = fmul float %286, %317 %320 = fadd float %318, %319 %321 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %322 = load <16 x i8>, <16 x i8> addrspace(2)* %321, align 16, !invariant.load !0 %323 = call float @llvm.SI.load.const(<16 x i8> %322, i32 108) %324 = fmul float %114, %323 %325 = fsub float 1.000000e+00, %324 %326 = fmul float %312, %324 %327 = fmul float %267, %325 %328 = fadd float %326, %327 %329 = fsub float 1.000000e+00, %324 %330 = fmul float %316, %324 %331 = fmul float %271, %329 %332 = fadd float %330, %331 %333 = fsub float 1.000000e+00, %324 %334 = fmul float %320, %324 %335 = fmul float %275, %333 %336 = fadd float %334, %335 %337 = call float @llvm.SI.fs.interp(i32 2, i32 0, i32 %6, <2 x i32> %8) %338 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %6, <2 x i32> %8) %339 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 6, !amdgpu.uniform !0 %340 = load <8 x i32>, <8 x i32> addrspace(2)* %339, align 32, !invariant.load !0 %341 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %342 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %341, i64 0, i64 15, !amdgpu.uniform !0 %343 = load <4 x i32>, <4 x i32> addrspace(2)* %342, align 16, !invariant.load !0 %344 = bitcast float %337 to i32 %345 = bitcast float %338 to i32 %346 = insertelement <2 x i32> undef, i32 %344, i32 0 %347 = insertelement <2 x i32> %346, i32 %345, i32 1 %348 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %347, <8 x i32> %340, <4 x i32> %343, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %349 = extractelement <4 x float> %348, i32 0 %350 = extractelement <4 x float> %348, i32 1 %351 = extractelement <4 x float> %348, i32 2 %352 = fmul float %349, 2.000000e+00 %353 = fadd float %352, -1.000000e+00 %354 = fmul float %350, 2.000000e+00 %355 = fadd float %354, -1.000000e+00 %356 = fmul float %351, 2.000000e+00 %357 = fadd float %356, -1.000000e+00 %358 = fmul float %353, %353 %359 = fmul float %355, %355 %360 = fadd float %359, %358 %361 = fmul float %357, %357 %362 = fadd float %360, %361 %363 = call float @llvm.sqrt.f32(float %362) %364 = fdiv float 1.000000e+00, %363, !fpmath !1 %365 = fmul float %353, %364 %366 = fmul float %355, %364 %367 = fmul float %357, %364 %368 = fmul float %61, %61 %369 = fmul float %64, %64 %370 = fadd float %369, %368 %371 = fmul float %67, %67 %372 = fadd float %370, %371 %373 = call float @llvm.sqrt.f32(float %372) %374 = fdiv float 1.000000e+00, %373, !fpmath !1 %375 = fmul float %61, %374 %376 = fmul float %64, %374 %377 = fmul float %67, %374 %378 = call float @llvm.SI.fs.interp(i32 0, i32 1, i32 %6, <2 x i32> %8) %379 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %380 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %381 = fmul float %378, %365 %382 = fmul float %379, %366 %383 = fadd float %382, %381 %384 = fmul float %380, %367 %385 = fadd float %383, %384 %386 = call float @llvm.SI.fs.interp(i32 0, i32 2, i32 %6, <2 x i32> %8) %387 = call float @llvm.SI.fs.interp(i32 1, i32 2, i32 %6, <2 x i32> %8) %388 = call float @llvm.SI.fs.interp(i32 2, i32 2, i32 %6, <2 x i32> %8) %389 = fmul float %386, %365 %390 = fmul float %387, %366 %391 = fadd float %390, %389 %392 = fmul float %388, %367 %393 = fadd float %391, %392 %394 = call float @llvm.SI.fs.interp(i32 0, i32 3, i32 %6, <2 x i32> %8) %395 = call float @llvm.SI.fs.interp(i32 1, i32 3, i32 %6, <2 x i32> %8) %396 = call float @llvm.SI.fs.interp(i32 2, i32 3, i32 %6, <2 x i32> %8) %397 = fmul float %394, %365 %398 = fmul float %395, %366 %399 = fadd float %398, %397 %400 = fmul float %396, %367 %401 = fadd float %399, %400 %402 = call float @llvm.SI.fs.interp(i32 0, i32 1, i32 %6, <2 x i32> %8) %403 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %404 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %405 = fmul float %402, %375 %406 = fmul float %403, %376 %407 = fadd float %406, %405 %408 = fmul float %404, %377 %409 = fadd float %407, %408 %410 = call float @llvm.SI.fs.interp(i32 0, i32 2, i32 %6, <2 x i32> %8) %411 = call float @llvm.SI.fs.interp(i32 1, i32 2, i32 %6, <2 x i32> %8) %412 = call float @llvm.SI.fs.interp(i32 2, i32 2, i32 %6, <2 x i32> %8) %413 = fmul float %410, %375 %414 = fmul float %411, %376 %415 = fadd float %414, %413 %416 = fmul float %412, %377 %417 = fadd float %415, %416 %418 = call float @llvm.SI.fs.interp(i32 0, i32 3, i32 %6, <2 x i32> %8) %419 = call float @llvm.SI.fs.interp(i32 1, i32 3, i32 %6, <2 x i32> %8) %420 = call float @llvm.SI.fs.interp(i32 2, i32 3, i32 %6, <2 x i32> %8) %421 = fmul float %418, %375 %422 = fmul float %419, %376 %423 = fadd float %422, %421 %424 = fmul float %420, %377 %425 = fadd float %423, %424 %426 = fmul float %409, %385 %427 = fsub float -0.000000e+00, %426 %428 = fmul float %417, %393 %429 = fsub float %427, %428 %430 = fmul float %425, %401 %431 = fsub float %429, %430 %432 = fmul float %431, %385 %433 = fmul float %431, %393 %434 = fmul float %431, %401 %435 = fmul float %432, 2.000000e+00 %436 = fmul float %433, 2.000000e+00 %437 = fmul float %434, 2.000000e+00 %438 = fsub float -0.000000e+00, %435 %439 = fsub float %438, %409 %440 = fsub float -0.000000e+00, %436 %441 = fsub float %440, %417 %442 = fsub float -0.000000e+00, %437 %443 = fsub float %442, %425 %444 = fsub float 1.000000e+00, %129 %445 = fmul float %444, 6.000000e+00 %446 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 0, !amdgpu.uniform !0 %447 = load <8 x i32>, <8 x i32> addrspace(2)* %446, align 32, !invariant.load !0 %448 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %449 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %448, i64 0, i64 3, !amdgpu.uniform !0 %450 = load <4 x i32>, <4 x i32> addrspace(2)* %449, align 16, !invariant.load !0 %451 = call float @llvm.amdgcn.cubetc(float %439, float %441, float %443) %452 = call float @llvm.amdgcn.cubesc(float %439, float %441, float %443) %453 = call float @llvm.amdgcn.cubema(float %439, float %441, float %443) %454 = call float @llvm.amdgcn.cubeid(float %439, float %441, float %443) %455 = call float @llvm.fabs.f32(float %453) %456 = fdiv float 1.000000e+00, %455, !fpmath !1 %457 = fmul float %451, %456 %458 = fadd float %457, 1.500000e+00 %459 = fmul float %452, %456 %460 = fadd float %459, 1.500000e+00 %461 = bitcast float %445 to i32 %462 = bitcast float %460 to i32 %463 = bitcast float %458 to i32 %464 = bitcast float %454 to i32 %465 = insertelement <4 x i32> undef, i32 %461, i32 0 %466 = insertelement <4 x i32> %465, i32 %462, i32 1 %467 = insertelement <4 x i32> %466, i32 %463, i32 2 %468 = insertelement <4 x i32> %467, i32 %464, i32 3 %469 = call <4 x float> @llvm.SI.image.sample.b.v4i32(<4 x i32> %468, <8 x i32> %447, <4 x i32> %450, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %470 = extractelement <4 x float> %469, i32 0 %471 = extractelement <4 x float> %469, i32 1 %472 = extractelement <4 x float> %469, i32 2 %473 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %474 = load <16 x i8>, <16 x i8> addrspace(2)* %473, align 16, !invariant.load !0 %475 = call float @llvm.SI.load.const(<16 x i8> %474, i32 32) %476 = fmul float %470, %475 %477 = call float @llvm.SI.load.const(<16 x i8> %474, i32 36) %478 = fmul float %471, %477 %479 = call float @llvm.SI.load.const(<16 x i8> %474, i32 40) %480 = fmul float %472, %479 %sqrtf = call float @sqrtf(float %328) #1 %fabsf = call float @fabsf(float %sqrtf) #1 %481 = fcmp oeq float %328, 0xFFF0000000000000 %482 = select i1 %481, float 0x7FF0000000000000, float %fabsf %sqrtf11 = call float @sqrtf(float %332) #1 %fabsf12 = call float @fabsf(float %sqrtf11) #1 %483 = fcmp oeq float %332, 0xFFF0000000000000 %484 = select i1 %483, float 0x7FF0000000000000, float %fabsf12 %sqrtf13 = call float @sqrtf(float %336) #1 %fabsf14 = call float @fabsf(float %sqrtf13) #1 %485 = fcmp oeq float %336, 0xFFF0000000000000 %486 = select i1 %485, float 0x7FF0000000000000, float %fabsf14 %487 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %488 = load <16 x i8>, <16 x i8> addrspace(2)* %487, align 16, !invariant.load !0 %489 = call float @llvm.SI.load.const(<16 x i8> %488, i32 16) %490 = fsub float 1.000000e+00, %128 %491 = fmul float %482, %128 %492 = fmul float %489, %490 %493 = fadd float %491, %492 %494 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %495 = load <16 x i8>, <16 x i8> addrspace(2)* %494, align 16, !invariant.load !0 %496 = call float @llvm.SI.load.const(<16 x i8> %495, i32 20) %497 = fsub float 1.000000e+00, %128 %498 = fmul float %484, %128 %499 = fmul float %496, %497 %500 = fadd float %498, %499 %501 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %502 = load <16 x i8>, <16 x i8> addrspace(2)* %501, align 16, !invariant.load !0 %503 = call float @llvm.SI.load.const(<16 x i8> %502, i32 24) %504 = fsub float 1.000000e+00, %128 %505 = fmul float %486, %128 %506 = fmul float %503, %504 %507 = fadd float %505, %506 %508 = fmul float %476, %493 %509 = fmul float %478, %500 %510 = fmul float %480, %507 %511 = fmul float %385, 0x3EB0C6F7A0000000 %512 = fmul float %393, 0x3EB0C6F7A0000000 %513 = fmul float %328, 0.000000e+00 %514 = fmul float %511, %332 %515 = fmul float %512, %336 %516 = fsub float 1.000000e+00, %130 %517 = fmul float %508, %130 %518 = fmul float %513, %516 %519 = fadd float %517, %518 %520 = fsub float 1.000000e+00, %130 %521 = fmul float %509, %130 %522 = fmul float %514, %520 %523 = fadd float %521, %522 %524 = fsub float 1.000000e+00, %130 %525 = fmul float %510, %130 %526 = fmul float %515, %524 %527 = fadd float %525, %526 %528 = fmul float %61, %61 %529 = fmul float %64, %64 %530 = fadd float %529, %528 %531 = fmul float %67, %67 %532 = fadd float %530, %531 %533 = call float @llvm.sqrt.f32(float %532) %534 = fdiv float 1.000000e+00, %533, !fpmath !1 %535 = fmul float %61, %534 %536 = fmul float %64, %534 %537 = fmul float %67, %534 %538 = fmul float %535, %365 %539 = fmul float %536, %366 %540 = fadd float %539, %538 %541 = fmul float %537, %367 %542 = fadd float %540, %541 %543 = fsub float 1.000000e+00, %542 %544 = call float @llvm.maxnum.f32(float %543, float 0x3EE4F8B580000000) %545 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %546 = load <16 x i8>, <16 x i8> addrspace(2)* %545, align 16, !invariant.load !0 %547 = call float @llvm.SI.load.const(<16 x i8> %546, i32 144) %548 = call float @llvm.pow.f32(float %544, float %547) %549 = call float @llvm.SI.load.const(<16 x i8> %546, i32 112) %550 = call float @llvm.SI.load.const(<16 x i8> %546, i32 128) %551 = fmul float %549, %548 %552 = fadd float %551, %550 %553 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %554 = load <16 x i8>, <16 x i8> addrspace(2)* %553, align 16, !invariant.load !0 %555 = call float @llvm.SI.load.const(<16 x i8> %554, i32 116) %556 = call float @llvm.SI.load.const(<16 x i8> %554, i32 132) %557 = fmul float %555, %548 %558 = fadd float %557, %556 %559 = call float @llvm.SI.load.const(<16 x i8> %554, i32 120) %560 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %561 = load <16 x i8>, <16 x i8> addrspace(2)* %560, align 16, !invariant.load !0 %562 = call float @llvm.SI.load.const(<16 x i8> %561, i32 136) %563 = fmul float %559, %548 %564 = fadd float %563, %562 %565 = fsub float 1.000000e+00, %115 %566 = call float @llvm.AMDGPU.clamp.(float %565, float 0.000000e+00, float 1.000000e+00) %567 = fmul float %552, %566 %568 = fmul float %558, %566 %569 = fmul float %564, %566 %570 = fmul float %519, %115 %571 = fadd float %570, %567 %572 = fmul float %523, %115 %573 = fadd float %572, %568 %574 = fmul float %527, %115 %575 = fadd float %574, %569 %576 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %577 = load <16 x i8>, <16 x i8> addrspace(2)* %576, align 16, !invariant.load !0 %578 = call float @llvm.SI.load.const(<16 x i8> %577, i32 320) %579 = fcmp olt float %83, %578 %580 = select i1 %579, float -1.000000e+00, float 0.000000e+00 call void @llvm.AMDGPU.kill(float %580) %581 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %582 = load <16 x i8>, <16 x i8> addrspace(2)* %581, align 16, !invariant.load !0 %583 = call float @llvm.SI.load.const(<16 x i8> %582, i32 256) %584 = bitcast float %583 to i32 %585 = icmp eq i32 %584, 0 br i1 %585, label %endif122, label %if114 if114: ; preds = %main_body %586 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %587 = load <16 x i8>, <16 x i8> addrspace(2)* %586, align 16, !invariant.load !0 %588 = call float @llvm.SI.load.const(<16 x i8> %587, i32 272) %589 = call float @llvm.AMDGPU.clamp.(float %588, float 0.000000e+00, float 1.000000e+00) %590 = call float @llvm.pow.f32(float %328, float %589) %591 = call float @llvm.pow.f32(float %332, float %589) %592 = call float @llvm.pow.f32(float %336, float %589) %593 = call float @llvm.maxnum.f32(float %590, float 0.000000e+00) %594 = call float @llvm.maxnum.f32(float %591, float 0.000000e+00) %595 = call float @llvm.maxnum.f32(float %592, float 0.000000e+00) %596 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %597 = load <16 x i8>, <16 x i8> addrspace(2)* %596, align 16, !invariant.load !0 %598 = call float @llvm.SI.load.const(<16 x i8> %597, i32 288) %599 = call float @llvm.minnum.f32(float %593, float %598) %600 = call float @llvm.SI.load.const(<16 x i8> %597, i32 288) %601 = call float @llvm.minnum.f32(float %594, float %600) %602 = call float @llvm.SI.load.const(<16 x i8> %597, i32 288) %603 = call float @llvm.minnum.f32(float %595, float %602) br label %endif122 endif122: ; preds = %main_body, %if114 %.06 = phi float [ 1.000000e+00, %if114 ], [ 0.000000e+00, %main_body ] %.04 = phi float [ %603, %if114 ], [ 0.000000e+00, %main_body ] %.02 = phi float [ %601, %if114 ], [ 0.000000e+00, %main_body ] %.0 = phi float [ %599, %if114 ], [ 0.000000e+00, %main_body ] %604 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %605 = load <16 x i8>, <16 x i8> addrspace(2)* %604, align 16, !invariant.load !0 %606 = call float @llvm.SI.load.const(<16 x i8> %605, i32 260) %607 = bitcast float %606 to i32 %608 = icmp eq i32 %607, 0 br i1 %608, label %endif144, label %if123 if123: ; preds = %endif122 %609 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %610 = load <16 x i8>, <16 x i8> addrspace(2)* %609, align 16, !invariant.load !0 %611 = call float @llvm.SI.load.const(<16 x i8> %610, i32 304) %612 = fcmp une float %611, 0.000000e+00 br i1 %612, label %endif131, label %else127 else127: ; preds = %if123 %613 = fmul float %571, 0x3FD38A2220000000 %614 = fadd float %613, 0x3FE5D45880000000 %615 = fmul float %573, 0x3FD38A2220000000 %616 = fadd float %615, 0x3FE5D45880000000 %617 = fmul float %575, 0x3FD38A2220000000 %618 = fadd float %617, 0x3FE5D45880000000 %619 = fmul float %571, %614 %620 = fadd float %619, 0x3F89A59880000000 %621 = fmul float %573, %616 %622 = fadd float %621, 0x3F89A59880000000 %623 = fmul float %575, %618 %624 = fadd float %623, 0x3F89A59880000000 %625 = fmul float %571, %620 %626 = fmul float %573, %622 %627 = fmul float %575, %624 br label %endif131 endif131: ; preds = %if123, %else127 %.010 = phi float [ %627, %else127 ], [ %575, %if123 ] %.09 = phi float [ %626, %else127 ], [ %573, %if123 ] %.08 = phi float [ %625, %else127 ], [ %571, %if123 ] %628 = fmul float %.08, 0x3F851D0820000000 %629 = fmul float %.09, 0x3F851D0820000000 %630 = fmul float %.010, 0x3F851D0820000000 %631 = call float @llvm.maxnum.f32(float %628, float %629) %632 = call float @llvm.maxnum.f32(float %630, float 0x3F947AE140000000) %633 = call float @llvm.maxnum.f32(float %631, float %632) %634 = fmul float %633, 2.550000e+02 %635 = call float @llvm.ceil.f32(float %634) %636 = fmul float %635, 0x3F70101020000000 %637 = call float @llvm.maxnum.f32(float %636, float 0x3F947AE140000000) %638 = fdiv float 1.000000e+00, %637, !fpmath !1 %639 = fmul float %628, %638 %640 = fmul float %629, %638 %641 = fmul float %630, %638 br label %endif144 endif144: ; preds = %endif122, %endif131 %.17 = phi float [ %637, %endif131 ], [ %.06, %endif122 ] %.15 = phi float [ %641, %endif131 ], [ %.04, %endif122 ] %.13 = phi float [ %640, %endif131 ], [ %.02, %endif122 ] %.1 = phi float [ %639, %endif131 ], [ %.0, %endif122 ] %642 = bitcast float %5 to i32 %643 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> undef, i32 %642, 10 %644 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %643, float %.1, 11 %645 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %644, float %.13, 12 %646 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %645, float %.15, 13 %647 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %646, float %.17, 14 %648 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %647, float %21, 24 ret <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %648 } ; Function Attrs: nounwind readnone declare float @llvm.SI.fs.interp(i32, i32, i32, <2 x i32>) #1 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.sqrt.f32(float) #1 ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.amdgcn.cubetc(float, float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.amdgcn.cubesc(float, float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.amdgcn.cubema(float, float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.amdgcn.cubeid(float, float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.fabs.f32(float) #1 ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.image.sample.b.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.pow.f32(float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.maxnum.f32(float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.AMDGPU.clamp.(float, float, float) #1 ; Function Attrs: nounwind declare void @llvm.AMDGPU.kill(float) #2 ; Function Attrs: nounwind readnone declare float @llvm.minnum.f32(float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.ceil.f32(float) #1 declare float @sqrtf(float) declare float @fabsf(float) attributes #0 = { "InitialPSInputAddr"="36983" } attributes #1 = { nounwind readnone } attributes #2 = { nounwind } !0 = !{} !1 = !{float 2.500000e+00} FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL IN[1], GENERIC[1], PERSPECTIVE DCL IN[2], GENERIC[2], PERSPECTIVE DCL IN[3], GENERIC[3], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL SAMP[2] DCL SAMP[3] DCL SAMP[4] DCL SAMP[5] DCL SVIEW[0], CUBE, FLOAT DCL SVIEW[1], CUBE, FLOAT DCL SVIEW[2], 2D, FLOAT DCL SVIEW[3], 2D, FLOAT DCL SVIEW[4], 2D, FLOAT DCL SVIEW[5], 2D, FLOAT DCL CONST[0..8] DCL CONST[10] DCL CONST[12..21] DCL CONST[26..28] DCL TEMP[0..14], LOCAL IMM[0] FLT32 { 0.0000, 2.0000, 1.0000, 0.5000} IMM[1] FLT32 { -1.0000, 1.2500, 3.0000, 0.0000} IMM[2] FLT32 { 1.0100, 0.0001, 0.0100, 64.0000} IMM[3] FLT32 { 1.4427, 4.0000, 1.2000, 1.7000} IMM[4] INT32 {1, 0, 0, 0} 0: MOV TEMP[0].x, IN[1].wwww 1: MOV TEMP[0].y, IN[2].wwww 2: MOV TEMP[0].z, IN[3].wwww 3: ADD TEMP[1].xyz, CONST[0].xyzz, -TEMP[0].xyzz 4: DP3 TEMP[2].x, TEMP[1].xyzz, TEMP[1].xyzz 5: RSQ TEMP[2].x, TEMP[2].xxxx 6: MUL TEMP[1].xyz, TEMP[1].xyzz, TEMP[2].xxxx 7: MUL TEMP[2].xyz, IN[1].xyzz, TEMP[1].xxxx 8: MAD TEMP[2].xyz, IN[2].xyzz, TEMP[1].yyyy, TEMP[2].xyzz 9: MAD TEMP[2].xyz, IN[3].xyzz, TEMP[1].zzzz, TEMP[2].xyzz 10: MOV TEMP[3].xy, IN[0].zwww 11: TEX TEMP[4], TEMP[3], SAMP[2], 2D 12: MOV TEMP[5].xy, IN[0].xyyy 13: TEX TEMP[5], TEMP[5], SAMP[5], 2D 14: MOV TEMP[6].xy, IN[0].zwww 15: TEX TEMP[6], TEMP[6], SAMP[3], 2D 16: MOV TEMP[7].xy, IN[0].xyyy 17: TEX TEMP[7], TEMP[7], SAMP[4], 2D 18: LRP TEMP[8].xyz, TEMP[5].wwww, TEMP[5].xyzz, TEMP[4].xyzz 19: MUL TEMP[8].xyz, TEMP[8].xyzz, CONST[26].xyzz 20: MUL TEMP[8].xyz, TEMP[8].xyzz, IMM[0].yyyy 21: MUL TEMP[9].xyz, TEMP[8].xyzz, CONST[16].xyzz 22: MUL TEMP[9].xyz, TEMP[9].xyzz, IMM[0].yyyy 23: ADD TEMP[10].xyz, IMM[0].zzzz, -TEMP[8].xyzz 24: MUL TEMP[10].xyz, IMM[0].yyyy, TEMP[10].xyzz 25: ADD TEMP[11].xyz, IMM[0].zzzz, -CONST[16].xyzz 26: MUL TEMP[10].xyz, TEMP[10].xyzz, TEMP[11].xyzz 27: ADD TEMP[10].xyz, IMM[0].zzzz, -TEMP[10].xyzz 28: FSGE TEMP[11].x, TEMP[8].xxxx, IMM[0].wwww 29: AND TEMP[11].x, TEMP[11].xxxx, IMM[0].zzzz 30: LRP TEMP[9].xyz, TEMP[11].xxxx, TEMP[10].xyzz, TEMP[9].xyzz 31: MUL TEMP[10].x, TEMP[7].xxxx, CONST[16].wwww 32: LRP TEMP[8].xyz, TEMP[10].xxxx, TEMP[9].xyzz, TEMP[8].xyzz 33: MUL TEMP[9].xyz, TEMP[8].xyzz, CONST[17].xyzz 34: MUL TEMP[9].xyz, TEMP[9].xyzz, IMM[0].yyyy 35: ADD TEMP[10].xyz, IMM[0].zzzz, -TEMP[8].xyzz 36: MUL TEMP[10].xyz, IMM[0].yyyy, TEMP[10].xyzz 37: ADD TEMP[11].xyz, IMM[0].zzzz, -CONST[17].xyzz 38: MUL TEMP[10].xyz, TEMP[10].xyzz, TEMP[11].xyzz 39: ADD TEMP[10].xyz, IMM[0].zzzz, -TEMP[10].xyzz 40: FSGE TEMP[11].x, TEMP[8].xxxx, IMM[0].wwww 41: AND TEMP[11].x, TEMP[11].xxxx, IMM[0].zzzz 42: LRP TEMP[9].xyz, TEMP[11].xxxx, TEMP[10].xyzz, TEMP[9].xyzz 43: MUL TEMP[10].x, TEMP[7].yyyy, CONST[17].wwww 44: LRP TEMP[8].xyz, TEMP[10].xxxx, TEMP[9].xyzz, TEMP[8].xyzz 45: MUL TEMP[9].xyz, TEMP[8].xyzz, CONST[18].xyzz 46: MUL TEMP[9].xyz, TEMP[9].xyzz, IMM[0].yyyy 47: ADD TEMP[10].xyz, IMM[0].zzzz, -TEMP[8].xyzz 48: MUL TEMP[10].xyz, IMM[0].yyyy, TEMP[10].xyzz 49: ADD TEMP[11].xyz, IMM[0].zzzz, -CONST[18].xyzz 50: MUL TEMP[10].xyz, TEMP[10].xyzz, TEMP[11].xyzz 51: ADD TEMP[10].xyz, IMM[0].zzzz, -TEMP[10].xyzz 52: FSGE TEMP[11].x, TEMP[8].xxxx, IMM[0].wwww 53: AND TEMP[11].x, TEMP[11].xxxx, IMM[0].zzzz 54: LRP TEMP[9].xyz, TEMP[11].xxxx, TEMP[10].xyzz, TEMP[9].xyzz 55: MUL TEMP[10].x, TEMP[7].zzzz, CONST[18].wwww 56: LRP TEMP[8].xyz, TEMP[10].xxxx, TEMP[9].xyzz, TEMP[8].xyzz 57: MAD TEMP[9].xyz, TEMP[6].xyzz, IMM[0].yyyy, IMM[1].xxxx 58: DP3 TEMP[10].x, TEMP[9].xyzz, TEMP[9].xyzz 59: RSQ TEMP[10].x, TEMP[10].xxxx 60: MUL TEMP[9].xyz, TEMP[9].xyzz, TEMP[10].xxxx 61: DP3 TEMP[10].x, IN[1].xyzz, TEMP[9].xyzz 62: DP3 TEMP[11].x, IN[2].xyzz, TEMP[9].xyzz 63: MOV TEMP[10].y, TEMP[11].xxxx 64: DP3 TEMP[11].x, IN[3].xyzz, TEMP[9].xyzz 65: MOV TEMP[10].z, TEMP[11].xxxx 66: MOV TEMP[11].w, IMM[0].zzzz 67: MOV TEMP[11].xyz, TEMP[8].xyzx 68: MUL TEMP[11], TEMP[11], TEMP[7].wwww 69: DP3 TEMP[12].x, TEMP[10].xyzz, TEMP[10].xyzz 70: RSQ TEMP[12].x, TEMP[12].xxxx 71: MUL TEMP[10].y, TEMP[10].xyzz, TEMP[12].xxxx 72: MOV TEMP[12], CONST[5] 73: FSLT TEMP[13].x, IMM[0].xxxx, TEMP[10].yyyy 74: UIF TEMP[13].xxxx :0 75: MOV_SAT TEMP[13].x, TEMP[10].yyyy 76: MUL TEMP[13].x, TEMP[13].xxxx, IMM[1].yyyy 77: MOV_SAT TEMP[13].x, TEMP[13].xxxx 78: MUL TEMP[14].x, IMM[0].yyyy, TEMP[13].xxxx 79: ADD TEMP[14].x, IMM[1].zzzz, -TEMP[14].xxxx 80: MUL TEMP[14].x, TEMP[13].xxxx, TEMP[14].xxxx 81: MUL TEMP[13].x, TEMP[13].xxxx, TEMP[14].xxxx 82: LRP TEMP[12], TEMP[13].xxxx, CONST[4], CONST[5] 83: ELSE :0 84: MOV_SAT TEMP[10].x, -TEMP[10].yyyy 85: MUL TEMP[10].x, TEMP[10].xxxx, IMM[1].yyyy 86: MOV_SAT TEMP[10].x, TEMP[10].xxxx 87: MUL TEMP[13].x, IMM[0].yyyy, TEMP[10].xxxx 88: ADD TEMP[13].x, IMM[1].zzzz, -TEMP[13].xxxx 89: MUL TEMP[13].x, TEMP[10].xxxx, TEMP[13].xxxx 90: MUL TEMP[10].x, TEMP[10].xxxx, TEMP[13].xxxx 91: LRP TEMP[12], TEMP[10].xxxx, CONST[6], TEMP[12] 92: ENDIF 93: ADD TEMP[10].x, IMM[0].zzzz, -TEMP[5].wwww 94: MUL TEMP[6].x, TEMP[6].wwww, TEMP[10].xxxx 95: MOV_SAT TEMP[6].x, TEMP[6].xxxx 96: MUL TEMP[10], TEMP[12], TEMP[11] 97: MUL TEMP[11].x, IMM[0].yyyy, CONST[7].xxxx 98: MUL TEMP[10].xyz, TEMP[10], TEMP[11].xxxx 99: DP3 TEMP[11].x, TEMP[2].xyzz, TEMP[2].xyzz 100: RSQ TEMP[11].x, TEMP[11].xxxx 101: MUL TEMP[11].xyz, TEMP[2].xyzz, TEMP[11].xxxx 102: DP3 TEMP[11].x, TEMP[11].xyzz, TEMP[9].xyzz 103: ADD TEMP[11].x, IMM[0].zzzz, -TEMP[11].xxxx 104: MAX TEMP[11].x, IMM[1].wwww, TEMP[11].xxxx 105: POW TEMP[11].x, TEMP[11].xxxx, CONST[21].xxxx 106: MAD TEMP[11], CONST[19], TEMP[11].xxxx, CONST[20] 107: ADD TEMP[7].x, IMM[0].zzzz, -TEMP[7].wwww 108: MOV_SAT TEMP[7].x, TEMP[7].xxxx 109: MUL TEMP[7].xyz, TEMP[11], TEMP[7].xxxx 110: ADD TEMP[3].xyz, TEMP[10].xyzz, TEMP[7].xyzz 111: ADD TEMP[5].x, IMM[2].xxxx, -TEMP[5].wwww 112: MUL TEMP[5].x, CONST[27].xxxx, TEMP[5].xxxx 113: MOV_SAT TEMP[5].x, TEMP[5].xxxx 114: MAD TEMP[2].x, TEMP[2].zzzz, IMM[1].wwww, TEMP[5].xxxx 115: FSLT TEMP[5].x, TEMP[4].wwww, CONST[28].xxxx 116: AND TEMP[5].x, TEMP[5].xxxx, IMM[0].zzzz 117: KILL_IF -TEMP[5].xxxx 118: DP3 TEMP[5].x, IN[1].xyzz, TEMP[9].xyzz 119: DP3 TEMP[7].x, IN[2].xyzz, TEMP[9].xyzz 120: MOV TEMP[5].y, TEMP[7].xxxx 121: DP3 TEMP[7].x, IN[3].xyzz, TEMP[9].xyzz 122: MOV TEMP[5].z, TEMP[7].xxxx 123: DP3 TEMP[7].x, TEMP[5].xyzz, TEMP[5].xyzz 124: RSQ TEMP[7].x, TEMP[7].xxxx 125: MUL TEMP[5].xyz, TEMP[5].xyzz, TEMP[7].xxxx 126: DP3 TEMP[7].x, CONST[1].xyzz, CONST[1].xyzz 127: RSQ TEMP[7].x, TEMP[7].xxxx 128: MUL TEMP[7].xyz, CONST[1].xyzz, TEMP[7].xxxx 129: DP3 TEMP[9].x, TEMP[1].xyzz, TEMP[1].xyzz 130: RSQ TEMP[9].x, TEMP[9].xxxx 131: MUL TEMP[9].xyz, TEMP[1].xyzz, TEMP[9].xxxx 132: DP3 TEMP[10].x, TEMP[5].xyzz, TEMP[7].xyzz 133: MAX TEMP[10].x, IMM[0].xxxx, TEMP[10].xxxx 134: MOV TEMP[11].x, IMM[0].xxxx 135: FSLT TEMP[12].x, IMM[0].xxxx, TEMP[6].xxxx 136: FSLT TEMP[13].x, IMM[0].xxxx, TEMP[2].xxxx 137: AND TEMP[12].x, TEMP[12].xxxx, TEMP[13].xxxx 138: UIF TEMP[12].xxxx :0 139: MOV TEMP[7].xyz, -TEMP[7].xyzx 140: DP3 TEMP[12].x, TEMP[5].xyzz, TEMP[7].xyzz 141: MUL TEMP[5].xyz, TEMP[12].xxxx, TEMP[5].xyzz 142: MUL TEMP[5].xyz, IMM[0].yyyy, TEMP[5].xyzz 143: ADD TEMP[5].xyz, TEMP[7].xyzz, -TEMP[5].xyzz 144: DP3 TEMP[5].x, TEMP[9].xyzz, TEMP[5].xyzz 145: MAX TEMP[5].x, IMM[1].wwww, TEMP[5].xxxx 146: MUL TEMP[7].x, TEMP[10].xxxx, IMM[0].yyyy 147: SQRT TEMP[7].x, TEMP[7].xxxx 148: MOV_SAT TEMP[7].x, TEMP[7].xxxx 149: MUL TEMP[5].x, TEMP[5].xxxx, TEMP[7].xxxx 150: ADD TEMP[2].x, TEMP[2].xxxx, IMM[2].zzzz 151: MUL TEMP[2].x, TEMP[2].xxxx, IMM[2].wwww 152: MAX TEMP[2].x, IMM[2].yyyy, TEMP[2].xxxx 153: POW TEMP[2].x, TEMP[5].xxxx, TEMP[2].xxxx 154: MUL TEMP[11].x, TEMP[2].xxxx, TEMP[6].xxxx 155: ENDIF 156: MUL TEMP[2].xyz, CONST[2].xyzz, CONST[3].xyzz 157: MUL TEMP[5].xyz, TEMP[8].xyzz, CONST[2].xyzz 158: MUL TEMP[5].xyz, TEMP[5].xyzz, TEMP[10].xxxx 159: MAD TEMP[2].xyz, TEMP[2].xyzz, TEMP[11].xxxx, TEMP[5].xyzz 160: ADD TEMP[1].xyz, TEMP[2].xyzz, TEMP[3].xyzz 161: ADD TEMP[2].xyz, TEMP[0].xyzz, -CONST[0].xyzz 162: DP3 TEMP[3].x, TEMP[2].xyzz, TEMP[2].xyzz 163: SQRT TEMP[3].x, TEMP[3].xxxx 164: DP3 TEMP[5].x, TEMP[2].xyzz, TEMP[2].xyzz 165: RSQ TEMP[5].x, TEMP[5].xxxx 166: MUL TEMP[2].xyz, TEMP[2].xyzz, TEMP[5].xxxx 167: MOV TEMP[5].x, -CONST[15].xxxx 168: MUL TEMP[6].x, TEMP[5].xxxx, IMM[3].xxxx 169: EX2 TEMP[6].x, TEMP[6].xxxx 170: ADD TEMP[6].x, IMM[0].zzzz, -TEMP[6].xxxx 171: ADD TEMP[7].x, CONST[14].wwww, -CONST[14].zzzz 172: ADD TEMP[7].x, TEMP[3].xxxx, -TEMP[7].xxxx 173: RCP TEMP[8].x, CONST[14].zzzz 174: MUL TEMP[7].x, TEMP[7].xxxx, TEMP[8].xxxx 175: MOV_SAT TEMP[7].x, TEMP[7].xxxx 176: MUL TEMP[7].x, TEMP[7].xxxx, TEMP[5].xxxx 177: MUL TEMP[7].x, TEMP[7].xxxx, IMM[3].xxxx 178: EX2 TEMP[7].x, TEMP[7].xxxx 179: ADD TEMP[7].x, IMM[0].zzzz, -TEMP[7].xxxx 180: RCP TEMP[8].x, TEMP[6].xxxx 181: MUL TEMP[7].x, TEMP[7].xxxx, TEMP[8].xxxx 182: MOV_SAT TEMP[7].x, TEMP[7].xxxx 183: ADD TEMP[8].x, TEMP[3].xxxx, -CONST[14].xxxx 184: RCP TEMP[9].x, CONST[14].yyyy 185: MUL TEMP[8].x, TEMP[8].xxxx, TEMP[9].xxxx 186: MOV_SAT TEMP[8].x, TEMP[8].xxxx 187: MUL TEMP[5].x, TEMP[8].xxxx, TEMP[5].xxxx 188: MUL TEMP[5].x, TEMP[5].xxxx, IMM[3].xxxx 189: EX2 TEMP[5].x, TEMP[5].xxxx 190: ADD TEMP[5].x, IMM[0].zzzz, -TEMP[5].xxxx 191: RCP TEMP[6].x, TEMP[6].xxxx 192: MUL TEMP[5].x, TEMP[5].xxxx, TEMP[6].xxxx 193: MOV_SAT TEMP[5].x, TEMP[5].xxxx 194: MOV TEMP[6].xyz, TEMP[2].xyzz 195: TEX TEMP[6], TEMP[6], SAMP[1], CUBE 196: MUL TEMP[6], TEMP[6], CONST[10] 197: DP3 TEMP[8].x, TEMP[2].xyzz, TEMP[2].xyzz 198: RSQ TEMP[8].x, TEMP[8].xxxx 199: MUL TEMP[8].y, TEMP[2].xyzz, TEMP[8].xxxx 200: MOV TEMP[9], CONST[5] 201: FSLT TEMP[10].x, IMM[0].xxxx, TEMP[8].yyyy 202: UIF TEMP[10].xxxx :0 203: MOV_SAT TEMP[10].x, TEMP[8].yyyy 204: MUL TEMP[10].x, TEMP[10].xxxx, IMM[1].yyyy 205: MOV_SAT TEMP[10].x, TEMP[10].xxxx 206: MUL TEMP[11].x, IMM[0].yyyy, TEMP[10].xxxx 207: ADD TEMP[11].x, IMM[1].zzzz, -TEMP[11].xxxx 208: MUL TEMP[11].x, TEMP[10].xxxx, TEMP[11].xxxx 209: MUL TEMP[10].x, TEMP[10].xxxx, TEMP[11].xxxx 210: LRP TEMP[9], TEMP[10].xxxx, CONST[4], CONST[5] 211: ELSE :0 212: MOV_SAT TEMP[8].x, -TEMP[8].yyyy 213: MUL TEMP[8].x, TEMP[8].xxxx, IMM[1].yyyy 214: MOV_SAT TEMP[8].x, TEMP[8].xxxx 215: MUL TEMP[10].x, IMM[0].yyyy, TEMP[8].xxxx 216: ADD TEMP[10].x, IMM[1].zzzz, -TEMP[10].xxxx 217: MUL TEMP[10].x, TEMP[8].xxxx, TEMP[10].xxxx 218: MUL TEMP[8].x, TEMP[8].xxxx, TEMP[10].xxxx 219: LRP TEMP[9], TEMP[8].xxxx, CONST[6], TEMP[9] 220: ENDIF 221: DP3 TEMP[8].x, TEMP[2].xyzz, TEMP[2].xyzz 222: RSQ TEMP[8].x, TEMP[8].xxxx 223: MUL TEMP[8].xyz, TEMP[2].xyzz, TEMP[8].xxxx 224: MUL TEMP[8].xyz, TEMP[8].xyzz, CONST[14].wwww 225: MUL TEMP[8].xyz, TEMP[8].xyzz, IMM[3].yyyy 226: MOV TEMP[10].xz, TEMP[8].xxzx 227: ADD TEMP[8].x, TEMP[8].yyyy, CONST[0].yyyy 228: MOV TEMP[10].y, TEMP[8].xxxx 229: MOV TEMP[8].xyz, TEMP[10].xyzz 230: TEX TEMP[8], TEMP[8], SAMP[0], CUBE 231: MUL TEMP[8].xyz, TEMP[8], CONST[8] 232: MUL TEMP[8].xyz, TEMP[8].xyzz, IMM[0].yyyy 233: LRP TEMP[7].xyz, TEMP[7].xxxx, TEMP[8].xyzz, CONST[13].xyzz 234: MUL TEMP[6].xyz, TEMP[6].xyzz, IMM[0].wwww 235: MUL TEMP[8], TEMP[9], CONST[8] 236: MUL TEMP[9].x, IMM[0].yyyy, CONST[7].xxxx 237: MUL TEMP[8].xyz, TEMP[8], TEMP[9].xxxx 238: MAD TEMP[6].xyz, TEMP[8].xyzz, IMM[0].wwww, TEMP[6].xyzz 239: MUL TEMP[8].x, TEMP[3].xxxx, CONST[15].zzzz 240: MUL TEMP[8].x, TEMP[8].xxxx, IMM[3].wwww 241: MUL TEMP[8].x, -TEMP[8].xxxx, IMM[3].xxxx 242: EX2 TEMP[8].x, TEMP[8].xxxx 243: ADD TEMP[8].x, IMM[3].zzzz, -TEMP[8].xxxx 244: MUL TEMP[8].x, TEMP[6].wwww, TEMP[8].xxxx 245: MUL TEMP[8].x, TEMP[8].xxxx, IMM[1].yyyy 246: MOV_SAT TEMP[8].x, TEMP[8].xxxx 247: LRP TEMP[2].xyz, TEMP[8].xxxx, TEMP[6].xyzz, TEMP[7].xyzz 248: MAX TEMP[5].x, TEMP[5].xxxx, TEMP[8].xxxx 249: MOV TEMP[2].w, TEMP[5].xxxx 250: FSLT TEMP[6].x, IMM[0].xxxx, CONST[12].yyyy 251: UIF TEMP[6].xxxx :0 252: MOV TEMP[6].xyz, IMM[0].xzxx 253: MOV TEMP[6].w, CONST[12].xxxx 254: MOV TEMP[7].w, IMM[0].zzzz 255: MOV TEMP[7].xyz, CONST[0].xyzx 256: DP4 TEMP[7].x, TEMP[6], TEMP[7] 257: FSGE TEMP[8].x, IMM[0].xxxx, TEMP[7].xxxx 258: UIF TEMP[8].xxxx :0 259: MOV TEMP[8].x, IMM[4].xxxx 260: ELSE :0 261: MOV TEMP[8].x, IMM[4].yyyy 262: ENDIF 263: I2F TEMP[8].x, TEMP[8].xxxx 264: MOV TEMP[9].w, IMM[0].zzzz 265: MOV TEMP[9].xyz, TEMP[0].xyzx 266: DP4 TEMP[9].x, TEMP[6], TEMP[9] 267: MOV TEMP[10].w, IMM[0].xxxx 268: ADD TEMP[10].xyz, CONST[0].xyzz, -TEMP[0].xyzz 269: MUL TEMP[11].x, IMM[0].yyyy, TEMP[8].xxxx 270: ADD TEMP[11].x, IMM[0].zzzz, -TEMP[11].xxxx 271: MUL TEMP[11].x, TEMP[11].xxxx, TEMP[9].xxxx 272: MIN TEMP[11].x, IMM[0].xxxx, TEMP[11].xxxx 273: MUL TEMP[3].x, CONST[12].zzzz, TEMP[3].xxxx 274: ADD TEMP[7].x, TEMP[9].xxxx, TEMP[7].xxxx 275: MUL TEMP[9].x, TEMP[11].xxxx, TEMP[11].xxxx 276: DP4 TEMP[6].x, TEMP[6], TEMP[10] 277: ABS TEMP[6].x, TEMP[6].xxxx 278: RCP TEMP[6].x, TEMP[6].xxxx 279: MUL TEMP[6].x, TEMP[9].xxxx, TEMP[6].xxxx 280: MAD TEMP[6].x, TEMP[8].xxxx, TEMP[7].xxxx, -TEMP[6].xxxx 281: MUL TEMP[3].x, -TEMP[3].xxxx, TEMP[6].xxxx 282: MUL TEMP[3].x, -TEMP[3].xxxx, CONST[12].yyyy 283: MUL TEMP[3].x, TEMP[3].xxxx, IMM[3].xxxx 284: EX2 TEMP[3].x, TEMP[3].xxxx 285: MOV_SAT TEMP[3].x, TEMP[3].xxxx 286: ADD TEMP[3].x, IMM[0].zzzz, -TEMP[3].xxxx 287: MAX TEMP[3].x, TEMP[5].xxxx, TEMP[3].xxxx 288: MOV TEMP[2].w, TEMP[3].xxxx 289: ENDIF 290: MOV_SAT TEMP[3].x, TEMP[2].wwww 291: LRP TEMP[0].xyz, TEMP[3].xxxx, TEMP[2].xyzz, TEMP[1].xyzz 292: MOV_SAT TEMP[1].x, TEMP[2].wwww 293: ADD TEMP[1].x, IMM[0].zzzz, -TEMP[1].xxxx 294: MUL TEMP[1].x, TEMP[4].wwww, TEMP[1].xxxx 295: MOV TEMP[0].w, TEMP[1].xxxx 296: MOV OUT[0], TEMP[0] 297: END radeonsi: Compiling shader 36 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_ps <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), float inreg, i32 inreg, <2 x i32>, <2 x i32>, <2 x i32>, <3 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, float, float, float, float, float, i32, i32, float, i32) #0 { main_body: %23 = call float @llvm.SI.fs.interp(i32 3, i32 1, i32 %6, <2 x i32> %8) %24 = call float @llvm.SI.fs.interp(i32 3, i32 2, i32 %6, <2 x i32> %8) %25 = call float @llvm.SI.fs.interp(i32 3, i32 3, i32 %6, <2 x i32> %8) %26 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %27 = load <16 x i8>, <16 x i8> addrspace(2)* %26, align 16, !invariant.load !0 %28 = call float @llvm.SI.load.const(<16 x i8> %27, i32 0) %29 = fsub float %28, %23 %30 = call float @llvm.SI.load.const(<16 x i8> %27, i32 4) %31 = fsub float %30, %24 %32 = call float @llvm.SI.load.const(<16 x i8> %27, i32 8) %33 = fsub float %32, %25 %34 = fmul float %29, %29 %35 = fmul float %31, %31 %36 = fadd float %35, %34 %37 = fmul float %33, %33 %38 = fadd float %36, %37 %39 = call float @llvm.sqrt.f32(float %38) %40 = fdiv float 1.000000e+00, %39, !fpmath !1 %41 = fmul float %29, %40 %42 = fmul float %31, %40 %43 = fmul float %33, %40 %44 = call float @llvm.SI.fs.interp(i32 0, i32 1, i32 %6, <2 x i32> %8) %45 = fmul float %44, %41 %46 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %47 = fmul float %46, %41 %48 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %49 = fmul float %48, %41 %50 = call float @llvm.SI.fs.interp(i32 0, i32 2, i32 %6, <2 x i32> %8) %51 = fmul float %50, %42 %52 = fadd float %51, %45 %53 = call float @llvm.SI.fs.interp(i32 1, i32 2, i32 %6, <2 x i32> %8) %54 = fmul float %53, %42 %55 = fadd float %54, %47 %56 = call float @llvm.SI.fs.interp(i32 2, i32 2, i32 %6, <2 x i32> %8) %57 = fmul float %56, %42 %58 = fadd float %57, %49 %59 = call float @llvm.SI.fs.interp(i32 0, i32 3, i32 %6, <2 x i32> %8) %60 = fmul float %59, %43 %61 = fadd float %60, %52 %62 = call float @llvm.SI.fs.interp(i32 1, i32 3, i32 %6, <2 x i32> %8) %63 = fmul float %62, %43 %64 = fadd float %63, %55 %65 = call float @llvm.SI.fs.interp(i32 2, i32 3, i32 %6, <2 x i32> %8) %66 = fmul float %65, %43 %67 = fadd float %66, %58 %68 = call float @llvm.SI.fs.interp(i32 2, i32 0, i32 %6, <2 x i32> %8) %69 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %6, <2 x i32> %8) %70 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 4, !amdgpu.uniform !0 %71 = load <8 x i32>, <8 x i32> addrspace(2)* %70, align 32, !invariant.load !0 %72 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %73 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %72, i64 0, i64 11, !amdgpu.uniform !0 %74 = load <4 x i32>, <4 x i32> addrspace(2)* %73, align 16, !invariant.load !0 %75 = bitcast float %68 to i32 %76 = bitcast float %69 to i32 %77 = insertelement <2 x i32> undef, i32 %75, i32 0 %78 = insertelement <2 x i32> %77, i32 %76, i32 1 %79 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %78, <8 x i32> %71, <4 x i32> %74, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %80 = extractelement <4 x float> %79, i32 0 %81 = extractelement <4 x float> %79, i32 1 %82 = extractelement <4 x float> %79, i32 2 %83 = extractelement <4 x float> %79, i32 3 %84 = call float @llvm.SI.fs.interp(i32 0, i32 0, i32 %6, <2 x i32> %8) %85 = call float @llvm.SI.fs.interp(i32 1, i32 0, i32 %6, <2 x i32> %8) %86 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 10, !amdgpu.uniform !0 %87 = load <8 x i32>, <8 x i32> addrspace(2)* %86, align 32, !invariant.load !0 %88 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %89 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %88, i64 0, i64 23, !amdgpu.uniform !0 %90 = load <4 x i32>, <4 x i32> addrspace(2)* %89, align 16, !invariant.load !0 %91 = bitcast float %84 to i32 %92 = bitcast float %85 to i32 %93 = insertelement <2 x i32> undef, i32 %91, i32 0 %94 = insertelement <2 x i32> %93, i32 %92, i32 1 %95 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %94, <8 x i32> %87, <4 x i32> %90, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %96 = extractelement <4 x float> %95, i32 0 %97 = extractelement <4 x float> %95, i32 1 %98 = extractelement <4 x float> %95, i32 2 %99 = extractelement <4 x float> %95, i32 3 %100 = call float @llvm.SI.fs.interp(i32 2, i32 0, i32 %6, <2 x i32> %8) %101 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %6, <2 x i32> %8) %102 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 6, !amdgpu.uniform !0 %103 = load <8 x i32>, <8 x i32> addrspace(2)* %102, align 32, !invariant.load !0 %104 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %105 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %104, i64 0, i64 15, !amdgpu.uniform !0 %106 = load <4 x i32>, <4 x i32> addrspace(2)* %105, align 16, !invariant.load !0 %107 = bitcast float %100 to i32 %108 = bitcast float %101 to i32 %109 = insertelement <2 x i32> undef, i32 %107, i32 0 %110 = insertelement <2 x i32> %109, i32 %108, i32 1 %111 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %110, <8 x i32> %103, <4 x i32> %106, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %112 = extractelement <4 x float> %111, i32 0 %113 = extractelement <4 x float> %111, i32 1 %114 = extractelement <4 x float> %111, i32 2 %115 = extractelement <4 x float> %111, i32 3 %116 = call float @llvm.SI.fs.interp(i32 0, i32 0, i32 %6, <2 x i32> %8) %117 = call float @llvm.SI.fs.interp(i32 1, i32 0, i32 %6, <2 x i32> %8) %118 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 8, !amdgpu.uniform !0 %119 = load <8 x i32>, <8 x i32> addrspace(2)* %118, align 32, !invariant.load !0 %120 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %121 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %120, i64 0, i64 19, !amdgpu.uniform !0 %122 = load <4 x i32>, <4 x i32> addrspace(2)* %121, align 16, !invariant.load !0 %123 = bitcast float %116 to i32 %124 = bitcast float %117 to i32 %125 = insertelement <2 x i32> undef, i32 %123, i32 0 %126 = insertelement <2 x i32> %125, i32 %124, i32 1 %127 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %126, <8 x i32> %119, <4 x i32> %122, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %128 = extractelement <4 x float> %127, i32 0 %129 = extractelement <4 x float> %127, i32 1 %130 = extractelement <4 x float> %127, i32 2 %131 = extractelement <4 x float> %127, i32 3 %132 = fsub float 1.000000e+00, %99 %133 = fmul float %96, %99 %134 = fmul float %80, %132 %135 = fadd float %133, %134 %136 = fsub float 1.000000e+00, %99 %137 = fmul float %97, %99 %138 = fmul float %81, %136 %139 = fadd float %137, %138 %140 = fsub float 1.000000e+00, %99 %141 = fmul float %98, %99 %142 = fmul float %82, %140 %143 = fadd float %141, %142 %144 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %145 = load <16 x i8>, <16 x i8> addrspace(2)* %144, align 16, !invariant.load !0 %146 = call float @llvm.SI.load.const(<16 x i8> %145, i32 416) %147 = fmul float %135, %146 %148 = call float @llvm.SI.load.const(<16 x i8> %145, i32 420) %149 = fmul float %139, %148 %150 = call float @llvm.SI.load.const(<16 x i8> %145, i32 424) %151 = fmul float %143, %150 %152 = fmul float %147, 2.000000e+00 %153 = fmul float %149, 2.000000e+00 %154 = fmul float %151, 2.000000e+00 %155 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %156 = load <16 x i8>, <16 x i8> addrspace(2)* %155, align 16, !invariant.load !0 %157 = call float @llvm.SI.load.const(<16 x i8> %156, i32 256) %158 = fmul float %152, %157 %159 = call float @llvm.SI.load.const(<16 x i8> %156, i32 260) %160 = fmul float %153, %159 %161 = call float @llvm.SI.load.const(<16 x i8> %156, i32 264) %162 = fmul float %154, %161 %163 = fmul float %158, 2.000000e+00 %164 = fmul float %160, 2.000000e+00 %165 = fmul float %162, 2.000000e+00 %166 = fsub float 1.000000e+00, %152 %167 = fsub float 1.000000e+00, %153 %168 = fsub float 1.000000e+00, %154 %169 = fmul float %166, 2.000000e+00 %170 = fmul float %167, 2.000000e+00 %171 = fmul float %168, 2.000000e+00 %172 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %173 = load <16 x i8>, <16 x i8> addrspace(2)* %172, align 16, !invariant.load !0 %174 = call float @llvm.SI.load.const(<16 x i8> %173, i32 256) %175 = fsub float 1.000000e+00, %174 %176 = call float @llvm.SI.load.const(<16 x i8> %173, i32 260) %177 = fsub float 1.000000e+00, %176 %178 = call float @llvm.SI.load.const(<16 x i8> %173, i32 264) %179 = fsub float 1.000000e+00, %178 %180 = fmul float %169, %175 %181 = fmul float %170, %177 %182 = fmul float %171, %179 %183 = fsub float 1.000000e+00, %180 %184 = fsub float 1.000000e+00, %181 %185 = fsub float 1.000000e+00, %182 %186 = fcmp oge float %152, 5.000000e-01 %187 = select i1 %186, float 1.000000e+00, float 0.000000e+00 %188 = fsub float 1.000000e+00, %187 %189 = fmul float %183, %187 %190 = fmul float %163, %188 %191 = fadd float %189, %190 %192 = fsub float 1.000000e+00, %187 %193 = fmul float %184, %187 %194 = fmul float %164, %192 %195 = fadd float %193, %194 %196 = fsub float 1.000000e+00, %187 %197 = fmul float %185, %187 %198 = fmul float %165, %196 %199 = fadd float %197, %198 %200 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %201 = load <16 x i8>, <16 x i8> addrspace(2)* %200, align 16, !invariant.load !0 %202 = call float @llvm.SI.load.const(<16 x i8> %201, i32 268) %203 = fmul float %128, %202 %204 = fsub float 1.000000e+00, %203 %205 = fmul float %191, %203 %206 = fmul float %152, %204 %207 = fadd float %205, %206 %208 = fsub float 1.000000e+00, %203 %209 = fmul float %195, %203 %210 = fmul float %153, %208 %211 = fadd float %209, %210 %212 = fsub float 1.000000e+00, %203 %213 = fmul float %199, %203 %214 = fmul float %154, %212 %215 = fadd float %213, %214 %216 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %217 = load <16 x i8>, <16 x i8> addrspace(2)* %216, align 16, !invariant.load !0 %218 = call float @llvm.SI.load.const(<16 x i8> %217, i32 272) %219 = fmul float %207, %218 %220 = call float @llvm.SI.load.const(<16 x i8> %217, i32 276) %221 = fmul float %211, %220 %222 = call float @llvm.SI.load.const(<16 x i8> %217, i32 280) %223 = fmul float %215, %222 %224 = fmul float %219, 2.000000e+00 %225 = fmul float %221, 2.000000e+00 %226 = fmul float %223, 2.000000e+00 %227 = fsub float 1.000000e+00, %207 %228 = fsub float 1.000000e+00, %211 %229 = fsub float 1.000000e+00, %215 %230 = fmul float %227, 2.000000e+00 %231 = fmul float %228, 2.000000e+00 %232 = fmul float %229, 2.000000e+00 %233 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %234 = load <16 x i8>, <16 x i8> addrspace(2)* %233, align 16, !invariant.load !0 %235 = call float @llvm.SI.load.const(<16 x i8> %234, i32 272) %236 = fsub float 1.000000e+00, %235 %237 = call float @llvm.SI.load.const(<16 x i8> %234, i32 276) %238 = fsub float 1.000000e+00, %237 %239 = call float @llvm.SI.load.const(<16 x i8> %234, i32 280) %240 = fsub float 1.000000e+00, %239 %241 = fmul float %230, %236 %242 = fmul float %231, %238 %243 = fmul float %232, %240 %244 = fsub float 1.000000e+00, %241 %245 = fsub float 1.000000e+00, %242 %246 = fsub float 1.000000e+00, %243 %247 = fcmp oge float %207, 5.000000e-01 %248 = select i1 %247, float 1.000000e+00, float 0.000000e+00 %249 = fsub float 1.000000e+00, %248 %250 = fmul float %244, %248 %251 = fmul float %224, %249 %252 = fadd float %250, %251 %253 = fsub float 1.000000e+00, %248 %254 = fmul float %245, %248 %255 = fmul float %225, %253 %256 = fadd float %254, %255 %257 = fsub float 1.000000e+00, %248 %258 = fmul float %246, %248 %259 = fmul float %226, %257 %260 = fadd float %258, %259 %261 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %262 = load <16 x i8>, <16 x i8> addrspace(2)* %261, align 16, !invariant.load !0 %263 = call float @llvm.SI.load.const(<16 x i8> %262, i32 284) %264 = fmul float %129, %263 %265 = fsub float 1.000000e+00, %264 %266 = fmul float %252, %264 %267 = fmul float %207, %265 %268 = fadd float %266, %267 %269 = fsub float 1.000000e+00, %264 %270 = fmul float %256, %264 %271 = fmul float %211, %269 %272 = fadd float %270, %271 %273 = fsub float 1.000000e+00, %264 %274 = fmul float %260, %264 %275 = fmul float %215, %273 %276 = fadd float %274, %275 %277 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %278 = load <16 x i8>, <16 x i8> addrspace(2)* %277, align 16, !invariant.load !0 %279 = call float @llvm.SI.load.const(<16 x i8> %278, i32 288) %280 = fmul float %268, %279 %281 = call float @llvm.SI.load.const(<16 x i8> %278, i32 292) %282 = fmul float %272, %281 %283 = call float @llvm.SI.load.const(<16 x i8> %278, i32 296) %284 = fmul float %276, %283 %285 = fmul float %280, 2.000000e+00 %286 = fmul float %282, 2.000000e+00 %287 = fmul float %284, 2.000000e+00 %288 = fsub float 1.000000e+00, %268 %289 = fsub float 1.000000e+00, %272 %290 = fsub float 1.000000e+00, %276 %291 = fmul float %288, 2.000000e+00 %292 = fmul float %289, 2.000000e+00 %293 = fmul float %290, 2.000000e+00 %294 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %295 = load <16 x i8>, <16 x i8> addrspace(2)* %294, align 16, !invariant.load !0 %296 = call float @llvm.SI.load.const(<16 x i8> %295, i32 288) %297 = fsub float 1.000000e+00, %296 %298 = call float @llvm.SI.load.const(<16 x i8> %295, i32 292) %299 = fsub float 1.000000e+00, %298 %300 = call float @llvm.SI.load.const(<16 x i8> %295, i32 296) %301 = fsub float 1.000000e+00, %300 %302 = fmul float %291, %297 %303 = fmul float %292, %299 %304 = fmul float %293, %301 %305 = fsub float 1.000000e+00, %302 %306 = fsub float 1.000000e+00, %303 %307 = fsub float 1.000000e+00, %304 %308 = fcmp oge float %268, 5.000000e-01 %309 = select i1 %308, float 1.000000e+00, float 0.000000e+00 %310 = fsub float 1.000000e+00, %309 %311 = fmul float %305, %309 %312 = fmul float %285, %310 %313 = fadd float %311, %312 %314 = fsub float 1.000000e+00, %309 %315 = fmul float %306, %309 %316 = fmul float %286, %314 %317 = fadd float %315, %316 %318 = fsub float 1.000000e+00, %309 %319 = fmul float %307, %309 %320 = fmul float %287, %318 %321 = fadd float %319, %320 %322 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %323 = load <16 x i8>, <16 x i8> addrspace(2)* %322, align 16, !invariant.load !0 %324 = call float @llvm.SI.load.const(<16 x i8> %323, i32 300) %325 = fmul float %130, %324 %326 = fsub float 1.000000e+00, %325 %327 = fmul float %313, %325 %328 = fmul float %268, %326 %329 = fadd float %327, %328 %330 = fsub float 1.000000e+00, %325 %331 = fmul float %317, %325 %332 = fmul float %272, %330 %333 = fadd float %331, %332 %334 = fsub float 1.000000e+00, %325 %335 = fmul float %321, %325 %336 = fmul float %276, %334 %337 = fadd float %335, %336 %338 = fmul float %112, 2.000000e+00 %339 = fadd float %338, -1.000000e+00 %340 = fmul float %113, 2.000000e+00 %341 = fadd float %340, -1.000000e+00 %342 = fmul float %114, 2.000000e+00 %343 = fadd float %342, -1.000000e+00 %344 = fmul float %339, %339 %345 = fmul float %341, %341 %346 = fadd float %345, %344 %347 = fmul float %343, %343 %348 = fadd float %346, %347 %349 = call float @llvm.sqrt.f32(float %348) %350 = fdiv float 1.000000e+00, %349, !fpmath !1 %351 = fmul float %339, %350 %352 = fmul float %341, %350 %353 = fmul float %343, %350 %354 = call float @llvm.SI.fs.interp(i32 0, i32 1, i32 %6, <2 x i32> %8) %355 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %356 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %357 = fmul float %354, %351 %358 = fmul float %355, %352 %359 = fadd float %358, %357 %360 = fmul float %356, %353 %361 = fadd float %359, %360 %362 = call float @llvm.SI.fs.interp(i32 0, i32 2, i32 %6, <2 x i32> %8) %363 = call float @llvm.SI.fs.interp(i32 1, i32 2, i32 %6, <2 x i32> %8) %364 = call float @llvm.SI.fs.interp(i32 2, i32 2, i32 %6, <2 x i32> %8) %365 = fmul float %362, %351 %366 = fmul float %363, %352 %367 = fadd float %366, %365 %368 = fmul float %364, %353 %369 = fadd float %367, %368 %370 = call float @llvm.SI.fs.interp(i32 0, i32 3, i32 %6, <2 x i32> %8) %371 = call float @llvm.SI.fs.interp(i32 1, i32 3, i32 %6, <2 x i32> %8) %372 = call float @llvm.SI.fs.interp(i32 2, i32 3, i32 %6, <2 x i32> %8) %373 = fmul float %370, %351 %374 = fmul float %371, %352 %375 = fadd float %374, %373 %376 = fmul float %372, %353 %377 = fadd float %375, %376 %378 = fmul float %329, %131 %379 = fmul float %333, %131 %380 = fmul float %337, %131 %381 = fmul float %361, %361 %382 = fmul float %369, %369 %383 = fadd float %382, %381 %384 = fmul float %377, %377 %385 = fadd float %383, %384 %386 = call float @llvm.sqrt.f32(float %385) %387 = fdiv float 1.000000e+00, %386, !fpmath !1 %388 = fmul float %369, %387 %389 = fcmp ogt float %388, 0.000000e+00 br i1 %389, label %if74, label %else83 if74: ; preds = %main_body %390 = call float @llvm.AMDGPU.clamp.(float %388, float 0.000000e+00, float 1.000000e+00) %391 = fmul float %390, 1.250000e+00 %392 = call float @llvm.AMDGPU.clamp.(float %391, float 0.000000e+00, float 1.000000e+00) %393 = fmul float %392, 2.000000e+00 %394 = fsub float 3.000000e+00, %393 %395 = fmul float %392, %394 %396 = fmul float %392, %395 %397 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %398 = load <16 x i8>, <16 x i8> addrspace(2)* %397, align 16, !invariant.load !0 %399 = call float @llvm.SI.load.const(<16 x i8> %398, i32 64) %400 = call float @llvm.SI.load.const(<16 x i8> %398, i32 80) %401 = fsub float 1.000000e+00, %396 %402 = fmul float %399, %396 %403 = fmul float %400, %401 %404 = fadd float %402, %403 %405 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %406 = load <16 x i8>, <16 x i8> addrspace(2)* %405, align 16, !invariant.load !0 %407 = call float @llvm.SI.load.const(<16 x i8> %406, i32 68) %408 = call float @llvm.SI.load.const(<16 x i8> %406, i32 84) %409 = fsub float 1.000000e+00, %396 %410 = fmul float %407, %396 %411 = fmul float %408, %409 %412 = fadd float %410, %411 %413 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %414 = load <16 x i8>, <16 x i8> addrspace(2)* %413, align 16, !invariant.load !0 %415 = call float @llvm.SI.load.const(<16 x i8> %414, i32 72) %416 = call float @llvm.SI.load.const(<16 x i8> %414, i32 88) %417 = fmul float %415, %396 br label %endif92 else83: ; preds = %main_body %418 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %419 = load <16 x i8>, <16 x i8> addrspace(2)* %418, align 16, !invariant.load !0 %420 = call float @llvm.SI.load.const(<16 x i8> %419, i32 88) %421 = call float @llvm.SI.load.const(<16 x i8> %419, i32 84) %422 = call float @llvm.SI.load.const(<16 x i8> %419, i32 80) %423 = fsub float -0.000000e+00, %388 %424 = call float @llvm.AMDGPU.clamp.(float %423, float 0.000000e+00, float 1.000000e+00) %425 = fmul float %424, 1.250000e+00 %426 = call float @llvm.AMDGPU.clamp.(float %425, float 0.000000e+00, float 1.000000e+00) %427 = fmul float %426, 2.000000e+00 %428 = fsub float 3.000000e+00, %427 %429 = fmul float %426, %428 %430 = fmul float %426, %429 %431 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %432 = load <16 x i8>, <16 x i8> addrspace(2)* %431, align 16, !invariant.load !0 %433 = call float @llvm.SI.load.const(<16 x i8> %432, i32 96) %434 = fsub float 1.000000e+00, %430 %435 = fmul float %433, %430 %436 = fmul float %422, %434 %437 = fadd float %435, %436 %438 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %439 = load <16 x i8>, <16 x i8> addrspace(2)* %438, align 16, !invariant.load !0 %440 = call float @llvm.SI.load.const(<16 x i8> %439, i32 100) %441 = fsub float 1.000000e+00, %430 %442 = fmul float %440, %430 %443 = fmul float %421, %441 %444 = fadd float %442, %443 %445 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %446 = load <16 x i8>, <16 x i8> addrspace(2)* %445, align 16, !invariant.load !0 %447 = call float @llvm.SI.load.const(<16 x i8> %446, i32 104) %448 = fmul float %447, %430 br label %endif92 endif92: ; preds = %else83, %if74 %.pn = phi float [ %430, %else83 ], [ %396, %if74 ] %.sink13 = phi float [ %420, %else83 ], [ %416, %if74 ] %.sink = phi float [ %448, %else83 ], [ %417, %if74 ] %.04 = phi float [ %437, %else83 ], [ %404, %if74 ] %.03 = phi float [ %444, %else83 ], [ %412, %if74 ] %.sink14 = fsub float 1.000000e+00, %.pn %449 = fmul float %.sink13, %.sink14 %450 = fadd float %.sink, %449 %451 = fsub float 1.000000e+00, %99 %452 = fmul float %115, %451 %453 = call float @llvm.AMDGPU.clamp.(float %452, float 0.000000e+00, float 1.000000e+00) %454 = fmul float %.04, %378 %455 = fmul float %.03, %379 %456 = fmul float %450, %380 %457 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %458 = load <16 x i8>, <16 x i8> addrspace(2)* %457, align 16, !invariant.load !0 %459 = call float @llvm.SI.load.const(<16 x i8> %458, i32 112) %460 = fmul float %459, 2.000000e+00 %461 = fmul float %454, %460 %462 = fmul float %455, %460 %463 = fmul float %456, %460 %464 = fmul float %61, %61 %465 = fmul float %64, %64 %466 = fadd float %465, %464 %467 = fmul float %67, %67 %468 = fadd float %466, %467 %469 = call float @llvm.sqrt.f32(float %468) %470 = fdiv float 1.000000e+00, %469, !fpmath !1 %471 = fmul float %61, %470 %472 = fmul float %64, %470 %473 = fmul float %67, %470 %474 = fmul float %471, %351 %475 = fmul float %472, %352 %476 = fadd float %475, %474 %477 = fmul float %473, %353 %478 = fadd float %476, %477 %479 = fsub float 1.000000e+00, %478 %480 = call float @llvm.maxnum.f32(float %479, float 0x3EE4F8B580000000) %481 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %482 = load <16 x i8>, <16 x i8> addrspace(2)* %481, align 16, !invariant.load !0 %483 = call float @llvm.SI.load.const(<16 x i8> %482, i32 336) %484 = call float @llvm.pow.f32(float %480, float %483) %485 = call float @llvm.SI.load.const(<16 x i8> %482, i32 304) %486 = call float @llvm.SI.load.const(<16 x i8> %482, i32 320) %487 = fmul float %485, %484 %488 = fadd float %487, %486 %489 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %490 = load <16 x i8>, <16 x i8> addrspace(2)* %489, align 16, !invariant.load !0 %491 = call float @llvm.SI.load.const(<16 x i8> %490, i32 308) %492 = call float @llvm.SI.load.const(<16 x i8> %490, i32 324) %493 = fmul float %491, %484 %494 = fadd float %493, %492 %495 = call float @llvm.SI.load.const(<16 x i8> %490, i32 312) %496 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %497 = load <16 x i8>, <16 x i8> addrspace(2)* %496, align 16, !invariant.load !0 %498 = call float @llvm.SI.load.const(<16 x i8> %497, i32 328) %499 = fmul float %495, %484 %500 = fadd float %499, %498 %501 = fsub float 1.000000e+00, %131 %502 = call float @llvm.AMDGPU.clamp.(float %501, float 0.000000e+00, float 1.000000e+00) %503 = fmul float %488, %502 %504 = fmul float %494, %502 %505 = fmul float %500, %502 %506 = fadd float %461, %503 %507 = fadd float %462, %504 %508 = fadd float %463, %505 %509 = fsub float 0x3FF028F5C0000000, %99 %510 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %511 = load <16 x i8>, <16 x i8> addrspace(2)* %510, align 16, !invariant.load !0 %512 = call float @llvm.SI.load.const(<16 x i8> %511, i32 432) %513 = fmul float %512, %509 %514 = call float @llvm.AMDGPU.clamp.(float %513, float 0.000000e+00, float 1.000000e+00) %515 = fmul float %67, 0x3EE4F8B580000000 %516 = fadd float %515, %514 %517 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %518 = load <16 x i8>, <16 x i8> addrspace(2)* %517, align 16, !invariant.load !0 %519 = call float @llvm.SI.load.const(<16 x i8> %518, i32 448) %520 = fcmp olt float %83, %519 %521 = select i1 %520, float -1.000000e+00, float 0.000000e+00 call void @llvm.AMDGPU.kill(float %521) %522 = call float @llvm.SI.fs.interp(i32 0, i32 1, i32 %6, <2 x i32> %8) %523 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %524 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %525 = fmul float %522, %351 %526 = fmul float %523, %352 %527 = fadd float %526, %525 %528 = fmul float %524, %353 %529 = fadd float %527, %528 %530 = call float @llvm.SI.fs.interp(i32 0, i32 2, i32 %6, <2 x i32> %8) %531 = call float @llvm.SI.fs.interp(i32 1, i32 2, i32 %6, <2 x i32> %8) %532 = call float @llvm.SI.fs.interp(i32 2, i32 2, i32 %6, <2 x i32> %8) %533 = fmul float %530, %351 %534 = fmul float %531, %352 %535 = fadd float %534, %533 %536 = fmul float %532, %353 %537 = fadd float %535, %536 %538 = call float @llvm.SI.fs.interp(i32 0, i32 3, i32 %6, <2 x i32> %8) %539 = call float @llvm.SI.fs.interp(i32 1, i32 3, i32 %6, <2 x i32> %8) %540 = call float @llvm.SI.fs.interp(i32 2, i32 3, i32 %6, <2 x i32> %8) %541 = fmul float %538, %351 %542 = fmul float %539, %352 %543 = fadd float %542, %541 %544 = fmul float %540, %353 %545 = fadd float %543, %544 %546 = fmul float %529, %529 %547 = fmul float %537, %537 %548 = fadd float %547, %546 %549 = fmul float %545, %545 %550 = fadd float %548, %549 %551 = call float @llvm.sqrt.f32(float %550) %552 = fdiv float 1.000000e+00, %551, !fpmath !1 %553 = fmul float %529, %552 %554 = fmul float %537, %552 %555 = fmul float %545, %552 %556 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %557 = load <16 x i8>, <16 x i8> addrspace(2)* %556, align 16, !invariant.load !0 %558 = call float @llvm.SI.load.const(<16 x i8> %557, i32 16) %559 = call float @llvm.SI.load.const(<16 x i8> %557, i32 20) %560 = call float @llvm.SI.load.const(<16 x i8> %557, i32 24) %561 = call float @llvm.SI.load.const(<16 x i8> %557, i32 16) %562 = call float @llvm.SI.load.const(<16 x i8> %557, i32 20) %563 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %564 = load <16 x i8>, <16 x i8> addrspace(2)* %563, align 16, !invariant.load !0 %565 = call float @llvm.SI.load.const(<16 x i8> %564, i32 24) %566 = fmul float %558, %561 %567 = fmul float %559, %562 %568 = fadd float %567, %566 %569 = fmul float %560, %565 %570 = fadd float %568, %569 %571 = call float @llvm.sqrt.f32(float %570) %572 = fdiv float 1.000000e+00, %571, !fpmath !1 %573 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %574 = load <16 x i8>, <16 x i8> addrspace(2)* %573, align 16, !invariant.load !0 %575 = call float @llvm.SI.load.const(<16 x i8> %574, i32 16) %576 = fmul float %575, %572 %577 = call float @llvm.SI.load.const(<16 x i8> %574, i32 20) %578 = fmul float %577, %572 %579 = call float @llvm.SI.load.const(<16 x i8> %574, i32 24) %580 = fmul float %579, %572 %581 = fmul float %41, %41 %582 = fmul float %42, %42 %583 = fadd float %582, %581 %584 = fmul float %43, %43 %585 = fadd float %583, %584 %586 = call float @llvm.sqrt.f32(float %585) %587 = fdiv float 1.000000e+00, %586, !fpmath !1 %588 = fmul float %553, %576 %589 = fmul float %554, %578 %590 = fadd float %589, %588 %591 = fmul float %555, %580 %592 = fadd float %590, %591 %593 = call float @llvm.maxnum.f32(float %592, float 0.000000e+00) %594 = fcmp ogt float %453, 0.000000e+00 %595 = fcmp ogt float %516, 0.000000e+00 %596 = and i1 %594, %595 br i1 %596, label %if138, label %endif155 if138: ; preds = %endif92 %597 = fmul float %43, %587 %598 = fmul float %42, %587 %599 = fmul float %41, %587 %600 = fmul float %576, %553 %601 = fsub float -0.000000e+00, %600 %602 = fmul float %578, %554 %603 = fsub float %601, %602 %604 = fmul float %580, %555 %605 = fsub float %603, %604 %606 = fmul float %605, %553 %607 = fmul float %605, %554 %608 = fmul float %605, %555 %609 = fmul float %606, 2.000000e+00 %610 = fmul float %607, 2.000000e+00 %611 = fmul float %608, 2.000000e+00 %612 = fsub float -0.000000e+00, %609 %613 = fsub float %612, %576 %614 = fsub float -0.000000e+00, %610 %615 = fsub float %614, %578 %616 = fsub float -0.000000e+00, %611 %617 = fsub float %616, %580 %618 = fmul float %599, %613 %619 = fmul float %598, %615 %620 = fadd float %619, %618 %621 = fmul float %597, %617 %622 = fadd float %620, %621 %623 = call float @llvm.maxnum.f32(float %622, float 0x3EE4F8B580000000) %624 = fmul float %593, 2.000000e+00 %625 = call float @llvm.sqrt.f32(float %624) %626 = call float @llvm.AMDGPU.clamp.(float %625, float 0.000000e+00, float 1.000000e+00) %627 = fmul float %623, %626 %628 = fadd float %516, 0x3F847AE140000000 %629 = fmul float %628, 6.400000e+01 %630 = call float @llvm.maxnum.f32(float %629, float 0x3F1A36E2E0000000) %631 = call float @llvm.pow.f32(float %627, float %630) %632 = fmul float %631, %453 br label %endif155 endif155: ; preds = %if138, %endif92 %.05 = phi float [ %632, %if138 ], [ 0.000000e+00, %endif92 ] %633 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %634 = load <16 x i8>, <16 x i8> addrspace(2)* %633, align 16, !invariant.load !0 %635 = call float @llvm.SI.load.const(<16 x i8> %634, i32 32) %636 = call float @llvm.SI.load.const(<16 x i8> %634, i32 48) %637 = fmul float %635, %636 %638 = call float @llvm.SI.load.const(<16 x i8> %634, i32 36) %639 = call float @llvm.SI.load.const(<16 x i8> %634, i32 52) %640 = fmul float %638, %639 %641 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %642 = load <16 x i8>, <16 x i8> addrspace(2)* %641, align 16, !invariant.load !0 %643 = call float @llvm.SI.load.const(<16 x i8> %642, i32 40) %644 = call float @llvm.SI.load.const(<16 x i8> %642, i32 56) %645 = fmul float %643, %644 %646 = call float @llvm.SI.load.const(<16 x i8> %642, i32 32) %647 = fmul float %329, %646 %648 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %649 = load <16 x i8>, <16 x i8> addrspace(2)* %648, align 16, !invariant.load !0 %650 = call float @llvm.SI.load.const(<16 x i8> %649, i32 36) %651 = fmul float %333, %650 %652 = call float @llvm.SI.load.const(<16 x i8> %649, i32 40) %653 = fmul float %337, %652 %654 = fmul float %647, %593 %655 = fmul float %651, %593 %656 = fmul float %653, %593 %657 = fmul float %637, %.05 %658 = fadd float %657, %654 %659 = fmul float %640, %.05 %660 = fadd float %659, %655 %661 = fmul float %645, %.05 %662 = fadd float %661, %656 %663 = fadd float %658, %506 %664 = fadd float %660, %507 %665 = fadd float %662, %508 %666 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %667 = load <16 x i8>, <16 x i8> addrspace(2)* %666, align 16, !invariant.load !0 %668 = call float @llvm.SI.load.const(<16 x i8> %667, i32 0) %669 = fsub float %23, %668 %670 = call float @llvm.SI.load.const(<16 x i8> %667, i32 4) %671 = fsub float %24, %670 %672 = call float @llvm.SI.load.const(<16 x i8> %667, i32 8) %673 = fsub float %25, %672 %674 = fmul float %669, %669 %675 = fmul float %671, %671 %676 = fadd float %675, %674 %677 = fmul float %673, %673 %678 = fadd float %676, %677 %679 = call float @llvm.sqrt.f32(float %678) %680 = fmul float %669, %669 %681 = fmul float %671, %671 %682 = fadd float %681, %680 %683 = fmul float %673, %673 %684 = fadd float %682, %683 %685 = call float @llvm.sqrt.f32(float %684) %686 = fdiv float 1.000000e+00, %685, !fpmath !1 %687 = fmul float %669, %686 %688 = fmul float %671, %686 %689 = fmul float %673, %686 %690 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %691 = load <16 x i8>, <16 x i8> addrspace(2)* %690, align 16, !invariant.load !0 %692 = call float @llvm.SI.load.const(<16 x i8> %691, i32 240) %693 = fsub float -0.000000e+00, %692 %694 = fmul float %692, 0xBFF7154760000000 %695 = call float @llvm.exp2.f32(float %694) %696 = fsub float 1.000000e+00, %695 %697 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %698 = load <16 x i8>, <16 x i8> addrspace(2)* %697, align 16, !invariant.load !0 %699 = call float @llvm.SI.load.const(<16 x i8> %698, i32 236) %700 = call float @llvm.SI.load.const(<16 x i8> %698, i32 232) %701 = fsub float %699, %700 %702 = fsub float %679, %701 %703 = call float @llvm.SI.load.const(<16 x i8> %698, i32 232) %704 = fdiv float 1.000000e+00, %703, !fpmath !1 %705 = fmul float %702, %704 %706 = call float @llvm.AMDGPU.clamp.(float %705, float 0.000000e+00, float 1.000000e+00) %707 = fmul float %706, %693 %708 = fmul float %707, 0x3FF7154760000000 %709 = call float @llvm.exp2.f32(float %708) %710 = fsub float 1.000000e+00, %709 %711 = fdiv float 1.000000e+00, %696, !fpmath !1 %712 = fmul float %710, %711 %713 = call float @llvm.AMDGPU.clamp.(float %712, float 0.000000e+00, float 1.000000e+00) %714 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %715 = load <16 x i8>, <16 x i8> addrspace(2)* %714, align 16, !invariant.load !0 %716 = call float @llvm.SI.load.const(<16 x i8> %715, i32 224) %717 = fsub float %679, %716 %718 = call float @llvm.SI.load.const(<16 x i8> %715, i32 228) %719 = fdiv float 1.000000e+00, %718, !fpmath !1 %720 = fmul float %717, %719 %721 = call float @llvm.AMDGPU.clamp.(float %720, float 0.000000e+00, float 1.000000e+00) %722 = fmul float %721, %693 %723 = fmul float %722, 0x3FF7154760000000 %724 = call float @llvm.exp2.f32(float %723) %725 = fsub float 1.000000e+00, %724 %726 = fdiv float 1.000000e+00, %696, !fpmath !1 %727 = fmul float %725, %726 %728 = call float @llvm.AMDGPU.clamp.(float %727, float 0.000000e+00, float 1.000000e+00) %729 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 2, !amdgpu.uniform !0 %730 = load <8 x i32>, <8 x i32> addrspace(2)* %729, align 32, !invariant.load !0 %731 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %732 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %731, i64 0, i64 7, !amdgpu.uniform !0 %733 = load <4 x i32>, <4 x i32> addrspace(2)* %732, align 16, !invariant.load !0 %734 = call float @llvm.amdgcn.cubetc(float %687, float %688, float %689) %735 = call float @llvm.amdgcn.cubesc(float %687, float %688, float %689) %736 = call float @llvm.amdgcn.cubema(float %687, float %688, float %689) %737 = call float @llvm.amdgcn.cubeid(float %687, float %688, float %689) %738 = call float @llvm.fabs.f32(float %736) %739 = fdiv float 1.000000e+00, %738, !fpmath !1 %740 = fmul float %734, %739 %741 = fadd float %740, 1.500000e+00 %742 = fmul float %735, %739 %743 = fadd float %742, 1.500000e+00 %744 = bitcast float %743 to i32 %745 = bitcast float %741 to i32 %746 = bitcast float %737 to i32 %747 = insertelement <4 x i32> undef, i32 %744, i32 0 %748 = insertelement <4 x i32> %747, i32 %745, i32 1 %749 = insertelement <4 x i32> %748, i32 %746, i32 2 %750 = call <4 x float> @llvm.SI.image.sample.v4i32(<4 x i32> %749, <8 x i32> %730, <4 x i32> %733, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %751 = extractelement <4 x float> %750, i32 0 %752 = extractelement <4 x float> %750, i32 1 %753 = extractelement <4 x float> %750, i32 2 %754 = extractelement <4 x float> %750, i32 3 %755 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %756 = load <16 x i8>, <16 x i8> addrspace(2)* %755, align 16, !invariant.load !0 %757 = call float @llvm.SI.load.const(<16 x i8> %756, i32 160) %758 = fmul float %751, %757 %759 = call float @llvm.SI.load.const(<16 x i8> %756, i32 164) %760 = fmul float %752, %759 %761 = call float @llvm.SI.load.const(<16 x i8> %756, i32 168) %762 = fmul float %753, %761 %763 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %764 = load <16 x i8>, <16 x i8> addrspace(2)* %763, align 16, !invariant.load !0 %765 = call float @llvm.SI.load.const(<16 x i8> %764, i32 172) %766 = fmul float %754, %765 %767 = fmul float %687, %687 %768 = fmul float %688, %688 %769 = fadd float %768, %767 %770 = fmul float %689, %689 %771 = fadd float %769, %770 %772 = call float @llvm.sqrt.f32(float %771) %773 = fdiv float 1.000000e+00, %772, !fpmath !1 %774 = fmul float %688, %773 %775 = fcmp ogt float %774, 0.000000e+00 br i1 %775, label %if202, label %else211 if202: ; preds = %endif155 %776 = call float @llvm.AMDGPU.clamp.(float %774, float 0.000000e+00, float 1.000000e+00) %777 = fmul float %776, 1.250000e+00 %778 = call float @llvm.AMDGPU.clamp.(float %777, float 0.000000e+00, float 1.000000e+00) %779 = fmul float %778, 2.000000e+00 %780 = fsub float 3.000000e+00, %779 %781 = fmul float %778, %780 %782 = fmul float %778, %781 %783 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %784 = load <16 x i8>, <16 x i8> addrspace(2)* %783, align 16, !invariant.load !0 %785 = call float @llvm.SI.load.const(<16 x i8> %784, i32 64) %786 = call float @llvm.SI.load.const(<16 x i8> %784, i32 80) %787 = fsub float 1.000000e+00, %782 %788 = fmul float %785, %782 %789 = fmul float %786, %787 %790 = fadd float %788, %789 %791 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %792 = load <16 x i8>, <16 x i8> addrspace(2)* %791, align 16, !invariant.load !0 %793 = call float @llvm.SI.load.const(<16 x i8> %792, i32 68) %794 = call float @llvm.SI.load.const(<16 x i8> %792, i32 84) %795 = fsub float 1.000000e+00, %782 %796 = fmul float %793, %782 %797 = fmul float %794, %795 %798 = fadd float %796, %797 %799 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %800 = load <16 x i8>, <16 x i8> addrspace(2)* %799, align 16, !invariant.load !0 %801 = call float @llvm.SI.load.const(<16 x i8> %800, i32 72) %802 = call float @llvm.SI.load.const(<16 x i8> %800, i32 88) %803 = fmul float %801, %782 br label %endif220 else211: ; preds = %endif155 %804 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %805 = load <16 x i8>, <16 x i8> addrspace(2)* %804, align 16, !invariant.load !0 %806 = call float @llvm.SI.load.const(<16 x i8> %805, i32 88) %807 = call float @llvm.SI.load.const(<16 x i8> %805, i32 84) %808 = call float @llvm.SI.load.const(<16 x i8> %805, i32 80) %809 = fsub float -0.000000e+00, %774 %810 = call float @llvm.AMDGPU.clamp.(float %809, float 0.000000e+00, float 1.000000e+00) %811 = fmul float %810, 1.250000e+00 %812 = call float @llvm.AMDGPU.clamp.(float %811, float 0.000000e+00, float 1.000000e+00) %813 = fmul float %812, 2.000000e+00 %814 = fsub float 3.000000e+00, %813 %815 = fmul float %812, %814 %816 = fmul float %812, %815 %817 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %818 = load <16 x i8>, <16 x i8> addrspace(2)* %817, align 16, !invariant.load !0 %819 = call float @llvm.SI.load.const(<16 x i8> %818, i32 96) %820 = fsub float 1.000000e+00, %816 %821 = fmul float %819, %816 %822 = fmul float %808, %820 %823 = fadd float %821, %822 %824 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %825 = load <16 x i8>, <16 x i8> addrspace(2)* %824, align 16, !invariant.load !0 %826 = call float @llvm.SI.load.const(<16 x i8> %825, i32 100) %827 = fsub float 1.000000e+00, %816 %828 = fmul float %826, %816 %829 = fmul float %807, %827 %830 = fadd float %828, %829 %831 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %832 = load <16 x i8>, <16 x i8> addrspace(2)* %831, align 16, !invariant.load !0 %833 = call float @llvm.SI.load.const(<16 x i8> %832, i32 104) %834 = fmul float %833, %816 br label %endif220 endif220: ; preds = %else211, %if202 %.pn19 = phi float [ %816, %else211 ], [ %782, %if202 ] %.sink17 = phi float [ %806, %else211 ], [ %802, %if202 ] %.sink15 = phi float [ %834, %else211 ], [ %803, %if202 ] %.09 = phi float [ %823, %else211 ], [ %790, %if202 ] %.08 = phi float [ %830, %else211 ], [ %798, %if202 ] %.sink18 = fsub float 1.000000e+00, %.pn19 %835 = fmul float %.sink17, %.sink18 %836 = fadd float %.sink15, %835 %837 = fmul float %687, %687 %838 = fmul float %688, %688 %839 = fadd float %838, %837 %840 = fmul float %689, %689 %841 = fadd float %839, %840 %842 = call float @llvm.sqrt.f32(float %841) %843 = fdiv float 1.000000e+00, %842, !fpmath !1 %844 = fmul float %687, %843 %845 = fmul float %688, %843 %846 = fmul float %689, %843 %847 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %848 = load <16 x i8>, <16 x i8> addrspace(2)* %847, align 16, !invariant.load !0 %849 = call float @llvm.SI.load.const(<16 x i8> %848, i32 236) %850 = fmul float %844, %849 %851 = call float @llvm.SI.load.const(<16 x i8> %848, i32 236) %852 = fmul float %845, %851 %853 = call float @llvm.SI.load.const(<16 x i8> %848, i32 236) %854 = fmul float %846, %853 %855 = fmul float %850, 4.000000e+00 %856 = fmul float %852, 4.000000e+00 %857 = fmul float %854, 4.000000e+00 %858 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %859 = load <16 x i8>, <16 x i8> addrspace(2)* %858, align 16, !invariant.load !0 %860 = call float @llvm.SI.load.const(<16 x i8> %859, i32 4) %861 = fadd float %856, %860 %862 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 0, !amdgpu.uniform !0 %863 = load <8 x i32>, <8 x i32> addrspace(2)* %862, align 32, !invariant.load !0 %864 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %865 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %864, i64 0, i64 3, !amdgpu.uniform !0 %866 = load <4 x i32>, <4 x i32> addrspace(2)* %865, align 16, !invariant.load !0 %867 = call float @llvm.amdgcn.cubetc(float %855, float %861, float %857) %868 = call float @llvm.amdgcn.cubesc(float %855, float %861, float %857) %869 = call float @llvm.amdgcn.cubema(float %855, float %861, float %857) %870 = call float @llvm.amdgcn.cubeid(float %855, float %861, float %857) %871 = call float @llvm.fabs.f32(float %869) %872 = fdiv float 1.000000e+00, %871, !fpmath !1 %873 = fmul float %867, %872 %874 = fadd float %873, 1.500000e+00 %875 = fmul float %868, %872 %876 = fadd float %875, 1.500000e+00 %877 = bitcast float %876 to i32 %878 = bitcast float %874 to i32 %879 = bitcast float %870 to i32 %880 = insertelement <4 x i32> undef, i32 %877, i32 0 %881 = insertelement <4 x i32> %880, i32 %878, i32 1 %882 = insertelement <4 x i32> %881, i32 %879, i32 2 %883 = call <4 x float> @llvm.SI.image.sample.v4i32(<4 x i32> %882, <8 x i32> %863, <4 x i32> %866, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %884 = extractelement <4 x float> %883, i32 0 %885 = extractelement <4 x float> %883, i32 1 %886 = extractelement <4 x float> %883, i32 2 %887 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %888 = load <16 x i8>, <16 x i8> addrspace(2)* %887, align 16, !invariant.load !0 %889 = call float @llvm.SI.load.const(<16 x i8> %888, i32 128) %890 = fmul float %884, %889 %891 = call float @llvm.SI.load.const(<16 x i8> %888, i32 132) %892 = fmul float %885, %891 %893 = call float @llvm.SI.load.const(<16 x i8> %888, i32 136) %894 = fmul float %886, %893 %895 = fmul float %890, 2.000000e+00 %896 = fmul float %892, 2.000000e+00 %897 = fmul float %894, 2.000000e+00 %898 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %899 = load <16 x i8>, <16 x i8> addrspace(2)* %898, align 16, !invariant.load !0 %900 = call float @llvm.SI.load.const(<16 x i8> %899, i32 208) %901 = fsub float 1.000000e+00, %713 %902 = fmul float %895, %713 %903 = fmul float %900, %901 %904 = fadd float %902, %903 %905 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %906 = load <16 x i8>, <16 x i8> addrspace(2)* %905, align 16, !invariant.load !0 %907 = call float @llvm.SI.load.const(<16 x i8> %906, i32 212) %908 = fsub float 1.000000e+00, %713 %909 = fmul float %896, %713 %910 = fmul float %907, %908 %911 = fadd float %909, %910 %912 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %913 = load <16 x i8>, <16 x i8> addrspace(2)* %912, align 16, !invariant.load !0 %914 = call float @llvm.SI.load.const(<16 x i8> %913, i32 216) %915 = fsub float 1.000000e+00, %713 %916 = fmul float %897, %713 %917 = fmul float %914, %915 %918 = fadd float %916, %917 %919 = fmul float %758, 5.000000e-01 %920 = fmul float %760, 5.000000e-01 %921 = fmul float %762, 5.000000e-01 %922 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %923 = load <16 x i8>, <16 x i8> addrspace(2)* %922, align 16, !invariant.load !0 %924 = call float @llvm.SI.load.const(<16 x i8> %923, i32 128) %925 = fmul float %.09, %924 %926 = call float @llvm.SI.load.const(<16 x i8> %923, i32 132) %927 = fmul float %.08, %926 %928 = call float @llvm.SI.load.const(<16 x i8> %923, i32 136) %929 = fmul float %836, %928 %930 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %931 = load <16 x i8>, <16 x i8> addrspace(2)* %930, align 16, !invariant.load !0 %932 = call float @llvm.SI.load.const(<16 x i8> %931, i32 112) %933 = fmul float %932, 2.000000e+00 %934 = fmul float %925, %933 %935 = fmul float %927, %933 %936 = fmul float %929, %933 %937 = fmul float %934, 5.000000e-01 %938 = fadd float %937, %919 %939 = fmul float %935, 5.000000e-01 %940 = fadd float %939, %920 %941 = fmul float %936, 5.000000e-01 %942 = fadd float %941, %921 %943 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %944 = load <16 x i8>, <16 x i8> addrspace(2)* %943, align 16, !invariant.load !0 %945 = call float @llvm.SI.load.const(<16 x i8> %944, i32 248) %946 = fmul float %679, %945 %947 = fmul float %946, 0x3FFB333340000000 %948 = fmul float %947, 0xBFF7154760000000 %949 = call float @llvm.exp2.f32(float %948) %950 = fsub float 0x3FF3333340000000, %949 %951 = fmul float %766, %950 %952 = fmul float %951, 1.250000e+00 %953 = call float @llvm.AMDGPU.clamp.(float %952, float 0.000000e+00, float 1.000000e+00) %954 = fsub float 1.000000e+00, %953 %955 = fmul float %938, %953 %956 = fmul float %904, %954 %957 = fadd float %955, %956 %958 = fsub float 1.000000e+00, %953 %959 = fmul float %940, %953 %960 = fmul float %911, %958 %961 = fadd float %959, %960 %962 = fsub float 1.000000e+00, %953 %963 = fmul float %942, %953 %964 = fmul float %918, %962 %965 = fadd float %963, %964 %966 = call float @llvm.maxnum.f32(float %728, float %953) %967 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %968 = load <16 x i8>, <16 x i8> addrspace(2)* %967, align 16, !invariant.load !0 %969 = call float @llvm.SI.load.const(<16 x i8> %968, i32 196) %970 = fcmp ogt float %969, 0.000000e+00 br i1 %970, label %if251, label %endif289 if251: ; preds = %endif220 %971 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %972 = load <16 x i8>, <16 x i8> addrspace(2)* %971, align 16, !invariant.load !0 %973 = call float @llvm.SI.load.const(<16 x i8> %972, i32 192) %974 = call float @llvm.SI.load.const(<16 x i8> %972, i32 0) %975 = call float @llvm.SI.load.const(<16 x i8> %972, i32 4) %976 = call float @llvm.SI.load.const(<16 x i8> %972, i32 8) %977 = fmul float %974, 0.000000e+00 %978 = fadd float %977, %975 %979 = fmul float %976, 0.000000e+00 %980 = fadd float %978, %979 %981 = fadd float %980, %973 %982 = fcmp ole float %981, 0.000000e+00 %983 = uitofp i1 %982 to float %984 = fmul float %23, 0.000000e+00 %985 = fadd float %984, %24 %986 = fmul float %25, 0.000000e+00 %987 = fadd float %985, %986 %988 = fadd float %987, %973 %989 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %990 = load <16 x i8>, <16 x i8> addrspace(2)* %989, align 16, !invariant.load !0 %991 = call float @llvm.SI.load.const(<16 x i8> %990, i32 0) %992 = fsub float %991, %23 %993 = call float @llvm.SI.load.const(<16 x i8> %990, i32 4) %994 = fsub float %993, %24 %995 = call float @llvm.SI.load.const(<16 x i8> %990, i32 8) %996 = fsub float %995, %25 %997 = fmul float %983, 2.000000e+00 %998 = fsub float 1.000000e+00, %997 %999 = fmul float %998, %988 %1000 = call float @llvm.minnum.f32(float %999, float 0.000000e+00) %1001 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %1002 = load <16 x i8>, <16 x i8> addrspace(2)* %1001, align 16, !invariant.load !0 %1003 = call float @llvm.SI.load.const(<16 x i8> %1002, i32 200) %1004 = fmul float %1003, %679 %1005 = fadd float %988, %981 %1006 = fmul float %1000, %1000 %1007 = fmul float %992, 0.000000e+00 %1008 = fadd float %1007, %994 %1009 = fmul float %996, 0.000000e+00 %1010 = fadd float %1008, %1009 %1011 = fmul float %973, 0.000000e+00 %1012 = fadd float %1010, %1011 %1013 = call float @llvm.fabs.f32(float %1012) %1014 = fdiv float 1.000000e+00, %1013, !fpmath !1 %1015 = fmul float %1006, %1014 %1016 = fmul float %983, %1005 %1017 = fsub float %1016, %1015 %1018 = fmul float %1004, %1017 %1019 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %1020 = load <16 x i8>, <16 x i8> addrspace(2)* %1019, align 16, !invariant.load !0 %1021 = call float @llvm.SI.load.const(<16 x i8> %1020, i32 196) %1022 = fmul float %1018, %1021 %1023 = fmul float %1022, 0x3FF7154760000000 %1024 = call float @llvm.exp2.f32(float %1023) %1025 = call float @llvm.AMDGPU.clamp.(float %1024, float 0.000000e+00, float 1.000000e+00) %1026 = fsub float 1.000000e+00, %1025 %1027 = call float @llvm.maxnum.f32(float %966, float %1026) br label %endif289 endif289: ; preds = %if251, %endif220 %.011 = phi float [ %1027, %if251 ], [ %966, %endif220 ] %1028 = call float @llvm.AMDGPU.clamp.(float %.011, float 0.000000e+00, float 1.000000e+00) %1029 = fsub float 1.000000e+00, %1028 %1030 = fmul float %957, %1028 %1031 = fmul float %663, %1029 %1032 = fadd float %1030, %1031 %1033 = fsub float 1.000000e+00, %1028 %1034 = fmul float %961, %1028 %1035 = fmul float %664, %1033 %1036 = fadd float %1034, %1035 %1037 = fsub float 1.000000e+00, %1028 %1038 = fmul float %965, %1028 %1039 = fmul float %665, %1037 %1040 = fadd float %1038, %1039 %1041 = call float @llvm.AMDGPU.clamp.(float %.011, float 0.000000e+00, float 1.000000e+00) %1042 = fsub float 1.000000e+00, %1041 %1043 = fmul float %83, %1042 %1044 = bitcast float %5 to i32 %1045 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> undef, i32 %1044, 10 %1046 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %1045, float %1032, 11 %1047 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %1046, float %1036, 12 %1048 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %1047, float %1040, 13 %1049 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %1048, float %1043, 14 %1050 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %1049, float %21, 24 ret <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %1050 } ; Function Attrs: nounwind readnone declare float @llvm.SI.fs.interp(i32, i32, i32, <2 x i32>) #1 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.sqrt.f32(float) #1 ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.AMDGPU.clamp.(float, float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.maxnum.f32(float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.pow.f32(float, float) #1 ; Function Attrs: nounwind declare void @llvm.AMDGPU.kill(float) #2 ; Function Attrs: nounwind readnone declare float @llvm.exp2.f32(float) #1 ; Function Attrs: nounwind readnone declare float @llvm.amdgcn.cubetc(float, float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.amdgcn.cubesc(float, float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.amdgcn.cubema(float, float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.amdgcn.cubeid(float, float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.fabs.f32(float) #1 ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.image.sample.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.minnum.f32(float, float) #1 attributes #0 = { "InitialPSInputAddr"="36983" } attributes #1 = { nounwind readnone } attributes #2 = { nounwind } !0 = !{} !1 = !{float 2.500000e+00} FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL IN[1], GENERIC[1], PERSPECTIVE DCL IN[2], GENERIC[2], PERSPECTIVE DCL IN[3], GENERIC[3], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL SAMP[2] DCL SAMP[3] DCL SAMP[4] DCL SVIEW[0], 2D, FLOAT DCL SVIEW[1], 2D, FLOAT DCL SVIEW[2], 2D, FLOAT DCL SVIEW[3], 2D, FLOAT DCL SVIEW[4], 2D, FLOAT DCL CONST[0..3] DCL CONST[5..15] DCL CONST[20..22] DCL TEMP[0..11], LOCAL IMM[0] FLT32 { 2.0000, 1.0000, 0.5000, -1.0000} IMM[1] FLT32 { 0.0000, 1.0100, 0.0000, 0.0001} IMM[2] FLT32 { 0.0100, 64.0000, 1.4427, 0.0000} IMM[3] FLT32 { 0.0000, 1.0000, 0.0000, 0.0000} IMM[4] INT32 {1, 0, 0, 0} 0: MOV TEMP[0].x, IN[1].wwww 1: MOV TEMP[0].yz, IN[2].yxyy 2: MOV TEMP[1].xy, IN[2].zwzz 3: MOV TEMP[1].z, IN[3].xxxx 4: ADD TEMP[2].xyz, CONST[0].xyzz, -IN[3].yzww 5: DP3 TEMP[3].x, TEMP[2].xyzz, TEMP[2].xyzz 6: RSQ TEMP[3].x, TEMP[3].xxxx 7: MUL TEMP[2].xyz, TEMP[2].xyzz, TEMP[3].xxxx 8: MOV TEMP[3].xy, IN[0].zwww 9: TEX TEMP[3], TEMP[3], SAMP[1], 2D 10: MOV TEMP[4].xy, IN[0].xyyy 11: TEX TEMP[4], TEMP[4], SAMP[4], 2D 12: MOV TEMP[5].xy, IN[0].zwww 13: TEX TEMP[5], TEMP[5], SAMP[2], 2D 14: MOV TEMP[6].xy, IN[0].xyyy 15: TEX TEMP[6].xyz, TEMP[6], SAMP[3], 2D 16: LRP TEMP[7].xyz, TEMP[4].wwww, TEMP[4].xyzz, TEMP[3].xyzz 17: MUL TEMP[7].xyz, TEMP[7].xyzz, CONST[20].xyzz 18: MUL TEMP[7].xyz, TEMP[7].xyzz, IMM[0].xxxx 19: MUL TEMP[8].xyz, TEMP[7].xyzz, CONST[13].xyzz 20: MUL TEMP[8].xyz, TEMP[8].xyzz, IMM[0].xxxx 21: ADD TEMP[9].xyz, IMM[0].yyyy, -TEMP[7].xyzz 22: MUL TEMP[9].xyz, IMM[0].xxxx, TEMP[9].xyzz 23: ADD TEMP[10].xyz, IMM[0].yyyy, -CONST[13].xyzz 24: MUL TEMP[9].xyz, TEMP[9].xyzz, TEMP[10].xyzz 25: ADD TEMP[9].xyz, IMM[0].yyyy, -TEMP[9].xyzz 26: FSGE TEMP[10].x, TEMP[7].xxxx, IMM[0].zzzz 27: AND TEMP[10].x, TEMP[10].xxxx, IMM[0].yyyy 28: LRP TEMP[8].xyz, TEMP[10].xxxx, TEMP[9].xyzz, TEMP[8].xyzz 29: MUL TEMP[9].x, TEMP[6].xxxx, CONST[13].wwww 30: LRP TEMP[7].xyz, TEMP[9].xxxx, TEMP[8].xyzz, TEMP[7].xyzz 31: MUL TEMP[8].xyz, TEMP[7].xyzz, CONST[14].xyzz 32: MUL TEMP[8].xyz, TEMP[8].xyzz, IMM[0].xxxx 33: ADD TEMP[9].xyz, IMM[0].yyyy, -TEMP[7].xyzz 34: MUL TEMP[9].xyz, IMM[0].xxxx, TEMP[9].xyzz 35: ADD TEMP[10].xyz, IMM[0].yyyy, -CONST[14].xyzz 36: MUL TEMP[9].xyz, TEMP[9].xyzz, TEMP[10].xyzz 37: ADD TEMP[9].xyz, IMM[0].yyyy, -TEMP[9].xyzz 38: FSGE TEMP[10].x, TEMP[7].xxxx, IMM[0].zzzz 39: AND TEMP[10].x, TEMP[10].xxxx, IMM[0].yyyy 40: LRP TEMP[8].xyz, TEMP[10].xxxx, TEMP[9].xyzz, TEMP[8].xyzz 41: MUL TEMP[9].x, TEMP[6].yyyy, CONST[14].wwww 42: LRP TEMP[7].xyz, TEMP[9].xxxx, TEMP[8].xyzz, TEMP[7].xyzz 43: MUL TEMP[8].xyz, TEMP[7].xyzz, CONST[15].xyzz 44: MUL TEMP[8].xyz, TEMP[8].xyzz, IMM[0].xxxx 45: ADD TEMP[9].xyz, IMM[0].yyyy, -TEMP[7].xyzz 46: MUL TEMP[9].xyz, IMM[0].xxxx, TEMP[9].xyzz 47: ADD TEMP[10].xyz, IMM[0].yyyy, -CONST[15].xyzz 48: MUL TEMP[9].xyz, TEMP[9].xyzz, TEMP[10].xyzz 49: ADD TEMP[9].xyz, IMM[0].yyyy, -TEMP[9].xyzz 50: FSGE TEMP[10].x, TEMP[7].xxxx, IMM[0].zzzz 51: AND TEMP[10].x, TEMP[10].xxxx, IMM[0].yyyy 52: LRP TEMP[8].xyz, TEMP[10].xxxx, TEMP[9].xyzz, TEMP[8].xyzz 53: MUL TEMP[6].x, TEMP[6].zzzz, CONST[15].wwww 54: LRP TEMP[6].xyz, TEMP[6].xxxx, TEMP[8].xyzz, TEMP[7].xyzz 55: MAD TEMP[7].xyz, TEMP[5].xyzz, IMM[0].xxxx, IMM[0].wwww 56: DP3 TEMP[8].x, TEMP[7].xyzz, TEMP[7].xyzz 57: RSQ TEMP[8].x, TEMP[8].xxxx 58: MUL TEMP[7].xyz, TEMP[7].xyzz, TEMP[8].xxxx 59: ADD TEMP[8].x, IMM[0].yyyy, -TEMP[4].wwww 60: MUL TEMP[5].x, TEMP[5].wwww, TEMP[8].xxxx 61: MOV_SAT TEMP[5].x, TEMP[5].xxxx 62: MUL TEMP[8].xyz, IN[1].xyzz, TEMP[2].xxxx 63: MAD TEMP[8].xyz, TEMP[0].xyzz, TEMP[2].yyyy, TEMP[8].xyzz 64: MAD TEMP[8].z, TEMP[1].xyzz, TEMP[2].zzzz, TEMP[8].xyzz 65: ADD TEMP[4].x, IMM[1].yyyy, -TEMP[4].wwww 66: MUL TEMP[4].x, CONST[21].xxxx, TEMP[4].xxxx 67: MOV_SAT TEMP[4].x, TEMP[4].xxxx 68: MAD TEMP[4].x, TEMP[8].zzzz, IMM[1].xxxx, TEMP[4].xxxx 69: FSLT TEMP[8].x, TEMP[3].wwww, CONST[22].xxxx 70: AND TEMP[8].x, TEMP[8].xxxx, IMM[0].yyyy 71: KILL_IF -TEMP[8].xxxx 72: MUL TEMP[8], CONST[5], IN[3].yyyy 73: MAD TEMP[8], CONST[6], IN[3].zzzz, TEMP[8] 74: MAD TEMP[8], CONST[7], IN[3].wwww, TEMP[8] 75: ADD TEMP[8].xyz, TEMP[8], CONST[8] 76: DP3 TEMP[9].x, IN[1].xyzz, TEMP[7].xyzz 77: DP3 TEMP[0].x, TEMP[0].xyzz, TEMP[7].xyzz 78: MOV TEMP[9].y, TEMP[0].xxxx 79: DP3 TEMP[0].x, TEMP[1].xyzz, TEMP[7].xyzz 80: MOV TEMP[9].z, TEMP[0].xxxx 81: DP3 TEMP[0].x, TEMP[8].xyzz, TEMP[8].xyzz 82: MOV TEMP[0].xy, TEMP[0].xxxx 83: TEX TEMP[0].w, TEMP[0], SAMP[0], 2D 84: MUL TEMP[0].xyz, CONST[2].xyzz, TEMP[0].wwww 85: DP3 TEMP[1].x, TEMP[9].xyzz, TEMP[9].xyzz 86: RSQ TEMP[1].x, TEMP[1].xxxx 87: MUL TEMP[1].xyz, TEMP[9].xyzz, TEMP[1].xxxx 88: ADD TEMP[7].xyz, CONST[1].xyzz, -IN[3].yzww 89: DP3 TEMP[8].x, TEMP[7].xyzz, TEMP[7].xyzz 90: RSQ TEMP[8].x, TEMP[8].xxxx 91: MUL TEMP[7].xyz, TEMP[7].xyzz, TEMP[8].xxxx 92: DP3 TEMP[8].x, TEMP[7].xyzz, TEMP[7].xyzz 93: RSQ TEMP[8].x, TEMP[8].xxxx 94: MUL TEMP[7].xyz, TEMP[7].xyzz, TEMP[8].xxxx 95: DP3 TEMP[8].x, TEMP[2].xyzz, TEMP[2].xyzz 96: RSQ TEMP[8].x, TEMP[8].xxxx 97: MUL TEMP[2].xyz, TEMP[2].xyzz, TEMP[8].xxxx 98: DP3 TEMP[8].x, TEMP[1].xyzz, TEMP[7].xyzz 99: MAX TEMP[8].x, IMM[1].zzzz, TEMP[8].xxxx 100: MOV TEMP[9].x, IMM[1].zzzz 101: FSLT TEMP[10].x, IMM[1].zzzz, TEMP[5].xxxx 102: FSLT TEMP[11].x, IMM[1].zzzz, TEMP[4].xxxx 103: AND TEMP[10].x, TEMP[10].xxxx, TEMP[11].xxxx 104: UIF TEMP[10].xxxx :0 105: MOV TEMP[7].xyz, -TEMP[7].xyzx 106: DP3 TEMP[10].x, TEMP[1].xyzz, TEMP[7].xyzz 107: MUL TEMP[1].xyz, TEMP[10].xxxx, TEMP[1].xyzz 108: MUL TEMP[1].xyz, IMM[0].xxxx, TEMP[1].xyzz 109: ADD TEMP[1].xyz, TEMP[7].xyzz, -TEMP[1].xyzz 110: DP3 TEMP[1].x, TEMP[2].xyzz, TEMP[1].xyzz 111: MAX TEMP[1].x, IMM[1].xxxx, TEMP[1].xxxx 112: MUL TEMP[2].x, TEMP[8].xxxx, IMM[0].xxxx 113: SQRT TEMP[2].x, TEMP[2].xxxx 114: MOV_SAT TEMP[2].x, TEMP[2].xxxx 115: MUL TEMP[1].x, TEMP[1].xxxx, TEMP[2].xxxx 116: ADD TEMP[2].x, TEMP[4].xxxx, IMM[2].xxxx 117: MUL TEMP[2].x, TEMP[2].xxxx, IMM[2].yyyy 118: MAX TEMP[2].x, IMM[1].wwww, TEMP[2].xxxx 119: POW TEMP[1].x, TEMP[1].xxxx, TEMP[2].xxxx 120: MUL TEMP[9].x, TEMP[1].xxxx, TEMP[5].xxxx 121: ENDIF 122: MUL TEMP[1].xyz, TEMP[0].xyzz, CONST[3].xyzz 123: MUL TEMP[0].xyz, TEMP[6].xyzz, TEMP[0].xyzz 124: MUL TEMP[0].xyz, TEMP[0].xyzz, TEMP[8].xxxx 125: MAD TEMP[0].xyz, TEMP[1].xyzz, TEMP[9].xxxx, TEMP[0].xyzz 126: ADD TEMP[1].xyz, IN[3].yzww, -CONST[0].xyzz 127: DP3 TEMP[1].x, TEMP[1].xyzz, TEMP[1].xyzz 128: SQRT TEMP[1].x, TEMP[1].xxxx 129: MOV TEMP[2].x, -CONST[12].xxxx 130: ADD TEMP[4].x, TEMP[1].xxxx, -CONST[11].xxxx 131: RCP TEMP[5].x, CONST[11].yyyy 132: MUL TEMP[4].x, TEMP[4].xxxx, TEMP[5].xxxx 133: MOV_SAT TEMP[4].x, TEMP[4].xxxx 134: MUL TEMP[4].x, TEMP[4].xxxx, TEMP[2].xxxx 135: MUL TEMP[4].x, TEMP[4].xxxx, IMM[2].zzzz 136: EX2 TEMP[4].x, TEMP[4].xxxx 137: ADD TEMP[4].x, IMM[0].yyyy, -TEMP[4].xxxx 138: MUL TEMP[2].x, TEMP[2].xxxx, IMM[2].zzzz 139: EX2 TEMP[2].x, TEMP[2].xxxx 140: ADD TEMP[2].x, IMM[0].yyyy, -TEMP[2].xxxx 141: RCP TEMP[2].x, TEMP[2].xxxx 142: MUL TEMP[2].x, TEMP[4].xxxx, TEMP[2].xxxx 143: MOV_SAT TEMP[2].x, TEMP[2].xxxx 144: MOV TEMP[4].w, TEMP[2].xxxx 145: FSLT TEMP[5].x, IMM[1].zzzz, CONST[9].yyyy 146: UIF TEMP[5].xxxx :0 147: MOV TEMP[5].xyz, IMM[3].xyxx 148: MOV TEMP[5].w, CONST[9].xxxx 149: MOV TEMP[6].w, IMM[0].yyyy 150: MOV TEMP[6].xyz, CONST[0].xyzx 151: DP4 TEMP[6].x, TEMP[5], TEMP[6] 152: FSGE TEMP[7].x, IMM[1].zzzz, TEMP[6].xxxx 153: UIF TEMP[7].xxxx :0 154: MOV TEMP[7].x, IMM[4].xxxx 155: ELSE :0 156: MOV TEMP[7].x, IMM[4].yyyy 157: ENDIF 158: I2F TEMP[7].x, TEMP[7].xxxx 159: MOV TEMP[8].w, IMM[0].yyyy 160: MOV TEMP[8].xyz, IN[3].yzwy 161: DP4 TEMP[8].x, TEMP[5], TEMP[8] 162: MOV TEMP[9].w, IMM[1].zzzz 163: ADD TEMP[9].xyz, CONST[0].xyzz, -IN[3].yzww 164: MUL TEMP[10].x, IMM[0].xxxx, TEMP[7].xxxx 165: ADD TEMP[10].x, IMM[0].yyyy, -TEMP[10].xxxx 166: MUL TEMP[10].x, TEMP[10].xxxx, TEMP[8].xxxx 167: MIN TEMP[10].x, IMM[1].zzzz, TEMP[10].xxxx 168: MUL TEMP[1].x, CONST[9].zzzz, TEMP[1].xxxx 169: ADD TEMP[6].x, TEMP[8].xxxx, TEMP[6].xxxx 170: MUL TEMP[8].x, TEMP[10].xxxx, TEMP[10].xxxx 171: DP4 TEMP[5].x, TEMP[5], TEMP[9] 172: ABS TEMP[5].x, TEMP[5].xxxx 173: RCP TEMP[5].x, TEMP[5].xxxx 174: MUL TEMP[5].x, TEMP[8].xxxx, TEMP[5].xxxx 175: MAD TEMP[5].x, TEMP[7].xxxx, TEMP[6].xxxx, -TEMP[5].xxxx 176: MUL TEMP[1].x, -TEMP[1].xxxx, TEMP[5].xxxx 177: MUL TEMP[1].x, -TEMP[1].xxxx, CONST[9].yyyy 178: MUL TEMP[1].x, TEMP[1].xxxx, IMM[2].zzzz 179: EX2 TEMP[1].x, TEMP[1].xxxx 180: MOV_SAT TEMP[1].x, TEMP[1].xxxx 181: ADD TEMP[1].x, IMM[0].yyyy, -TEMP[1].xxxx 182: MAX TEMP[1].x, TEMP[2].xxxx, TEMP[1].xxxx 183: MOV TEMP[4].w, TEMP[1].xxxx 184: ENDIF 185: MOV_SAT TEMP[1].x, TEMP[4].wwww 186: ADD TEMP[1].xyz, IMM[0].yyyy, -TEMP[1].xxxx 187: MUL TEMP[0].xyz, TEMP[0].xyzz, TEMP[1].xyzz 188: MOV_SAT TEMP[1].x, TEMP[4].wwww 189: ADD TEMP[1].x, IMM[0].yyyy, -TEMP[1].xxxx 190: MUL TEMP[1].x, TEMP[3].wwww, TEMP[1].xxxx 191: MOV TEMP[0].w, TEMP[1].xxxx 192: MOV OUT[0], TEMP[0] 193: END radeonsi: Compiling shader 37 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_ps <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), float inreg, i32 inreg, <2 x i32>, <2 x i32>, <2 x i32>, <3 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, float, float, float, float, float, i32, i32, float, i32) #0 { main_body: %23 = call float @llvm.SI.fs.interp(i32 3, i32 1, i32 %6, <2 x i32> %8) %24 = call float @llvm.SI.fs.interp(i32 0, i32 2, i32 %6, <2 x i32> %8) %25 = call float @llvm.SI.fs.interp(i32 1, i32 2, i32 %6, <2 x i32> %8) %26 = call float @llvm.SI.fs.interp(i32 2, i32 2, i32 %6, <2 x i32> %8) %27 = call float @llvm.SI.fs.interp(i32 3, i32 2, i32 %6, <2 x i32> %8) %28 = call float @llvm.SI.fs.interp(i32 0, i32 3, i32 %6, <2 x i32> %8) %29 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %30 = load <16 x i8>, <16 x i8> addrspace(2)* %29, align 16, !invariant.load !0 %31 = call float @llvm.SI.load.const(<16 x i8> %30, i32 0) %32 = call float @llvm.SI.fs.interp(i32 1, i32 3, i32 %6, <2 x i32> %8) %33 = fsub float %31, %32 %34 = call float @llvm.SI.load.const(<16 x i8> %30, i32 4) %35 = call float @llvm.SI.fs.interp(i32 2, i32 3, i32 %6, <2 x i32> %8) %36 = fsub float %34, %35 %37 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %38 = load <16 x i8>, <16 x i8> addrspace(2)* %37, align 16, !invariant.load !0 %39 = call float @llvm.SI.load.const(<16 x i8> %38, i32 8) %40 = call float @llvm.SI.fs.interp(i32 3, i32 3, i32 %6, <2 x i32> %8) %41 = fsub float %39, %40 %42 = fmul float %33, %33 %43 = fmul float %36, %36 %44 = fadd float %43, %42 %45 = fmul float %41, %41 %46 = fadd float %44, %45 %47 = call float @llvm.sqrt.f32(float %46) %48 = fdiv float 1.000000e+00, %47, !fpmath !1 %49 = fmul float %33, %48 %50 = fmul float %36, %48 %51 = fmul float %41, %48 %52 = call float @llvm.SI.fs.interp(i32 2, i32 0, i32 %6, <2 x i32> %8) %53 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %6, <2 x i32> %8) %54 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 2, !amdgpu.uniform !0 %55 = load <8 x i32>, <8 x i32> addrspace(2)* %54, align 32, !invariant.load !0 %56 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %57 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %56, i64 0, i64 7, !amdgpu.uniform !0 %58 = load <4 x i32>, <4 x i32> addrspace(2)* %57, align 16, !invariant.load !0 %59 = bitcast float %52 to i32 %60 = bitcast float %53 to i32 %61 = insertelement <2 x i32> undef, i32 %59, i32 0 %62 = insertelement <2 x i32> %61, i32 %60, i32 1 %63 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %62, <8 x i32> %55, <4 x i32> %58, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %64 = extractelement <4 x float> %63, i32 0 %65 = extractelement <4 x float> %63, i32 1 %66 = extractelement <4 x float> %63, i32 2 %67 = extractelement <4 x float> %63, i32 3 %68 = call float @llvm.SI.fs.interp(i32 0, i32 0, i32 %6, <2 x i32> %8) %69 = call float @llvm.SI.fs.interp(i32 1, i32 0, i32 %6, <2 x i32> %8) %70 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 8, !amdgpu.uniform !0 %71 = load <8 x i32>, <8 x i32> addrspace(2)* %70, align 32, !invariant.load !0 %72 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %73 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %72, i64 0, i64 19, !amdgpu.uniform !0 %74 = load <4 x i32>, <4 x i32> addrspace(2)* %73, align 16, !invariant.load !0 %75 = bitcast float %68 to i32 %76 = bitcast float %69 to i32 %77 = insertelement <2 x i32> undef, i32 %75, i32 0 %78 = insertelement <2 x i32> %77, i32 %76, i32 1 %79 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %78, <8 x i32> %71, <4 x i32> %74, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %80 = extractelement <4 x float> %79, i32 0 %81 = extractelement <4 x float> %79, i32 1 %82 = extractelement <4 x float> %79, i32 2 %83 = extractelement <4 x float> %79, i32 3 %84 = call float @llvm.SI.fs.interp(i32 2, i32 0, i32 %6, <2 x i32> %8) %85 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %6, <2 x i32> %8) %86 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 4, !amdgpu.uniform !0 %87 = load <8 x i32>, <8 x i32> addrspace(2)* %86, align 32, !invariant.load !0 %88 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %89 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %88, i64 0, i64 11, !amdgpu.uniform !0 %90 = load <4 x i32>, <4 x i32> addrspace(2)* %89, align 16, !invariant.load !0 %91 = bitcast float %84 to i32 %92 = bitcast float %85 to i32 %93 = insertelement <2 x i32> undef, i32 %91, i32 0 %94 = insertelement <2 x i32> %93, i32 %92, i32 1 %95 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %94, <8 x i32> %87, <4 x i32> %90, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %96 = extractelement <4 x float> %95, i32 0 %97 = extractelement <4 x float> %95, i32 1 %98 = extractelement <4 x float> %95, i32 2 %99 = extractelement <4 x float> %95, i32 3 %100 = call float @llvm.SI.fs.interp(i32 0, i32 0, i32 %6, <2 x i32> %8) %101 = call float @llvm.SI.fs.interp(i32 1, i32 0, i32 %6, <2 x i32> %8) %102 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 6, !amdgpu.uniform !0 %103 = load <8 x i32>, <8 x i32> addrspace(2)* %102, align 32, !invariant.load !0 %104 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %105 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %104, i64 0, i64 15, !amdgpu.uniform !0 %106 = load <4 x i32>, <4 x i32> addrspace(2)* %105, align 16, !invariant.load !0 %107 = bitcast float %100 to i32 %108 = bitcast float %101 to i32 %109 = insertelement <2 x i32> undef, i32 %107, i32 0 %110 = insertelement <2 x i32> %109, i32 %108, i32 1 %111 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %110, <8 x i32> %103, <4 x i32> %106, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %112 = extractelement <4 x float> %111, i32 0 %113 = extractelement <4 x float> %111, i32 1 %114 = extractelement <4 x float> %111, i32 2 %115 = fsub float 1.000000e+00, %83 %116 = fmul float %80, %83 %117 = fmul float %64, %115 %118 = fadd float %116, %117 %119 = fsub float 1.000000e+00, %83 %120 = fmul float %81, %83 %121 = fmul float %65, %119 %122 = fadd float %120, %121 %123 = fsub float 1.000000e+00, %83 %124 = fmul float %82, %83 %125 = fmul float %66, %123 %126 = fadd float %124, %125 %127 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %128 = load <16 x i8>, <16 x i8> addrspace(2)* %127, align 16, !invariant.load !0 %129 = call float @llvm.SI.load.const(<16 x i8> %128, i32 320) %130 = fmul float %118, %129 %131 = call float @llvm.SI.load.const(<16 x i8> %128, i32 324) %132 = fmul float %122, %131 %133 = call float @llvm.SI.load.const(<16 x i8> %128, i32 328) %134 = fmul float %126, %133 %135 = fmul float %130, 2.000000e+00 %136 = fmul float %132, 2.000000e+00 %137 = fmul float %134, 2.000000e+00 %138 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %139 = load <16 x i8>, <16 x i8> addrspace(2)* %138, align 16, !invariant.load !0 %140 = call float @llvm.SI.load.const(<16 x i8> %139, i32 208) %141 = fmul float %135, %140 %142 = call float @llvm.SI.load.const(<16 x i8> %139, i32 212) %143 = fmul float %136, %142 %144 = call float @llvm.SI.load.const(<16 x i8> %139, i32 216) %145 = fmul float %137, %144 %146 = fmul float %141, 2.000000e+00 %147 = fmul float %143, 2.000000e+00 %148 = fmul float %145, 2.000000e+00 %149 = fsub float 1.000000e+00, %135 %150 = fsub float 1.000000e+00, %136 %151 = fsub float 1.000000e+00, %137 %152 = fmul float %149, 2.000000e+00 %153 = fmul float %150, 2.000000e+00 %154 = fmul float %151, 2.000000e+00 %155 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %156 = load <16 x i8>, <16 x i8> addrspace(2)* %155, align 16, !invariant.load !0 %157 = call float @llvm.SI.load.const(<16 x i8> %156, i32 208) %158 = fsub float 1.000000e+00, %157 %159 = call float @llvm.SI.load.const(<16 x i8> %156, i32 212) %160 = fsub float 1.000000e+00, %159 %161 = call float @llvm.SI.load.const(<16 x i8> %156, i32 216) %162 = fsub float 1.000000e+00, %161 %163 = fmul float %152, %158 %164 = fmul float %153, %160 %165 = fmul float %154, %162 %166 = fsub float 1.000000e+00, %163 %167 = fsub float 1.000000e+00, %164 %168 = fsub float 1.000000e+00, %165 %169 = fcmp oge float %135, 5.000000e-01 %170 = select i1 %169, float 1.000000e+00, float 0.000000e+00 %171 = fsub float 1.000000e+00, %170 %172 = fmul float %166, %170 %173 = fmul float %146, %171 %174 = fadd float %172, %173 %175 = fsub float 1.000000e+00, %170 %176 = fmul float %167, %170 %177 = fmul float %147, %175 %178 = fadd float %176, %177 %179 = fsub float 1.000000e+00, %170 %180 = fmul float %168, %170 %181 = fmul float %148, %179 %182 = fadd float %180, %181 %183 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %184 = load <16 x i8>, <16 x i8> addrspace(2)* %183, align 16, !invariant.load !0 %185 = call float @llvm.SI.load.const(<16 x i8> %184, i32 220) %186 = fmul float %112, %185 %187 = fsub float 1.000000e+00, %186 %188 = fmul float %174, %186 %189 = fmul float %135, %187 %190 = fadd float %188, %189 %191 = fsub float 1.000000e+00, %186 %192 = fmul float %178, %186 %193 = fmul float %136, %191 %194 = fadd float %192, %193 %195 = fsub float 1.000000e+00, %186 %196 = fmul float %182, %186 %197 = fmul float %137, %195 %198 = fadd float %196, %197 %199 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %200 = load <16 x i8>, <16 x i8> addrspace(2)* %199, align 16, !invariant.load !0 %201 = call float @llvm.SI.load.const(<16 x i8> %200, i32 224) %202 = fmul float %190, %201 %203 = call float @llvm.SI.load.const(<16 x i8> %200, i32 228) %204 = fmul float %194, %203 %205 = call float @llvm.SI.load.const(<16 x i8> %200, i32 232) %206 = fmul float %198, %205 %207 = fmul float %202, 2.000000e+00 %208 = fmul float %204, 2.000000e+00 %209 = fmul float %206, 2.000000e+00 %210 = fsub float 1.000000e+00, %190 %211 = fsub float 1.000000e+00, %194 %212 = fsub float 1.000000e+00, %198 %213 = fmul float %210, 2.000000e+00 %214 = fmul float %211, 2.000000e+00 %215 = fmul float %212, 2.000000e+00 %216 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %217 = load <16 x i8>, <16 x i8> addrspace(2)* %216, align 16, !invariant.load !0 %218 = call float @llvm.SI.load.const(<16 x i8> %217, i32 224) %219 = fsub float 1.000000e+00, %218 %220 = call float @llvm.SI.load.const(<16 x i8> %217, i32 228) %221 = fsub float 1.000000e+00, %220 %222 = call float @llvm.SI.load.const(<16 x i8> %217, i32 232) %223 = fsub float 1.000000e+00, %222 %224 = fmul float %213, %219 %225 = fmul float %214, %221 %226 = fmul float %215, %223 %227 = fsub float 1.000000e+00, %224 %228 = fsub float 1.000000e+00, %225 %229 = fsub float 1.000000e+00, %226 %230 = fcmp oge float %190, 5.000000e-01 %231 = select i1 %230, float 1.000000e+00, float 0.000000e+00 %232 = fsub float 1.000000e+00, %231 %233 = fmul float %227, %231 %234 = fmul float %207, %232 %235 = fadd float %233, %234 %236 = fsub float 1.000000e+00, %231 %237 = fmul float %228, %231 %238 = fmul float %208, %236 %239 = fadd float %237, %238 %240 = fsub float 1.000000e+00, %231 %241 = fmul float %229, %231 %242 = fmul float %209, %240 %243 = fadd float %241, %242 %244 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %245 = load <16 x i8>, <16 x i8> addrspace(2)* %244, align 16, !invariant.load !0 %246 = call float @llvm.SI.load.const(<16 x i8> %245, i32 236) %247 = fmul float %113, %246 %248 = fsub float 1.000000e+00, %247 %249 = fmul float %235, %247 %250 = fmul float %190, %248 %251 = fadd float %249, %250 %252 = fsub float 1.000000e+00, %247 %253 = fmul float %239, %247 %254 = fmul float %194, %252 %255 = fadd float %253, %254 %256 = fsub float 1.000000e+00, %247 %257 = fmul float %243, %247 %258 = fmul float %198, %256 %259 = fadd float %257, %258 %260 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %261 = load <16 x i8>, <16 x i8> addrspace(2)* %260, align 16, !invariant.load !0 %262 = call float @llvm.SI.load.const(<16 x i8> %261, i32 240) %263 = fmul float %251, %262 %264 = call float @llvm.SI.load.const(<16 x i8> %261, i32 244) %265 = fmul float %255, %264 %266 = call float @llvm.SI.load.const(<16 x i8> %261, i32 248) %267 = fmul float %259, %266 %268 = fmul float %263, 2.000000e+00 %269 = fmul float %265, 2.000000e+00 %270 = fmul float %267, 2.000000e+00 %271 = fsub float 1.000000e+00, %251 %272 = fsub float 1.000000e+00, %255 %273 = fsub float 1.000000e+00, %259 %274 = fmul float %271, 2.000000e+00 %275 = fmul float %272, 2.000000e+00 %276 = fmul float %273, 2.000000e+00 %277 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %278 = load <16 x i8>, <16 x i8> addrspace(2)* %277, align 16, !invariant.load !0 %279 = call float @llvm.SI.load.const(<16 x i8> %278, i32 240) %280 = fsub float 1.000000e+00, %279 %281 = call float @llvm.SI.load.const(<16 x i8> %278, i32 244) %282 = fsub float 1.000000e+00, %281 %283 = call float @llvm.SI.load.const(<16 x i8> %278, i32 248) %284 = fsub float 1.000000e+00, %283 %285 = fmul float %274, %280 %286 = fmul float %275, %282 %287 = fmul float %276, %284 %288 = fsub float 1.000000e+00, %285 %289 = fsub float 1.000000e+00, %286 %290 = fsub float 1.000000e+00, %287 %291 = fcmp oge float %251, 5.000000e-01 %292 = select i1 %291, float 1.000000e+00, float 0.000000e+00 %293 = fsub float 1.000000e+00, %292 %294 = fmul float %288, %292 %295 = fmul float %268, %293 %296 = fadd float %294, %295 %297 = fsub float 1.000000e+00, %292 %298 = fmul float %289, %292 %299 = fmul float %269, %297 %300 = fadd float %298, %299 %301 = fsub float 1.000000e+00, %292 %302 = fmul float %290, %292 %303 = fmul float %270, %301 %304 = fadd float %302, %303 %305 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %306 = load <16 x i8>, <16 x i8> addrspace(2)* %305, align 16, !invariant.load !0 %307 = call float @llvm.SI.load.const(<16 x i8> %306, i32 252) %308 = fmul float %114, %307 %309 = fsub float 1.000000e+00, %308 %310 = fmul float %296, %308 %311 = fmul float %251, %309 %312 = fadd float %310, %311 %313 = fsub float 1.000000e+00, %308 %314 = fmul float %300, %308 %315 = fmul float %255, %313 %316 = fadd float %314, %315 %317 = fsub float 1.000000e+00, %308 %318 = fmul float %304, %308 %319 = fmul float %259, %317 %320 = fadd float %318, %319 %321 = fmul float %96, 2.000000e+00 %322 = fadd float %321, -1.000000e+00 %323 = fmul float %97, 2.000000e+00 %324 = fadd float %323, -1.000000e+00 %325 = fmul float %98, 2.000000e+00 %326 = fadd float %325, -1.000000e+00 %327 = fmul float %322, %322 %328 = fmul float %324, %324 %329 = fadd float %328, %327 %330 = fmul float %326, %326 %331 = fadd float %329, %330 %332 = call float @llvm.sqrt.f32(float %331) %333 = fdiv float 1.000000e+00, %332, !fpmath !1 %334 = fmul float %322, %333 %335 = fmul float %324, %333 %336 = fmul float %326, %333 %337 = fsub float 1.000000e+00, %83 %338 = fmul float %99, %337 %339 = call float @llvm.AMDGPU.clamp.(float %338, float 0.000000e+00, float 1.000000e+00) %340 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %341 = fmul float %340, %49 %342 = fmul float %25, %50 %343 = fadd float %342, %341 %344 = fmul float %28, %51 %345 = fadd float %344, %343 %346 = fsub float 0x3FF028F5C0000000, %83 %347 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %348 = load <16 x i8>, <16 x i8> addrspace(2)* %347, align 16, !invariant.load !0 %349 = call float @llvm.SI.load.const(<16 x i8> %348, i32 336) %350 = fmul float %349, %346 %351 = call float @llvm.AMDGPU.clamp.(float %350, float 0.000000e+00, float 1.000000e+00) %352 = fmul float %345, 0x3EE4F8B580000000 %353 = fadd float %352, %351 %354 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %355 = load <16 x i8>, <16 x i8> addrspace(2)* %354, align 16, !invariant.load !0 %356 = call float @llvm.SI.load.const(<16 x i8> %355, i32 352) %357 = fcmp olt float %67, %356 %358 = select i1 %357, float -1.000000e+00, float 0.000000e+00 call void @llvm.AMDGPU.kill(float %358) %359 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %360 = load <16 x i8>, <16 x i8> addrspace(2)* %359, align 16, !invariant.load !0 %361 = call float @llvm.SI.load.const(<16 x i8> %360, i32 80) %362 = call float @llvm.SI.fs.interp(i32 1, i32 3, i32 %6, <2 x i32> %8) %363 = fmul float %361, %362 %364 = call float @llvm.SI.load.const(<16 x i8> %360, i32 84) %365 = call float @llvm.SI.fs.interp(i32 1, i32 3, i32 %6, <2 x i32> %8) %366 = fmul float %364, %365 %367 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %368 = load <16 x i8>, <16 x i8> addrspace(2)* %367, align 16, !invariant.load !0 %369 = call float @llvm.SI.load.const(<16 x i8> %368, i32 88) %370 = call float @llvm.SI.fs.interp(i32 1, i32 3, i32 %6, <2 x i32> %8) %371 = fmul float %369, %370 %372 = call float @llvm.SI.load.const(<16 x i8> %368, i32 96) %373 = call float @llvm.SI.fs.interp(i32 2, i32 3, i32 %6, <2 x i32> %8) %374 = fmul float %372, %373 %375 = fadd float %374, %363 %376 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %377 = load <16 x i8>, <16 x i8> addrspace(2)* %376, align 16, !invariant.load !0 %378 = call float @llvm.SI.load.const(<16 x i8> %377, i32 100) %379 = call float @llvm.SI.fs.interp(i32 2, i32 3, i32 %6, <2 x i32> %8) %380 = fmul float %378, %379 %381 = fadd float %380, %366 %382 = call float @llvm.SI.load.const(<16 x i8> %377, i32 104) %383 = call float @llvm.SI.fs.interp(i32 2, i32 3, i32 %6, <2 x i32> %8) %384 = fmul float %382, %383 %385 = fadd float %384, %371 %386 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %387 = load <16 x i8>, <16 x i8> addrspace(2)* %386, align 16, !invariant.load !0 %388 = call float @llvm.SI.load.const(<16 x i8> %387, i32 112) %389 = call float @llvm.SI.fs.interp(i32 3, i32 3, i32 %6, <2 x i32> %8) %390 = fmul float %388, %389 %391 = fadd float %390, %375 %392 = call float @llvm.SI.load.const(<16 x i8> %387, i32 116) %393 = call float @llvm.SI.fs.interp(i32 3, i32 3, i32 %6, <2 x i32> %8) %394 = fmul float %392, %393 %395 = fadd float %394, %381 %396 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %397 = load <16 x i8>, <16 x i8> addrspace(2)* %396, align 16, !invariant.load !0 %398 = call float @llvm.SI.load.const(<16 x i8> %397, i32 120) %399 = call float @llvm.SI.fs.interp(i32 3, i32 3, i32 %6, <2 x i32> %8) %400 = fmul float %398, %399 %401 = fadd float %400, %385 %402 = call float @llvm.SI.load.const(<16 x i8> %397, i32 128) %403 = fadd float %391, %402 %404 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %405 = load <16 x i8>, <16 x i8> addrspace(2)* %404, align 16, !invariant.load !0 %406 = call float @llvm.SI.load.const(<16 x i8> %405, i32 132) %407 = fadd float %395, %406 %408 = call float @llvm.SI.load.const(<16 x i8> %405, i32 136) %409 = fadd float %401, %408 %410 = call float @llvm.SI.fs.interp(i32 0, i32 1, i32 %6, <2 x i32> %8) %411 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %412 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %413 = fmul float %410, %334 %414 = fmul float %411, %335 %415 = fadd float %414, %413 %416 = fmul float %412, %336 %417 = fadd float %415, %416 %418 = fmul float %23, %334 %419 = fmul float %24, %335 %420 = fadd float %419, %418 %421 = fmul float %25, %336 %422 = fadd float %420, %421 %423 = fmul float %26, %334 %424 = fmul float %27, %335 %425 = fadd float %424, %423 %426 = fmul float %28, %336 %427 = fadd float %425, %426 %428 = fmul float %403, %403 %429 = fmul float %407, %407 %430 = fadd float %429, %428 %431 = fmul float %409, %409 %432 = fadd float %430, %431 %433 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 0, !amdgpu.uniform !0 %434 = load <8 x i32>, <8 x i32> addrspace(2)* %433, align 32, !invariant.load !0 %435 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %436 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %435, i64 0, i64 3, !amdgpu.uniform !0 %437 = load <4 x i32>, <4 x i32> addrspace(2)* %436, align 16, !invariant.load !0 %438 = bitcast float %432 to i32 %439 = bitcast float %432 to i32 %440 = insertelement <2 x i32> undef, i32 %438, i32 0 %441 = insertelement <2 x i32> %440, i32 %439, i32 1 %442 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %441, <8 x i32> %434, <4 x i32> %437, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %443 = extractelement <4 x float> %442, i32 3 %444 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %445 = load <16 x i8>, <16 x i8> addrspace(2)* %444, align 16, !invariant.load !0 %446 = call float @llvm.SI.load.const(<16 x i8> %445, i32 32) %447 = fmul float %446, %443 %448 = call float @llvm.SI.load.const(<16 x i8> %445, i32 36) %449 = fmul float %448, %443 %450 = call float @llvm.SI.load.const(<16 x i8> %445, i32 40) %451 = fmul float %450, %443 %452 = fmul float %417, %417 %453 = fmul float %422, %422 %454 = fadd float %453, %452 %455 = fmul float %427, %427 %456 = fadd float %454, %455 %457 = call float @llvm.sqrt.f32(float %456) %458 = fdiv float 1.000000e+00, %457, !fpmath !1 %459 = fmul float %417, %458 %460 = fmul float %422, %458 %461 = fmul float %427, %458 %462 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %463 = load <16 x i8>, <16 x i8> addrspace(2)* %462, align 16, !invariant.load !0 %464 = call float @llvm.SI.load.const(<16 x i8> %463, i32 16) %465 = call float @llvm.SI.fs.interp(i32 1, i32 3, i32 %6, <2 x i32> %8) %466 = fsub float %464, %465 %467 = call float @llvm.SI.load.const(<16 x i8> %463, i32 20) %468 = call float @llvm.SI.fs.interp(i32 2, i32 3, i32 %6, <2 x i32> %8) %469 = fsub float %467, %468 %470 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %471 = load <16 x i8>, <16 x i8> addrspace(2)* %470, align 16, !invariant.load !0 %472 = call float @llvm.SI.load.const(<16 x i8> %471, i32 24) %473 = call float @llvm.SI.fs.interp(i32 3, i32 3, i32 %6, <2 x i32> %8) %474 = fsub float %472, %473 %475 = fmul float %466, %466 %476 = fmul float %469, %469 %477 = fadd float %476, %475 %478 = fmul float %474, %474 %479 = fadd float %477, %478 %480 = call float @llvm.sqrt.f32(float %479) %481 = fdiv float 1.000000e+00, %480, !fpmath !1 %482 = fmul float %466, %481 %483 = fmul float %469, %481 %484 = fmul float %474, %481 %485 = fmul float %482, %482 %486 = fmul float %483, %483 %487 = fadd float %486, %485 %488 = fmul float %484, %484 %489 = fadd float %487, %488 %490 = call float @llvm.sqrt.f32(float %489) %491 = fdiv float 1.000000e+00, %490, !fpmath !1 %492 = fmul float %482, %491 %493 = fmul float %483, %491 %494 = fmul float %484, %491 %495 = fmul float %49, %49 %496 = fmul float %50, %50 %497 = fadd float %496, %495 %498 = fmul float %51, %51 %499 = fadd float %497, %498 %500 = call float @llvm.sqrt.f32(float %499) %501 = fdiv float 1.000000e+00, %500, !fpmath !1 %502 = fmul float %459, %492 %503 = fmul float %460, %493 %504 = fadd float %503, %502 %505 = fmul float %461, %494 %506 = fadd float %504, %505 %507 = call float @llvm.maxnum.f32(float %506, float 0.000000e+00) %508 = fcmp ogt float %339, 0.000000e+00 %509 = fcmp ogt float %353, 0.000000e+00 %510 = and i1 %508, %509 br i1 %510, label %if104, label %endif121 if104: ; preds = %main_body %511 = fmul float %51, %501 %512 = fmul float %50, %501 %513 = fmul float %49, %501 %514 = fmul float %492, %459 %515 = fsub float -0.000000e+00, %514 %516 = fmul float %493, %460 %517 = fsub float %515, %516 %518 = fmul float %494, %461 %519 = fsub float %517, %518 %520 = fmul float %519, %459 %521 = fmul float %519, %460 %522 = fmul float %519, %461 %523 = fmul float %520, 2.000000e+00 %524 = fmul float %521, 2.000000e+00 %525 = fmul float %522, 2.000000e+00 %526 = fsub float -0.000000e+00, %523 %527 = fsub float %526, %492 %528 = fsub float -0.000000e+00, %524 %529 = fsub float %528, %493 %530 = fsub float -0.000000e+00, %525 %531 = fsub float %530, %494 %532 = fmul float %513, %527 %533 = fmul float %512, %529 %534 = fadd float %533, %532 %535 = fmul float %511, %531 %536 = fadd float %534, %535 %537 = call float @llvm.maxnum.f32(float %536, float 0x3EE4F8B580000000) %538 = fmul float %507, 2.000000e+00 %539 = call float @llvm.sqrt.f32(float %538) %540 = call float @llvm.AMDGPU.clamp.(float %539, float 0.000000e+00, float 1.000000e+00) %541 = fmul float %537, %540 %542 = fadd float %353, 0x3F847AE140000000 %543 = fmul float %542, 6.400000e+01 %544 = call float @llvm.maxnum.f32(float %543, float 0x3F1A36E2E0000000) %545 = call float @llvm.pow.f32(float %541, float %544) %546 = fmul float %545, %339 br label %endif121 endif121: ; preds = %if104, %main_body %.0 = phi float [ %546, %if104 ], [ 0.000000e+00, %main_body ] %547 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %548 = load <16 x i8>, <16 x i8> addrspace(2)* %547, align 16, !invariant.load !0 %549 = call float @llvm.SI.load.const(<16 x i8> %548, i32 48) %550 = fmul float %447, %549 %551 = call float @llvm.SI.load.const(<16 x i8> %548, i32 52) %552 = fmul float %449, %551 %553 = call float @llvm.SI.load.const(<16 x i8> %548, i32 56) %554 = fmul float %451, %553 %555 = fmul float %312, %447 %556 = fmul float %316, %449 %557 = fmul float %320, %451 %558 = fmul float %555, %507 %559 = fmul float %556, %507 %560 = fmul float %557, %507 %561 = fmul float %550, %.0 %562 = fadd float %561, %558 %563 = fmul float %552, %.0 %564 = fadd float %563, %559 %565 = fmul float %554, %.0 %566 = fadd float %565, %560 %567 = call float @llvm.SI.fs.interp(i32 1, i32 3, i32 %6, <2 x i32> %8) %568 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %569 = load <16 x i8>, <16 x i8> addrspace(2)* %568, align 16, !invariant.load !0 %570 = call float @llvm.SI.load.const(<16 x i8> %569, i32 0) %571 = fsub float %567, %570 %572 = call float @llvm.SI.fs.interp(i32 2, i32 3, i32 %6, <2 x i32> %8) %573 = call float @llvm.SI.load.const(<16 x i8> %569, i32 4) %574 = fsub float %572, %573 %575 = call float @llvm.SI.fs.interp(i32 3, i32 3, i32 %6, <2 x i32> %8) %576 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %577 = load <16 x i8>, <16 x i8> addrspace(2)* %576, align 16, !invariant.load !0 %578 = call float @llvm.SI.load.const(<16 x i8> %577, i32 8) %579 = fsub float %575, %578 %580 = fmul float %571, %571 %581 = fmul float %574, %574 %582 = fadd float %581, %580 %583 = fmul float %579, %579 %584 = fadd float %582, %583 %585 = call float @llvm.sqrt.f32(float %584) %586 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %587 = load <16 x i8>, <16 x i8> addrspace(2)* %586, align 16, !invariant.load !0 %588 = call float @llvm.SI.load.const(<16 x i8> %587, i32 192) %589 = call float @llvm.SI.load.const(<16 x i8> %587, i32 176) %590 = fsub float %585, %589 %591 = call float @llvm.SI.load.const(<16 x i8> %587, i32 180) %592 = fdiv float 1.000000e+00, %591, !fpmath !1 %593 = fmul float %590, %592 %594 = call float @llvm.AMDGPU.clamp.(float %593, float 0.000000e+00, float 1.000000e+00) %595 = fmul float %588, %594 %596 = fmul float %595, 0xBFF7154760000000 %597 = call float @llvm.exp2.f32(float %596) %598 = fsub float 1.000000e+00, %597 %599 = fmul float %588, 0xBFF7154760000000 %600 = call float @llvm.exp2.f32(float %599) %601 = fsub float 1.000000e+00, %600 %602 = fdiv float 1.000000e+00, %601, !fpmath !1 %603 = fmul float %598, %602 %604 = call float @llvm.AMDGPU.clamp.(float %603, float 0.000000e+00, float 1.000000e+00) %605 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %606 = load <16 x i8>, <16 x i8> addrspace(2)* %605, align 16, !invariant.load !0 %607 = call float @llvm.SI.load.const(<16 x i8> %606, i32 148) %608 = fcmp ogt float %607, 0.000000e+00 br i1 %608, label %if146, label %endif184 if146: ; preds = %endif121 %609 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %610 = load <16 x i8>, <16 x i8> addrspace(2)* %609, align 16, !invariant.load !0 %611 = call float @llvm.SI.load.const(<16 x i8> %610, i32 144) %612 = call float @llvm.SI.load.const(<16 x i8> %610, i32 0) %613 = call float @llvm.SI.load.const(<16 x i8> %610, i32 4) %614 = call float @llvm.SI.load.const(<16 x i8> %610, i32 8) %615 = fmul float %612, 0.000000e+00 %616 = fadd float %615, %613 %617 = fmul float %614, 0.000000e+00 %618 = fadd float %616, %617 %619 = fadd float %618, %611 %620 = fcmp ole float %619, 0.000000e+00 %621 = uitofp i1 %620 to float %622 = call float @llvm.SI.fs.interp(i32 1, i32 3, i32 %6, <2 x i32> %8) %623 = call float @llvm.SI.fs.interp(i32 2, i32 3, i32 %6, <2 x i32> %8) %624 = call float @llvm.SI.fs.interp(i32 3, i32 3, i32 %6, <2 x i32> %8) %625 = fmul float %622, 0.000000e+00 %626 = fadd float %625, %623 %627 = fmul float %624, 0.000000e+00 %628 = fadd float %626, %627 %629 = fadd float %628, %611 %630 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %631 = load <16 x i8>, <16 x i8> addrspace(2)* %630, align 16, !invariant.load !0 %632 = call float @llvm.SI.load.const(<16 x i8> %631, i32 0) %633 = call float @llvm.SI.fs.interp(i32 1, i32 3, i32 %6, <2 x i32> %8) %634 = fsub float %632, %633 %635 = call float @llvm.SI.load.const(<16 x i8> %631, i32 4) %636 = call float @llvm.SI.fs.interp(i32 2, i32 3, i32 %6, <2 x i32> %8) %637 = fsub float %635, %636 %638 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %639 = load <16 x i8>, <16 x i8> addrspace(2)* %638, align 16, !invariant.load !0 %640 = call float @llvm.SI.load.const(<16 x i8> %639, i32 8) %641 = call float @llvm.SI.fs.interp(i32 3, i32 3, i32 %6, <2 x i32> %8) %642 = fsub float %640, %641 %643 = fmul float %621, 2.000000e+00 %644 = fsub float 1.000000e+00, %643 %645 = fmul float %644, %629 %646 = call float @llvm.minnum.f32(float %645, float 0.000000e+00) %647 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %648 = load <16 x i8>, <16 x i8> addrspace(2)* %647, align 16, !invariant.load !0 %649 = call float @llvm.SI.load.const(<16 x i8> %648, i32 152) %650 = fmul float %649, %585 %651 = fadd float %629, %619 %652 = fmul float %646, %646 %653 = fmul float %634, 0.000000e+00 %654 = fadd float %653, %637 %655 = fmul float %642, 0.000000e+00 %656 = fadd float %654, %655 %657 = fmul float %611, 0.000000e+00 %658 = fadd float %656, %657 %659 = call float @llvm.fabs.f32(float %658) %660 = fdiv float 1.000000e+00, %659, !fpmath !1 %661 = fmul float %652, %660 %662 = fmul float %621, %651 %663 = fsub float %662, %661 %664 = fmul float %650, %663 %665 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %666 = load <16 x i8>, <16 x i8> addrspace(2)* %665, align 16, !invariant.load !0 %667 = call float @llvm.SI.load.const(<16 x i8> %666, i32 148) %668 = fmul float %664, %667 %669 = fmul float %668, 0x3FF7154760000000 %670 = call float @llvm.exp2.f32(float %669) %671 = call float @llvm.AMDGPU.clamp.(float %670, float 0.000000e+00, float 1.000000e+00) %672 = fsub float 1.000000e+00, %671 %673 = call float @llvm.maxnum.f32(float %604, float %672) br label %endif184 endif184: ; preds = %if146, %endif121 %.03 = phi float [ %673, %if146 ], [ %604, %endif121 ] %674 = call float @llvm.AMDGPU.clamp.(float %.03, float 0.000000e+00, float 1.000000e+00) %675 = fsub float 1.000000e+00, %674 %676 = fsub float 1.000000e+00, %674 %677 = fsub float 1.000000e+00, %674 %678 = fmul float %562, %675 %679 = fmul float %564, %676 %680 = fmul float %566, %677 %681 = call float @llvm.AMDGPU.clamp.(float %.03, float 0.000000e+00, float 1.000000e+00) %682 = fsub float 1.000000e+00, %681 %683 = fmul float %67, %682 %684 = bitcast float %5 to i32 %685 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> undef, i32 %684, 10 %686 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %685, float %678, 11 %687 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %686, float %679, 12 %688 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %687, float %680, 13 %689 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %688, float %683, 14 %690 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %689, float %21, 24 ret <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %690 } ; Function Attrs: nounwind readnone declare float @llvm.SI.fs.interp(i32, i32, i32, <2 x i32>) #1 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.sqrt.f32(float) #1 ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.AMDGPU.clamp.(float, float, float) #1 ; Function Attrs: nounwind declare void @llvm.AMDGPU.kill(float) #2 ; Function Attrs: nounwind readnone declare float @llvm.maxnum.f32(float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.pow.f32(float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.exp2.f32(float) #1 ; Function Attrs: nounwind readnone declare float @llvm.minnum.f32(float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.fabs.f32(float) #1 attributes #0 = { "InitialPSInputAddr"="36983" } attributes #1 = { nounwind readnone } attributes #2 = { nounwind } !0 = !{} !1 = !{float 2.500000e+00} FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL IN[1], GENERIC[1], PERSPECTIVE DCL IN[2], GENERIC[2], PERSPECTIVE DCL IN[3], GENERIC[3], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL SAMP[2] DCL SAMP[3] DCL SVIEW[0], 2D, FLOAT DCL SVIEW[1], 2D, FLOAT DCL SVIEW[2], 2D, FLOAT DCL SVIEW[3], 2D, FLOAT DCL CONST[0..6] DCL CONST[11..16] DCL TEMP[0..6], LOCAL IMM[0] FLT32 { 2.0000, 1.0000, 0.5000, -1.0000} IMM[1] FLT32 { 0.0000, 0.0000, 0.0000, 0.3053} IMM[2] FLT32 { 0.6822, 0.0125, 0.0103, 0.0200} IMM[3] FLT32 { 255.0000, 0.0039, 0.0000, 0.0000} 0: MOV TEMP[0].x, IN[1].wwww 1: MOV TEMP[0].y, IN[2].wwww 2: MOV TEMP[0].z, IN[3].wwww 3: ADD TEMP[0].xyz, CONST[0].xyzz, -TEMP[0].xyzz 4: DP3 TEMP[1].x, TEMP[0].xyzz, TEMP[0].xyzz 5: RSQ TEMP[1].x, TEMP[1].xxxx 6: MUL TEMP[0].xyz, TEMP[0].xyzz, TEMP[1].xxxx 7: MOV TEMP[1].xy, IN[0].zwww 8: TEX TEMP[1], TEMP[1], SAMP[0], 2D 9: MOV TEMP[2].xy, IN[0].xyyy 10: TEX TEMP[2], TEMP[2], SAMP[3], 2D 11: MOV TEMP[3].xy, IN[0].xyyy 12: TEX TEMP[3], TEMP[3], SAMP[2], 2D 13: LRP TEMP[2].xyz, TEMP[2].wwww, TEMP[2].xyzz, TEMP[1].xyzz 14: MUL TEMP[2].xyz, TEMP[2].xyzz, CONST[11].xyzz 15: MUL TEMP[2].xyz, TEMP[2].xyzz, IMM[0].xxxx 16: MUL TEMP[4].xyz, TEMP[2].xyzz, CONST[1].xyzz 17: MUL TEMP[4].xyz, TEMP[4].xyzz, IMM[0].xxxx 18: ADD TEMP[5].xyz, IMM[0].yyyy, -TEMP[2].xyzz 19: MUL TEMP[5].xyz, IMM[0].xxxx, TEMP[5].xyzz 20: ADD TEMP[6].xyz, IMM[0].yyyy, -CONST[1].xyzz 21: MUL TEMP[5].xyz, TEMP[5].xyzz, TEMP[6].xyzz 22: ADD TEMP[5].xyz, IMM[0].yyyy, -TEMP[5].xyzz 23: FSGE TEMP[6].x, TEMP[2].xxxx, IMM[0].zzzz 24: AND TEMP[6].x, TEMP[6].xxxx, IMM[0].yyyy 25: LRP TEMP[4].xyz, TEMP[6].xxxx, TEMP[5].xyzz, TEMP[4].xyzz 26: MUL TEMP[5].x, TEMP[3].xxxx, CONST[1].wwww 27: LRP TEMP[2].xyz, TEMP[5].xxxx, TEMP[4].xyzz, TEMP[2].xyzz 28: MUL TEMP[4].xyz, TEMP[2].xyzz, CONST[2].xyzz 29: MUL TEMP[4].xyz, TEMP[4].xyzz, IMM[0].xxxx 30: ADD TEMP[5].xyz, IMM[0].yyyy, -TEMP[2].xyzz 31: MUL TEMP[5].xyz, IMM[0].xxxx, TEMP[5].xyzz 32: ADD TEMP[6].xyz, IMM[0].yyyy, -CONST[2].xyzz 33: MUL TEMP[5].xyz, TEMP[5].xyzz, TEMP[6].xyzz 34: ADD TEMP[5].xyz, IMM[0].yyyy, -TEMP[5].xyzz 35: FSGE TEMP[6].x, TEMP[2].xxxx, IMM[0].zzzz 36: AND TEMP[6].x, TEMP[6].xxxx, IMM[0].yyyy 37: LRP TEMP[4].xyz, TEMP[6].xxxx, TEMP[5].xyzz, TEMP[4].xyzz 38: MUL TEMP[5].x, TEMP[3].yyyy, CONST[2].wwww 39: LRP TEMP[2].xyz, TEMP[5].xxxx, TEMP[4].xyzz, TEMP[2].xyzz 40: MUL TEMP[4].xyz, TEMP[2].xyzz, CONST[3].xyzz 41: MUL TEMP[4].xyz, TEMP[4].xyzz, IMM[0].xxxx 42: ADD TEMP[5].xyz, IMM[0].yyyy, -TEMP[2].xyzz 43: MUL TEMP[5].xyz, IMM[0].xxxx, TEMP[5].xyzz 44: ADD TEMP[6].xyz, IMM[0].yyyy, -CONST[3].xyzz 45: MUL TEMP[5].xyz, TEMP[5].xyzz, TEMP[6].xyzz 46: ADD TEMP[5].xyz, IMM[0].yyyy, -TEMP[5].xyzz 47: FSGE TEMP[6].x, TEMP[2].xxxx, IMM[0].zzzz 48: AND TEMP[6].x, TEMP[6].xxxx, IMM[0].yyyy 49: LRP TEMP[4].xyz, TEMP[6].xxxx, TEMP[5].xyzz, TEMP[4].xyzz 50: MUL TEMP[5].x, TEMP[3].zzzz, CONST[3].wwww 51: LRP TEMP[2].xyz, TEMP[5].xxxx, TEMP[4].xyzz, TEMP[2].xyzz 52: MOV TEMP[4].xy, IN[0].zwww 53: TEX TEMP[4].xyz, TEMP[4], SAMP[1], 2D 54: MAD TEMP[4].xyz, TEMP[4].xyzz, IMM[0].xxxx, IMM[0].wwww 55: DP3 TEMP[5].x, TEMP[4].xyzz, TEMP[4].xyzz 56: RSQ TEMP[5].x, TEMP[5].xxxx 57: MUL TEMP[4].xyz, TEMP[4].xyzz, TEMP[5].xxxx 58: DP3 TEMP[5].x, IN[1].xyzz, TEMP[4].xyzz 59: DP3 TEMP[6].x, IN[2].xyzz, TEMP[4].xyzz 60: MOV TEMP[5].y, TEMP[6].xxxx 61: DP3 TEMP[6].x, IN[3].xyzz, TEMP[4].xyzz 62: MOV TEMP[5].z, TEMP[6].xxxx 63: MOV TEMP[6].x, IMM[1].xxxx 64: MUL TEMP[5].xyz, TEMP[5].xyzz, IMM[1].yyyy 65: MOV TEMP[6].yz, TEMP[5].yxyz 66: MUL TEMP[5].xyz, IN[1].xyzz, TEMP[0].xxxx 67: MAD TEMP[5].xyz, IN[2].xyzz, TEMP[0].yyyy, TEMP[5].xyzz 68: MAD TEMP[0].xyz, IN[3].xyzz, TEMP[0].zzzz, TEMP[5].xyzz 69: DP3 TEMP[5].x, TEMP[0].xyzz, TEMP[0].xyzz 70: RSQ TEMP[5].x, TEMP[5].xxxx 71: MUL TEMP[0].xyz, TEMP[0].xyzz, TEMP[5].xxxx 72: DP3 TEMP[0].x, TEMP[0].xyzz, TEMP[4].xyzz 73: ADD TEMP[0].x, IMM[0].yyyy, -TEMP[0].xxxx 74: MAX TEMP[0].x, IMM[1].zzzz, TEMP[0].xxxx 75: POW TEMP[0].x, TEMP[0].xxxx, CONST[6].xxxx 76: MAD TEMP[0], CONST[4], TEMP[0].xxxx, CONST[5] 77: ADD TEMP[3].x, IMM[0].yyyy, -TEMP[3].wwww 78: MOV_SAT TEMP[3].x, TEMP[3].xxxx 79: MUL TEMP[0].xyz, TEMP[0], TEMP[3].xxxx 80: ADD TEMP[0].xyz, TEMP[6].xyzz, TEMP[0].xyzz 81: FSLT TEMP[1].x, TEMP[1].wwww, CONST[16].xxxx 82: AND TEMP[1].x, TEMP[1].xxxx, IMM[0].yyyy 83: KILL_IF -TEMP[1].xxxx 84: MOV TEMP[1], IMM[1].xxxx 85: UIF CONST[12].xxxx :0 86: MOV TEMP[1].w, IMM[0].yyyy 87: MOV_SAT TEMP[3].x, CONST[13].xxxx 88: POW TEMP[4].x, TEMP[2].xxxx, TEMP[3].xxxx 89: POW TEMP[4].y, TEMP[2].yyyy, TEMP[3].xxxx 90: POW TEMP[4].z, TEMP[2].zzzz, TEMP[3].xxxx 91: MAX TEMP[2].xyz, TEMP[4].xyzz, IMM[1].xxxx 92: MIN TEMP[1].xyz, TEMP[2].xyzz, CONST[14].xxxx 93: ENDIF 94: UIF CONST[12].yyyy :0 95: FSNE TEMP[2].x, CONST[15].xxxx, IMM[1].xxxx 96: UIF TEMP[2].xxxx :0 97: MOV TEMP[2].xyz, TEMP[0].xyzx 98: ELSE :0 99: MAD TEMP[3].xyz, TEMP[0].xyzz, IMM[1].wwww, IMM[2].xxxx 100: MAD TEMP[3].xyz, TEMP[0].xyzz, TEMP[3].xyzz, IMM[2].yyyy 101: MUL TEMP[2].xyz, TEMP[0].xyzz, TEMP[3].xyzz 102: ENDIF 103: MUL TEMP[0].xyz, TEMP[2].xyzz, IMM[2].zzzz 104: MAX TEMP[3].x, TEMP[0].xxxx, TEMP[0].yyyy 105: MAX TEMP[4].x, TEMP[0].zzzz, IMM[2].wwww 106: MAX TEMP[3].x, TEMP[3].xxxx, TEMP[4].xxxx 107: MUL TEMP[3].x, TEMP[3].xxxx, IMM[3].xxxx 108: CEIL TEMP[3].x, TEMP[3].xxxx 109: MUL TEMP[3].x, TEMP[3].xxxx, IMM[3].yyyy 110: MAX TEMP[3].x, TEMP[3].xxxx, IMM[2].wwww 111: MOV TEMP[2].w, TEMP[3].xxxx 112: RCP TEMP[3].x, TEMP[3].xxxx 113: MUL TEMP[2].xyz, TEMP[0].xyzz, TEMP[3].xxxx 114: MOV TEMP[1], TEMP[2] 115: ENDIF 116: MOV OUT[0], TEMP[1] 117: END radeonsi: Compiling shader 38 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_ps <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), float inreg, i32 inreg, <2 x i32>, <2 x i32>, <2 x i32>, <3 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, float, float, float, float, float, i32, i32, float, i32) #0 { main_body: %23 = call float @llvm.SI.fs.interp(i32 3, i32 1, i32 %6, <2 x i32> %8) %24 = call float @llvm.SI.fs.interp(i32 3, i32 2, i32 %6, <2 x i32> %8) %25 = call float @llvm.SI.fs.interp(i32 3, i32 3, i32 %6, <2 x i32> %8) %26 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %27 = load <16 x i8>, <16 x i8> addrspace(2)* %26, align 16, !invariant.load !0 %28 = call float @llvm.SI.load.const(<16 x i8> %27, i32 0) %29 = fsub float %28, %23 %30 = call float @llvm.SI.load.const(<16 x i8> %27, i32 4) %31 = fsub float %30, %24 %32 = call float @llvm.SI.load.const(<16 x i8> %27, i32 8) %33 = fsub float %32, %25 %34 = fmul float %29, %29 %35 = fmul float %31, %31 %36 = fadd float %35, %34 %37 = fmul float %33, %33 %38 = fadd float %36, %37 %39 = call float @llvm.sqrt.f32(float %38) %40 = fdiv float 1.000000e+00, %39, !fpmath !1 %41 = fmul float %29, %40 %42 = fmul float %31, %40 %43 = fmul float %33, %40 %44 = call float @llvm.SI.fs.interp(i32 2, i32 0, i32 %6, <2 x i32> %8) %45 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %6, <2 x i32> %8) %46 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 0, !amdgpu.uniform !0 %47 = load <8 x i32>, <8 x i32> addrspace(2)* %46, align 32, !invariant.load !0 %48 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %49 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %48, i64 0, i64 3, !amdgpu.uniform !0 %50 = load <4 x i32>, <4 x i32> addrspace(2)* %49, align 16, !invariant.load !0 %51 = bitcast float %44 to i32 %52 = bitcast float %45 to i32 %53 = insertelement <2 x i32> undef, i32 %51, i32 0 %54 = insertelement <2 x i32> %53, i32 %52, i32 1 %55 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %54, <8 x i32> %47, <4 x i32> %50, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %56 = extractelement <4 x float> %55, i32 0 %57 = extractelement <4 x float> %55, i32 1 %58 = extractelement <4 x float> %55, i32 2 %59 = extractelement <4 x float> %55, i32 3 %60 = call float @llvm.SI.fs.interp(i32 0, i32 0, i32 %6, <2 x i32> %8) %61 = call float @llvm.SI.fs.interp(i32 1, i32 0, i32 %6, <2 x i32> %8) %62 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 6, !amdgpu.uniform !0 %63 = load <8 x i32>, <8 x i32> addrspace(2)* %62, align 32, !invariant.load !0 %64 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %65 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %64, i64 0, i64 15, !amdgpu.uniform !0 %66 = load <4 x i32>, <4 x i32> addrspace(2)* %65, align 16, !invariant.load !0 %67 = bitcast float %60 to i32 %68 = bitcast float %61 to i32 %69 = insertelement <2 x i32> undef, i32 %67, i32 0 %70 = insertelement <2 x i32> %69, i32 %68, i32 1 %71 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %70, <8 x i32> %63, <4 x i32> %66, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %72 = extractelement <4 x float> %71, i32 0 %73 = extractelement <4 x float> %71, i32 1 %74 = extractelement <4 x float> %71, i32 2 %75 = extractelement <4 x float> %71, i32 3 %76 = call float @llvm.SI.fs.interp(i32 0, i32 0, i32 %6, <2 x i32> %8) %77 = call float @llvm.SI.fs.interp(i32 1, i32 0, i32 %6, <2 x i32> %8) %78 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 4, !amdgpu.uniform !0 %79 = load <8 x i32>, <8 x i32> addrspace(2)* %78, align 32, !invariant.load !0 %80 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %81 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %80, i64 0, i64 11, !amdgpu.uniform !0 %82 = load <4 x i32>, <4 x i32> addrspace(2)* %81, align 16, !invariant.load !0 %83 = bitcast float %76 to i32 %84 = bitcast float %77 to i32 %85 = insertelement <2 x i32> undef, i32 %83, i32 0 %86 = insertelement <2 x i32> %85, i32 %84, i32 1 %87 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %86, <8 x i32> %79, <4 x i32> %82, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %88 = extractelement <4 x float> %87, i32 0 %89 = extractelement <4 x float> %87, i32 1 %90 = extractelement <4 x float> %87, i32 2 %91 = extractelement <4 x float> %87, i32 3 %92 = fsub float 1.000000e+00, %75 %93 = fmul float %72, %75 %94 = fmul float %56, %92 %95 = fadd float %93, %94 %96 = fsub float 1.000000e+00, %75 %97 = fmul float %73, %75 %98 = fmul float %57, %96 %99 = fadd float %97, %98 %100 = fsub float 1.000000e+00, %75 %101 = fmul float %74, %75 %102 = fmul float %58, %100 %103 = fadd float %101, %102 %104 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %105 = load <16 x i8>, <16 x i8> addrspace(2)* %104, align 16, !invariant.load !0 %106 = call float @llvm.SI.load.const(<16 x i8> %105, i32 176) %107 = fmul float %95, %106 %108 = call float @llvm.SI.load.const(<16 x i8> %105, i32 180) %109 = fmul float %99, %108 %110 = call float @llvm.SI.load.const(<16 x i8> %105, i32 184) %111 = fmul float %103, %110 %112 = fmul float %107, 2.000000e+00 %113 = fmul float %109, 2.000000e+00 %114 = fmul float %111, 2.000000e+00 %115 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %116 = load <16 x i8>, <16 x i8> addrspace(2)* %115, align 16, !invariant.load !0 %117 = call float @llvm.SI.load.const(<16 x i8> %116, i32 16) %118 = fmul float %112, %117 %119 = call float @llvm.SI.load.const(<16 x i8> %116, i32 20) %120 = fmul float %113, %119 %121 = call float @llvm.SI.load.const(<16 x i8> %116, i32 24) %122 = fmul float %114, %121 %123 = fmul float %118, 2.000000e+00 %124 = fmul float %120, 2.000000e+00 %125 = fmul float %122, 2.000000e+00 %126 = fsub float 1.000000e+00, %112 %127 = fsub float 1.000000e+00, %113 %128 = fsub float 1.000000e+00, %114 %129 = fmul float %126, 2.000000e+00 %130 = fmul float %127, 2.000000e+00 %131 = fmul float %128, 2.000000e+00 %132 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %133 = load <16 x i8>, <16 x i8> addrspace(2)* %132, align 16, !invariant.load !0 %134 = call float @llvm.SI.load.const(<16 x i8> %133, i32 16) %135 = fsub float 1.000000e+00, %134 %136 = call float @llvm.SI.load.const(<16 x i8> %133, i32 20) %137 = fsub float 1.000000e+00, %136 %138 = call float @llvm.SI.load.const(<16 x i8> %133, i32 24) %139 = fsub float 1.000000e+00, %138 %140 = fmul float %129, %135 %141 = fmul float %130, %137 %142 = fmul float %131, %139 %143 = fsub float 1.000000e+00, %140 %144 = fsub float 1.000000e+00, %141 %145 = fsub float 1.000000e+00, %142 %146 = fcmp oge float %112, 5.000000e-01 %147 = select i1 %146, float 1.000000e+00, float 0.000000e+00 %148 = fsub float 1.000000e+00, %147 %149 = fmul float %143, %147 %150 = fmul float %123, %148 %151 = fadd float %149, %150 %152 = fsub float 1.000000e+00, %147 %153 = fmul float %144, %147 %154 = fmul float %124, %152 %155 = fadd float %153, %154 %156 = fsub float 1.000000e+00, %147 %157 = fmul float %145, %147 %158 = fmul float %125, %156 %159 = fadd float %157, %158 %160 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %161 = load <16 x i8>, <16 x i8> addrspace(2)* %160, align 16, !invariant.load !0 %162 = call float @llvm.SI.load.const(<16 x i8> %161, i32 28) %163 = fmul float %88, %162 %164 = fsub float 1.000000e+00, %163 %165 = fmul float %151, %163 %166 = fmul float %112, %164 %167 = fadd float %165, %166 %168 = fsub float 1.000000e+00, %163 %169 = fmul float %155, %163 %170 = fmul float %113, %168 %171 = fadd float %169, %170 %172 = fsub float 1.000000e+00, %163 %173 = fmul float %159, %163 %174 = fmul float %114, %172 %175 = fadd float %173, %174 %176 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %177 = load <16 x i8>, <16 x i8> addrspace(2)* %176, align 16, !invariant.load !0 %178 = call float @llvm.SI.load.const(<16 x i8> %177, i32 32) %179 = fmul float %167, %178 %180 = call float @llvm.SI.load.const(<16 x i8> %177, i32 36) %181 = fmul float %171, %180 %182 = call float @llvm.SI.load.const(<16 x i8> %177, i32 40) %183 = fmul float %175, %182 %184 = fmul float %179, 2.000000e+00 %185 = fmul float %181, 2.000000e+00 %186 = fmul float %183, 2.000000e+00 %187 = fsub float 1.000000e+00, %167 %188 = fsub float 1.000000e+00, %171 %189 = fsub float 1.000000e+00, %175 %190 = fmul float %187, 2.000000e+00 %191 = fmul float %188, 2.000000e+00 %192 = fmul float %189, 2.000000e+00 %193 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %194 = load <16 x i8>, <16 x i8> addrspace(2)* %193, align 16, !invariant.load !0 %195 = call float @llvm.SI.load.const(<16 x i8> %194, i32 32) %196 = fsub float 1.000000e+00, %195 %197 = call float @llvm.SI.load.const(<16 x i8> %194, i32 36) %198 = fsub float 1.000000e+00, %197 %199 = call float @llvm.SI.load.const(<16 x i8> %194, i32 40) %200 = fsub float 1.000000e+00, %199 %201 = fmul float %190, %196 %202 = fmul float %191, %198 %203 = fmul float %192, %200 %204 = fsub float 1.000000e+00, %201 %205 = fsub float 1.000000e+00, %202 %206 = fsub float 1.000000e+00, %203 %207 = fcmp oge float %167, 5.000000e-01 %208 = select i1 %207, float 1.000000e+00, float 0.000000e+00 %209 = fsub float 1.000000e+00, %208 %210 = fmul float %204, %208 %211 = fmul float %184, %209 %212 = fadd float %210, %211 %213 = fsub float 1.000000e+00, %208 %214 = fmul float %205, %208 %215 = fmul float %185, %213 %216 = fadd float %214, %215 %217 = fsub float 1.000000e+00, %208 %218 = fmul float %206, %208 %219 = fmul float %186, %217 %220 = fadd float %218, %219 %221 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %222 = load <16 x i8>, <16 x i8> addrspace(2)* %221, align 16, !invariant.load !0 %223 = call float @llvm.SI.load.const(<16 x i8> %222, i32 44) %224 = fmul float %89, %223 %225 = fsub float 1.000000e+00, %224 %226 = fmul float %212, %224 %227 = fmul float %167, %225 %228 = fadd float %226, %227 %229 = fsub float 1.000000e+00, %224 %230 = fmul float %216, %224 %231 = fmul float %171, %229 %232 = fadd float %230, %231 %233 = fsub float 1.000000e+00, %224 %234 = fmul float %220, %224 %235 = fmul float %175, %233 %236 = fadd float %234, %235 %237 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %238 = load <16 x i8>, <16 x i8> addrspace(2)* %237, align 16, !invariant.load !0 %239 = fcmp oge float %228, 5.000000e-01 %240 = select i1 %239, float 1.000000e+00, float 0.000000e+00 %241 = call float @llvm.SI.load.const(<16 x i8> %238, i32 60) %242 = fmul float %90, %241 %243 = call float @llvm.SI.fs.interp(i32 2, i32 0, i32 %6, <2 x i32> %8) %244 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %6, <2 x i32> %8) %245 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 2, !amdgpu.uniform !0 %246 = load <8 x i32>, <8 x i32> addrspace(2)* %245, align 32, !invariant.load !0 %247 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %248 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %247, i64 0, i64 7, !amdgpu.uniform !0 %249 = load <4 x i32>, <4 x i32> addrspace(2)* %248, align 16, !invariant.load !0 %250 = bitcast float %243 to i32 %251 = bitcast float %244 to i32 %252 = insertelement <2 x i32> undef, i32 %250, i32 0 %253 = insertelement <2 x i32> %252, i32 %251, i32 1 %254 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %253, <8 x i32> %246, <4 x i32> %249, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %255 = extractelement <4 x float> %254, i32 0 %256 = extractelement <4 x float> %254, i32 1 %257 = extractelement <4 x float> %254, i32 2 %258 = fmul float %255, 2.000000e+00 %259 = fadd float %258, -1.000000e+00 %260 = fmul float %256, 2.000000e+00 %261 = fadd float %260, -1.000000e+00 %262 = fmul float %257, 2.000000e+00 %263 = fadd float %262, -1.000000e+00 %264 = fmul float %259, %259 %265 = fmul float %261, %261 %266 = fadd float %265, %264 %267 = fmul float %263, %263 %268 = fadd float %266, %267 %269 = call float @llvm.sqrt.f32(float %268) %270 = fdiv float 1.000000e+00, %269, !fpmath !1 %271 = fmul float %259, %270 %272 = fmul float %261, %270 %273 = fmul float %263, %270 %274 = call float @llvm.SI.fs.interp(i32 0, i32 1, i32 %6, <2 x i32> %8) %275 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %276 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %277 = fmul float %274, %271 %278 = fmul float %275, %272 %279 = fadd float %278, %277 %280 = fmul float %276, %273 %281 = fadd float %279, %280 %282 = call float @llvm.SI.fs.interp(i32 0, i32 2, i32 %6, <2 x i32> %8) %283 = call float @llvm.SI.fs.interp(i32 1, i32 2, i32 %6, <2 x i32> %8) %284 = call float @llvm.SI.fs.interp(i32 2, i32 2, i32 %6, <2 x i32> %8) %285 = fmul float %282, %271 %286 = fmul float %283, %272 %287 = fadd float %286, %285 %288 = fmul float %284, %273 %289 = fadd float %287, %288 %290 = fmul float %281, 0x3EB0C6F7A0000000 %291 = fmul float %289, 0x3EB0C6F7A0000000 %292 = call float @llvm.SI.fs.interp(i32 0, i32 1, i32 %6, <2 x i32> %8) %293 = fmul float %292, %41 %294 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %295 = fmul float %294, %41 %296 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %297 = fmul float %296, %41 %298 = call float @llvm.SI.fs.interp(i32 0, i32 2, i32 %6, <2 x i32> %8) %299 = fmul float %298, %42 %300 = fadd float %299, %293 %301 = call float @llvm.SI.fs.interp(i32 1, i32 2, i32 %6, <2 x i32> %8) %302 = fmul float %301, %42 %303 = fadd float %302, %295 %304 = call float @llvm.SI.fs.interp(i32 2, i32 2, i32 %6, <2 x i32> %8) %305 = fmul float %304, %42 %306 = fadd float %305, %297 %307 = call float @llvm.SI.fs.interp(i32 0, i32 3, i32 %6, <2 x i32> %8) %308 = fmul float %307, %43 %309 = fadd float %308, %300 %310 = call float @llvm.SI.fs.interp(i32 1, i32 3, i32 %6, <2 x i32> %8) %311 = fmul float %310, %43 %312 = fadd float %311, %303 %313 = call float @llvm.SI.fs.interp(i32 2, i32 3, i32 %6, <2 x i32> %8) %314 = fmul float %313, %43 %315 = fadd float %314, %306 %316 = fmul float %309, %309 %317 = fmul float %312, %312 %318 = fadd float %317, %316 %319 = fmul float %315, %315 %320 = fadd float %318, %319 %321 = call float @llvm.sqrt.f32(float %320) %322 = fdiv float 1.000000e+00, %321, !fpmath !1 %323 = fmul float %309, %322 %324 = fmul float %312, %322 %325 = fmul float %315, %322 %326 = fmul float %323, %271 %327 = fmul float %324, %272 %328 = fadd float %327, %326 %329 = fmul float %325, %273 %330 = fadd float %328, %329 %331 = fsub float 1.000000e+00, %330 %332 = call float @llvm.maxnum.f32(float %331, float 0x3EE4F8B580000000) %333 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %334 = load <16 x i8>, <16 x i8> addrspace(2)* %333, align 16, !invariant.load !0 %335 = call float @llvm.SI.load.const(<16 x i8> %334, i32 96) %336 = call float @llvm.pow.f32(float %332, float %335) %337 = call float @llvm.SI.load.const(<16 x i8> %334, i32 64) %338 = call float @llvm.SI.load.const(<16 x i8> %334, i32 80) %339 = fmul float %337, %336 %340 = fadd float %339, %338 %341 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %342 = load <16 x i8>, <16 x i8> addrspace(2)* %341, align 16, !invariant.load !0 %343 = call float @llvm.SI.load.const(<16 x i8> %342, i32 68) %344 = call float @llvm.SI.load.const(<16 x i8> %342, i32 84) %345 = fmul float %343, %336 %346 = fadd float %345, %344 %347 = call float @llvm.SI.load.const(<16 x i8> %342, i32 72) %348 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %349 = load <16 x i8>, <16 x i8> addrspace(2)* %348, align 16, !invariant.load !0 %350 = call float @llvm.SI.load.const(<16 x i8> %349, i32 88) %351 = fmul float %347, %336 %352 = fadd float %351, %350 %353 = fsub float 1.000000e+00, %91 %354 = call float @llvm.AMDGPU.clamp.(float %353, float 0.000000e+00, float 1.000000e+00) %355 = fmul float %340, %354 %356 = fmul float %346, %354 %357 = fmul float %352, %354 %358 = fadd float %355, 0.000000e+00 %359 = fadd float %290, %356 %360 = fadd float %291, %357 %361 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %362 = load <16 x i8>, <16 x i8> addrspace(2)* %361, align 16, !invariant.load !0 %363 = call float @llvm.SI.load.const(<16 x i8> %362, i32 256) %364 = fcmp olt float %59, %363 %365 = select i1 %364, float -1.000000e+00, float 0.000000e+00 call void @llvm.AMDGPU.kill(float %365) %366 = call float @llvm.SI.load.const(<16 x i8> %362, i32 192) %367 = bitcast float %366 to i32 %368 = icmp eq i32 %367, 0 br i1 %368, label %endif93, label %if85 if85: ; preds = %main_body %369 = fsub float 1.000000e+00, %236 %370 = fmul float %369, 2.000000e+00 %371 = call float @llvm.SI.load.const(<16 x i8> %238, i32 56) %372 = fsub float 1.000000e+00, %371 %373 = fmul float %370, %372 %374 = fsub float 1.000000e+00, %373 %375 = fmul float %374, %240 %376 = call float @llvm.SI.load.const(<16 x i8> %238, i32 56) %377 = fmul float %236, %376 %378 = fmul float %377, 2.000000e+00 %379 = fsub float 1.000000e+00, %240 %380 = fmul float %378, %379 %381 = fadd float %375, %380 %382 = fmul float %381, %242 %383 = fsub float 1.000000e+00, %242 %384 = fmul float %236, %383 %385 = fadd float %382, %384 %386 = fsub float 1.000000e+00, %232 %387 = fmul float %386, 2.000000e+00 %388 = call float @llvm.SI.load.const(<16 x i8> %238, i32 52) %389 = fsub float 1.000000e+00, %388 %390 = fmul float %387, %389 %391 = fsub float 1.000000e+00, %390 %392 = fmul float %391, %240 %393 = call float @llvm.SI.load.const(<16 x i8> %238, i32 52) %394 = fmul float %232, %393 %395 = fmul float %394, 2.000000e+00 %396 = fsub float 1.000000e+00, %240 %397 = fmul float %395, %396 %398 = fadd float %392, %397 %399 = fmul float %398, %242 %400 = fsub float 1.000000e+00, %242 %401 = fmul float %232, %400 %402 = fadd float %399, %401 %403 = fsub float 1.000000e+00, %228 %404 = fmul float %403, 2.000000e+00 %405 = call float @llvm.SI.load.const(<16 x i8> %238, i32 48) %406 = fsub float 1.000000e+00, %405 %407 = fmul float %404, %406 %408 = fsub float 1.000000e+00, %407 %409 = fmul float %408, %240 %410 = call float @llvm.SI.load.const(<16 x i8> %238, i32 48) %411 = fmul float %228, %410 %412 = fmul float %411, 2.000000e+00 %413 = fsub float 1.000000e+00, %240 %414 = fmul float %412, %413 %415 = fadd float %409, %414 %416 = fmul float %415, %242 %417 = fsub float 1.000000e+00, %242 %418 = fmul float %228, %417 %419 = fadd float %416, %418 %420 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %421 = load <16 x i8>, <16 x i8> addrspace(2)* %420, align 16, !invariant.load !0 %422 = call float @llvm.SI.load.const(<16 x i8> %421, i32 208) %423 = call float @llvm.AMDGPU.clamp.(float %422, float 0.000000e+00, float 1.000000e+00) %424 = call float @llvm.pow.f32(float %419, float %423) %425 = call float @llvm.pow.f32(float %402, float %423) %426 = call float @llvm.pow.f32(float %385, float %423) %427 = call float @llvm.maxnum.f32(float %424, float 0.000000e+00) %428 = call float @llvm.maxnum.f32(float %425, float 0.000000e+00) %429 = call float @llvm.maxnum.f32(float %426, float 0.000000e+00) %430 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %431 = load <16 x i8>, <16 x i8> addrspace(2)* %430, align 16, !invariant.load !0 %432 = call float @llvm.SI.load.const(<16 x i8> %431, i32 224) %433 = call float @llvm.minnum.f32(float %427, float %432) %434 = call float @llvm.SI.load.const(<16 x i8> %431, i32 224) %435 = call float @llvm.minnum.f32(float %428, float %434) %436 = call float @llvm.SI.load.const(<16 x i8> %431, i32 224) %437 = call float @llvm.minnum.f32(float %429, float %436) br label %endif93 endif93: ; preds = %main_body, %if85 %.06 = phi float [ 1.000000e+00, %if85 ], [ 0.000000e+00, %main_body ] %.04 = phi float [ %437, %if85 ], [ 0.000000e+00, %main_body ] %.02 = phi float [ %435, %if85 ], [ 0.000000e+00, %main_body ] %.0 = phi float [ %433, %if85 ], [ 0.000000e+00, %main_body ] %438 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %439 = load <16 x i8>, <16 x i8> addrspace(2)* %438, align 16, !invariant.load !0 %440 = call float @llvm.SI.load.const(<16 x i8> %439, i32 196) %441 = bitcast float %440 to i32 %442 = icmp eq i32 %441, 0 br i1 %442, label %endif115, label %if94 if94: ; preds = %endif93 %443 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %444 = load <16 x i8>, <16 x i8> addrspace(2)* %443, align 16, !invariant.load !0 %445 = call float @llvm.SI.load.const(<16 x i8> %444, i32 240) %446 = fcmp une float %445, 0.000000e+00 br i1 %446, label %endif102, label %else98 else98: ; preds = %if94 %447 = fmul float %358, 0x3FD38A2220000000 %448 = fadd float %447, 0x3FE5D45880000000 %449 = fmul float %359, 0x3FD38A2220000000 %450 = fadd float %449, 0x3FE5D45880000000 %451 = fmul float %360, 0x3FD38A2220000000 %452 = fadd float %451, 0x3FE5D45880000000 %453 = fmul float %358, %448 %454 = fadd float %453, 0x3F89A59880000000 %455 = fmul float %359, %450 %456 = fadd float %455, 0x3F89A59880000000 %457 = fmul float %360, %452 %458 = fadd float %457, 0x3F89A59880000000 %459 = fmul float %358, %454 %460 = fmul float %359, %456 %461 = fmul float %360, %458 br label %endif102 endif102: ; preds = %if94, %else98 %.010 = phi float [ %461, %else98 ], [ %360, %if94 ] %.09 = phi float [ %460, %else98 ], [ %359, %if94 ] %.08 = phi float [ %459, %else98 ], [ %358, %if94 ] %462 = fmul float %.08, 0x3F851D0820000000 %463 = fmul float %.09, 0x3F851D0820000000 %464 = fmul float %.010, 0x3F851D0820000000 %465 = call float @llvm.maxnum.f32(float %462, float %463) %466 = call float @llvm.maxnum.f32(float %464, float 0x3F947AE140000000) %467 = call float @llvm.maxnum.f32(float %465, float %466) %468 = fmul float %467, 2.550000e+02 %469 = call float @llvm.ceil.f32(float %468) %470 = fmul float %469, 0x3F70101020000000 %471 = call float @llvm.maxnum.f32(float %470, float 0x3F947AE140000000) %472 = fdiv float 1.000000e+00, %471, !fpmath !1 %473 = fmul float %462, %472 %474 = fmul float %463, %472 %475 = fmul float %464, %472 br label %endif115 endif115: ; preds = %endif93, %endif102 %.17 = phi float [ %471, %endif102 ], [ %.06, %endif93 ] %.15 = phi float [ %475, %endif102 ], [ %.04, %endif93 ] %.13 = phi float [ %474, %endif102 ], [ %.02, %endif93 ] %.1 = phi float [ %473, %endif102 ], [ %.0, %endif93 ] %476 = bitcast float %5 to i32 %477 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> undef, i32 %476, 10 %478 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %477, float %.1, 11 %479 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %478, float %.13, 12 %480 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %479, float %.15, 13 %481 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %480, float %.17, 14 %482 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %481, float %21, 24 ret <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %482 } ; Function Attrs: nounwind readnone declare float @llvm.SI.fs.interp(i32, i32, i32, <2 x i32>) #1 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.sqrt.f32(float) #1 ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.maxnum.f32(float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.pow.f32(float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.AMDGPU.clamp.(float, float, float) #1 ; Function Attrs: nounwind declare void @llvm.AMDGPU.kill(float) #2 ; Function Attrs: nounwind readnone declare float @llvm.minnum.f32(float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.ceil.f32(float) #1 attributes #0 = { "InitialPSInputAddr"="36983" } attributes #1 = { nounwind readnone } attributes #2 = { nounwind } !0 = !{} !1 = !{float 2.500000e+00} VERT PROPERTY NEXT_SHADER FRAG DCL IN[0] DCL IN[1] DCL IN[2] DCL IN[3] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] DCL OUT[2], GENERIC[1] DCL OUT[3], GENERIC[2] DCL CONST[0..13] DCL TEMP[0..4], LOCAL 0: MAD TEMP[0].xy, IN[3].xyyy, CONST[8].xyyy, CONST[8].zwww 1: MAD TEMP[1].xy, IN[2].xyyy, CONST[9].xyyy, CONST[9].zwww 2: MOV TEMP[0].zw, TEMP[1].yyxy 3: MOV TEMP[1].x, CONST[4].xxxx 4: MOV TEMP[1].y, CONST[5].xxxx 5: MOV TEMP[1].z, CONST[6].xxxx 6: MOV TEMP[2].x, CONST[4].yyyy 7: MOV TEMP[2].y, CONST[5].yyyy 8: MOV TEMP[2].z, CONST[6].yyyy 9: MOV TEMP[3].x, CONST[4].zzzz 10: MOV TEMP[3].y, CONST[5].zzzz 11: MOV TEMP[3].z, CONST[6].zzzz 12: MUL TEMP[1].xyz, TEMP[1].xyzz, IN[1].xxxx 13: MAD TEMP[1].xyz, TEMP[2].xyzz, IN[1].yyyy, TEMP[1].xyzz 14: MAD TEMP[1].xyz, TEMP[3].xyzz, IN[1].zzzz, TEMP[1].xyzz 15: MUL TEMP[2], CONST[10], IN[0].xxxx 16: MAD TEMP[2], CONST[11], IN[0].yyyy, TEMP[2] 17: MAD TEMP[2], CONST[12], IN[0].zzzz, TEMP[2] 18: MAD TEMP[2], CONST[13], IN[0].wwww, TEMP[2] 19: MUL TEMP[3], CONST[0], IN[0].xxxx 20: MAD TEMP[3], CONST[1], IN[0].yyyy, TEMP[3] 21: MAD TEMP[3], CONST[2], IN[0].zzzz, TEMP[3] 22: MAD TEMP[3].xyz, CONST[3], IN[0].wwww, TEMP[3] 23: DP3 TEMP[4].x, TEMP[1].xyzz, TEMP[1].xyzz 24: RSQ TEMP[4].x, TEMP[4].xxxx 25: MUL TEMP[1].xyz, TEMP[1].xyzz, TEMP[4].xxxx 26: MOV TEMP[1].w, TEMP[3].xxxx 27: MOV TEMP[3].xy, TEMP[3].yzyy 28: MOV OUT[3], TEMP[3] 29: MOV OUT[0], TEMP[2] 30: MOV OUT[2], TEMP[1] 31: MOV OUT[1], TEMP[0] 32: END radeonsi: Compiling shader 39 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_vs <{ float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32, i32, i32, i32, i32, i32, i32, i32) { main_body: %18 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 0, !amdgpu.uniform !0 %19 = load <16 x i8>, <16 x i8> addrspace(2)* %18, align 16, !invariant.load !0 %20 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %19, i32 0, i32 %14) %21 = extractelement <4 x float> %20, i32 0 %22 = extractelement <4 x float> %20, i32 1 %23 = extractelement <4 x float> %20, i32 2 %24 = extractelement <4 x float> %20, i32 3 %25 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 1, !amdgpu.uniform !0 %26 = load <16 x i8>, <16 x i8> addrspace(2)* %25, align 16, !invariant.load !0 %27 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %26, i32 0, i32 %15) %28 = extractelement <4 x float> %27, i32 0 %29 = extractelement <4 x float> %27, i32 1 %30 = extractelement <4 x float> %27, i32 2 %31 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 2, !amdgpu.uniform !0 %32 = load <16 x i8>, <16 x i8> addrspace(2)* %31, align 16, !invariant.load !0 %33 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %32, i32 0, i32 %16) %34 = extractelement <4 x float> %33, i32 0 %35 = extractelement <4 x float> %33, i32 1 %36 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 3, !amdgpu.uniform !0 %37 = load <16 x i8>, <16 x i8> addrspace(2)* %36, align 16, !invariant.load !0 %38 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %37, i32 0, i32 %17) %39 = extractelement <4 x float> %38, i32 0 %40 = extractelement <4 x float> %38, i32 1 %41 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %42 = load <16 x i8>, <16 x i8> addrspace(2)* %41, align 16, !invariant.load !0 %43 = call float @llvm.SI.load.const(<16 x i8> %42, i32 128) %44 = call float @llvm.SI.load.const(<16 x i8> %42, i32 136) %45 = fmul float %39, %43 %46 = fadd float %45, %44 %47 = call float @llvm.SI.load.const(<16 x i8> %42, i32 132) %48 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %49 = load <16 x i8>, <16 x i8> addrspace(2)* %48, align 16, !invariant.load !0 %50 = call float @llvm.SI.load.const(<16 x i8> %49, i32 140) %51 = fmul float %40, %47 %52 = fadd float %51, %50 %53 = call float @llvm.SI.load.const(<16 x i8> %49, i32 144) %54 = call float @llvm.SI.load.const(<16 x i8> %49, i32 152) %55 = fmul float %34, %53 %56 = fadd float %55, %54 %57 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %58 = load <16 x i8>, <16 x i8> addrspace(2)* %57, align 16, !invariant.load !0 %59 = call float @llvm.SI.load.const(<16 x i8> %58, i32 148) %60 = call float @llvm.SI.load.const(<16 x i8> %58, i32 156) %61 = fmul float %35, %59 %62 = fadd float %61, %60 %63 = call float @llvm.SI.load.const(<16 x i8> %58, i32 64) %64 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %65 = load <16 x i8>, <16 x i8> addrspace(2)* %64, align 16, !invariant.load !0 %66 = call float @llvm.SI.load.const(<16 x i8> %65, i32 80) %67 = call float @llvm.SI.load.const(<16 x i8> %65, i32 96) %68 = call float @llvm.SI.load.const(<16 x i8> %65, i32 68) %69 = call float @llvm.SI.load.const(<16 x i8> %65, i32 84) %70 = call float @llvm.SI.load.const(<16 x i8> %65, i32 100) %71 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %72 = load <16 x i8>, <16 x i8> addrspace(2)* %71, align 16, !invariant.load !0 %73 = call float @llvm.SI.load.const(<16 x i8> %72, i32 72) %74 = call float @llvm.SI.load.const(<16 x i8> %72, i32 88) %75 = call float @llvm.SI.load.const(<16 x i8> %72, i32 104) %76 = fmul float %63, %28 %77 = fmul float %66, %28 %78 = fmul float %67, %28 %79 = fmul float %68, %29 %80 = fadd float %79, %76 %81 = fmul float %69, %29 %82 = fadd float %81, %77 %83 = fmul float %70, %29 %84 = fadd float %83, %78 %85 = fmul float %73, %30 %86 = fadd float %85, %80 %87 = fmul float %74, %30 %88 = fadd float %87, %82 %89 = fmul float %75, %30 %90 = fadd float %89, %84 %91 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %92 = load <16 x i8>, <16 x i8> addrspace(2)* %91, align 16, !invariant.load !0 %93 = call float @llvm.SI.load.const(<16 x i8> %92, i32 160) %94 = fmul float %93, %21 %95 = call float @llvm.SI.load.const(<16 x i8> %92, i32 164) %96 = fmul float %95, %21 %97 = call float @llvm.SI.load.const(<16 x i8> %92, i32 168) %98 = fmul float %97, %21 %99 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %100 = load <16 x i8>, <16 x i8> addrspace(2)* %99, align 16, !invariant.load !0 %101 = call float @llvm.SI.load.const(<16 x i8> %100, i32 172) %102 = fmul float %101, %21 %103 = call float @llvm.SI.load.const(<16 x i8> %100, i32 176) %104 = fmul float %103, %22 %105 = fadd float %104, %94 %106 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %107 = load <16 x i8>, <16 x i8> addrspace(2)* %106, align 16, !invariant.load !0 %108 = call float @llvm.SI.load.const(<16 x i8> %107, i32 180) %109 = fmul float %108, %22 %110 = fadd float %109, %96 %111 = call float @llvm.SI.load.const(<16 x i8> %107, i32 184) %112 = fmul float %111, %22 %113 = fadd float %112, %98 %114 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %115 = load <16 x i8>, <16 x i8> addrspace(2)* %114, align 16, !invariant.load !0 %116 = call float @llvm.SI.load.const(<16 x i8> %115, i32 188) %117 = fmul float %116, %22 %118 = fadd float %117, %102 %119 = call float @llvm.SI.load.const(<16 x i8> %115, i32 192) %120 = fmul float %119, %23 %121 = fadd float %120, %105 %122 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %123 = load <16 x i8>, <16 x i8> addrspace(2)* %122, align 16, !invariant.load !0 %124 = call float @llvm.SI.load.const(<16 x i8> %123, i32 196) %125 = fmul float %124, %23 %126 = fadd float %125, %110 %127 = call float @llvm.SI.load.const(<16 x i8> %123, i32 200) %128 = fmul float %127, %23 %129 = fadd float %128, %113 %130 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %131 = load <16 x i8>, <16 x i8> addrspace(2)* %130, align 16, !invariant.load !0 %132 = call float @llvm.SI.load.const(<16 x i8> %131, i32 204) %133 = fmul float %132, %23 %134 = fadd float %133, %118 %135 = call float @llvm.SI.load.const(<16 x i8> %131, i32 208) %136 = fmul float %135, %24 %137 = fadd float %136, %121 %138 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %139 = load <16 x i8>, <16 x i8> addrspace(2)* %138, align 16, !invariant.load !0 %140 = call float @llvm.SI.load.const(<16 x i8> %139, i32 212) %141 = fmul float %140, %24 %142 = fadd float %141, %126 %143 = call float @llvm.SI.load.const(<16 x i8> %139, i32 216) %144 = fmul float %143, %24 %145 = fadd float %144, %129 %146 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %147 = load <16 x i8>, <16 x i8> addrspace(2)* %146, align 16, !invariant.load !0 %148 = call float @llvm.SI.load.const(<16 x i8> %147, i32 220) %149 = fmul float %148, %24 %150 = fadd float %149, %134 %151 = call float @llvm.SI.load.const(<16 x i8> %147, i32 0) %152 = fmul float %151, %21 %153 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %154 = load <16 x i8>, <16 x i8> addrspace(2)* %153, align 16, !invariant.load !0 %155 = call float @llvm.SI.load.const(<16 x i8> %154, i32 4) %156 = fmul float %155, %21 %157 = call float @llvm.SI.load.const(<16 x i8> %154, i32 8) %158 = fmul float %157, %21 %159 = call float @llvm.SI.load.const(<16 x i8> %154, i32 12) %160 = fmul float %159, %21 %161 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %162 = load <16 x i8>, <16 x i8> addrspace(2)* %161, align 16, !invariant.load !0 %163 = call float @llvm.SI.load.const(<16 x i8> %162, i32 16) %164 = fmul float %163, %22 %165 = fadd float %164, %152 %166 = call float @llvm.SI.load.const(<16 x i8> %162, i32 20) %167 = fmul float %166, %22 %168 = fadd float %167, %156 %169 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %170 = load <16 x i8>, <16 x i8> addrspace(2)* %169, align 16, !invariant.load !0 %171 = call float @llvm.SI.load.const(<16 x i8> %170, i32 24) %172 = fmul float %171, %22 %173 = fadd float %172, %158 %174 = call float @llvm.SI.load.const(<16 x i8> %170, i32 28) %175 = fmul float %174, %22 %176 = fadd float %175, %160 %177 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %178 = load <16 x i8>, <16 x i8> addrspace(2)* %177, align 16, !invariant.load !0 %179 = call float @llvm.SI.load.const(<16 x i8> %178, i32 32) %180 = fmul float %179, %23 %181 = fadd float %180, %165 %182 = call float @llvm.SI.load.const(<16 x i8> %178, i32 36) %183 = fmul float %182, %23 %184 = fadd float %183, %168 %185 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %186 = load <16 x i8>, <16 x i8> addrspace(2)* %185, align 16, !invariant.load !0 %187 = call float @llvm.SI.load.const(<16 x i8> %186, i32 40) %188 = fmul float %187, %23 %189 = fadd float %188, %173 %190 = call float @llvm.SI.load.const(<16 x i8> %186, i32 44) %191 = fmul float %190, %23 %192 = fadd float %191, %176 %193 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %194 = load <16 x i8>, <16 x i8> addrspace(2)* %193, align 16, !invariant.load !0 %195 = call float @llvm.SI.load.const(<16 x i8> %194, i32 48) %196 = fmul float %195, %24 %197 = fadd float %196, %181 %198 = call float @llvm.SI.load.const(<16 x i8> %194, i32 52) %199 = fmul float %198, %24 %200 = fadd float %199, %184 %201 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %202 = load <16 x i8>, <16 x i8> addrspace(2)* %201, align 16, !invariant.load !0 %203 = call float @llvm.SI.load.const(<16 x i8> %202, i32 56) %204 = fmul float %203, %24 %205 = fadd float %204, %189 %206 = fmul float %86, %86 %207 = fmul float %88, %88 %208 = fadd float %207, %206 %209 = fmul float %90, %90 %210 = fadd float %208, %209 %211 = call float @llvm.sqrt.f32(float %210) %212 = fdiv float 1.000000e+00, %211, !fpmath !1 %213 = fmul float %86, %212 %214 = fmul float %88, %212 %215 = fmul float %90, %212 %216 = bitcast i32 %12 to float %217 = insertvalue <{ float, float, float }> undef, float %216, 2 call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 32, i32 0, float %46, float %52, float %56, float %62) call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 33, i32 0, float %213, float %214, float %215, float %197) call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 34, i32 0, float %200, float %205, float %205, float %192) call void @llvm.SI.export(i32 15, i32 0, i32 1, i32 12, i32 0, float %137, float %142, float %145, float %150) ret <{ float, float, float }> %217 } ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.vs.load.input(<16 x i8>, i32, i32) #0 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #0 ; Function Attrs: nounwind readnone declare float @llvm.sqrt.f32(float) #0 ; Function Attrs: nounwind declare void @llvm.SI.export(i32, i32, i32, i32, i32, float, float, float, float) #1 attributes #0 = { nounwind readnone } attributes #1 = { nounwind } !0 = !{} !1 = !{float 2.500000e+00} FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL IN[1], GENERIC[1], PERSPECTIVE DCL IN[2], GENERIC[2], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL SAMP[2] DCL SAMP[3] DCL SAMP[4] DCL SVIEW[0], CUBE, FLOAT DCL SVIEW[1], CUBE, FLOAT DCL SVIEW[2], 2D, FLOAT DCL SVIEW[3], 2D, FLOAT DCL SVIEW[4], 2D, FLOAT DCL CONST[0..7] DCL CONST[9] DCL CONST[11..17] DCL CONST[21..23] DCL TEMP[0..11], LOCAL IMM[0] FLT32 { 1.0000, 0.0000, 2.0000, 0.5000} IMM[1] FLT32 { 1.2500, 3.0000, 0.0000, 1.4427} IMM[2] FLT32 { 4.0000, 1.2000, 1.7000, 0.0000} IMM[3] INT32 {1, 0, 0, 0} 0: MOV TEMP[0].x, IN[1].wwww 1: MOV TEMP[0].yz, IN[2].yxyy 2: MOV TEMP[1].xy, IN[0].zwww 3: TEX TEMP[2], TEMP[1], SAMP[2], 2D 4: MOV TEMP[3].xy, IN[0].xyyy 5: TEX TEMP[3], TEMP[3], SAMP[4], 2D 6: MOV TEMP[4].xy, IN[0].xyyy 7: TEX TEMP[4], TEMP[4], SAMP[3], 2D 8: LRP TEMP[3].xyz, TEMP[3].wwww, TEMP[3].xyzz, TEMP[2].xyzz 9: MUL TEMP[3].xyz, TEMP[3].xyzz, CONST[21].xyzz 10: MUL TEMP[3].xyz, TEMP[3].xyzz, IMM[0].zzzz 11: MUL TEMP[5].xyz, TEMP[3].xyzz, CONST[15].xyzz 12: MUL TEMP[5].xyz, TEMP[5].xyzz, IMM[0].zzzz 13: ADD TEMP[6].xyz, IMM[0].xxxx, -TEMP[3].xyzz 14: MUL TEMP[6].xyz, IMM[0].zzzz, TEMP[6].xyzz 15: ADD TEMP[7].xyz, IMM[0].xxxx, -CONST[15].xyzz 16: MUL TEMP[6].xyz, TEMP[6].xyzz, TEMP[7].xyzz 17: ADD TEMP[6].xyz, IMM[0].xxxx, -TEMP[6].xyzz 18: FSGE TEMP[7].x, TEMP[3].xxxx, IMM[0].wwww 19: AND TEMP[7].x, TEMP[7].xxxx, IMM[0].xxxx 20: LRP TEMP[5].xyz, TEMP[7].xxxx, TEMP[6].xyzz, TEMP[5].xyzz 21: MUL TEMP[6].x, TEMP[4].xxxx, CONST[15].wwww 22: LRP TEMP[3].xyz, TEMP[6].xxxx, TEMP[5].xyzz, TEMP[3].xyzz 23: MUL TEMP[5].xyz, TEMP[3].xyzz, CONST[16].xyzz 24: MUL TEMP[5].xyz, TEMP[5].xyzz, IMM[0].zzzz 25: ADD TEMP[6].xyz, IMM[0].xxxx, -TEMP[3].xyzz 26: MUL TEMP[6].xyz, IMM[0].zzzz, TEMP[6].xyzz 27: ADD TEMP[7].xyz, IMM[0].xxxx, -CONST[16].xyzz 28: MUL TEMP[6].xyz, TEMP[6].xyzz, TEMP[7].xyzz 29: ADD TEMP[6].xyz, IMM[0].xxxx, -TEMP[6].xyzz 30: FSGE TEMP[7].x, TEMP[3].xxxx, IMM[0].wwww 31: AND TEMP[7].x, TEMP[7].xxxx, IMM[0].xxxx 32: LRP TEMP[5].xyz, TEMP[7].xxxx, TEMP[6].xyzz, TEMP[5].xyzz 33: MUL TEMP[6].x, TEMP[4].yyyy, CONST[16].wwww 34: LRP TEMP[3].xyz, TEMP[6].xxxx, TEMP[5].xyzz, TEMP[3].xyzz 35: MUL TEMP[5].xyz, TEMP[3].xyzz, CONST[17].xyzz 36: MUL TEMP[5].xyz, TEMP[5].xyzz, IMM[0].zzzz 37: ADD TEMP[6].xyz, IMM[0].xxxx, -TEMP[3].xyzz 38: MUL TEMP[6].xyz, IMM[0].zzzz, TEMP[6].xyzz 39: ADD TEMP[7].xyz, IMM[0].xxxx, -CONST[17].xyzz 40: MUL TEMP[6].xyz, TEMP[6].xyzz, TEMP[7].xyzz 41: ADD TEMP[6].xyz, IMM[0].xxxx, -TEMP[6].xyzz 42: FSGE TEMP[7].x, TEMP[3].xxxx, IMM[0].wwww 43: AND TEMP[7].x, TEMP[7].xxxx, IMM[0].xxxx 44: LRP TEMP[5].xyz, TEMP[7].xxxx, TEMP[6].xyzz, TEMP[5].xyzz 45: MUL TEMP[6].x, TEMP[4].zzzz, CONST[17].wwww 46: LRP TEMP[3].xyz, TEMP[6].xxxx, TEMP[5].xyzz, TEMP[3].xyzz 47: MOV TEMP[5].w, IMM[0].xxxx 48: MOV TEMP[5].xyz, TEMP[3].xyzx 49: MUL TEMP[4], TEMP[5], TEMP[4].wwww 50: DP3 TEMP[5].x, IN[1].xyzz, IN[1].xyzz 51: RSQ TEMP[5].x, TEMP[5].xxxx 52: MUL TEMP[5].y, IN[1].xyzz, TEMP[5].xxxx 53: MOV TEMP[6], CONST[4] 54: FSLT TEMP[7].x, IMM[0].yyyy, TEMP[5].yyyy 55: UIF TEMP[7].xxxx :0 56: MOV_SAT TEMP[7].x, TEMP[5].yyyy 57: MUL TEMP[7].x, TEMP[7].xxxx, IMM[1].xxxx 58: MOV_SAT TEMP[7].x, TEMP[7].xxxx 59: MUL TEMP[8].x, IMM[0].zzzz, TEMP[7].xxxx 60: ADD TEMP[8].x, IMM[1].yyyy, -TEMP[8].xxxx 61: MUL TEMP[8].x, TEMP[7].xxxx, TEMP[8].xxxx 62: MUL TEMP[7].x, TEMP[7].xxxx, TEMP[8].xxxx 63: LRP TEMP[6], TEMP[7].xxxx, CONST[3], CONST[4] 64: ELSE :0 65: MOV_SAT TEMP[5].x, -TEMP[5].yyyy 66: MUL TEMP[5].x, TEMP[5].xxxx, IMM[1].xxxx 67: MOV_SAT TEMP[5].x, TEMP[5].xxxx 68: MUL TEMP[7].x, IMM[0].zzzz, TEMP[5].xxxx 69: ADD TEMP[7].x, IMM[1].yyyy, -TEMP[7].xxxx 70: MUL TEMP[7].x, TEMP[5].xxxx, TEMP[7].xxxx 71: MUL TEMP[5].x, TEMP[5].xxxx, TEMP[7].xxxx 72: LRP TEMP[6], TEMP[5].xxxx, CONST[5], TEMP[6] 73: ENDIF 74: MUL TEMP[4], TEMP[6], TEMP[4] 75: MUL TEMP[5].x, IMM[0].zzzz, CONST[6].xxxx 76: MUL TEMP[4].xyz, TEMP[4], TEMP[5].xxxx 77: MUL TEMP[1].x, TEMP[2].wwww, CONST[21].wwww 78: FSLT TEMP[2].x, TEMP[1].xxxx, CONST[23].xxxx 79: AND TEMP[2].x, TEMP[2].xxxx, IMM[0].xxxx 80: KILL_IF -TEMP[2].xxxx 81: MUL TEMP[2].xyz, TEMP[3].xyzz, CONST[2].xyzz 82: DP3 TEMP[3].x, IN[1].xyzz, IN[1].xyzz 83: RSQ TEMP[3].x, TEMP[3].xxxx 84: MUL TEMP[3].xyz, IN[1].xyzz, TEMP[3].xxxx 85: DP3 TEMP[5].x, CONST[1].xyzz, CONST[1].xyzz 86: RSQ TEMP[5].x, TEMP[5].xxxx 87: MUL TEMP[5].xyz, CONST[1].xyzz, TEMP[5].xxxx 88: DP3 TEMP[3].x, TEMP[3].xyzz, TEMP[5].xyzz 89: MAX TEMP[3].x, IMM[0].yyyy, TEMP[3].xxxx 90: MUL TEMP[2].xyz, TEMP[2].xyzz, TEMP[3].xxxx 91: ADD TEMP[2].xyz, TEMP[2].xyzz, TEMP[4].xyzz 92: ADD TEMP[3].xyz, TEMP[0].xyzz, -CONST[0].xyzz 93: DP3 TEMP[4].x, TEMP[3].xyzz, TEMP[3].xyzz 94: SQRT TEMP[4].x, TEMP[4].xxxx 95: DP3 TEMP[5].x, TEMP[3].xyzz, TEMP[3].xyzz 96: RSQ TEMP[5].x, TEMP[5].xxxx 97: MUL TEMP[3].xyz, TEMP[3].xyzz, TEMP[5].xxxx 98: MOV TEMP[5].x, -CONST[14].xxxx 99: MUL TEMP[6].x, TEMP[5].xxxx, IMM[1].wwww 100: EX2 TEMP[6].x, TEMP[6].xxxx 101: ADD TEMP[6].x, IMM[0].xxxx, -TEMP[6].xxxx 102: ADD TEMP[7].x, CONST[13].wwww, -CONST[13].zzzz 103: ADD TEMP[7].x, TEMP[4].xxxx, -TEMP[7].xxxx 104: RCP TEMP[8].x, CONST[13].zzzz 105: MUL TEMP[7].x, TEMP[7].xxxx, TEMP[8].xxxx 106: MOV_SAT TEMP[7].x, TEMP[7].xxxx 107: MUL TEMP[7].x, TEMP[7].xxxx, TEMP[5].xxxx 108: MUL TEMP[7].x, TEMP[7].xxxx, IMM[1].wwww 109: EX2 TEMP[7].x, TEMP[7].xxxx 110: ADD TEMP[7].x, IMM[0].xxxx, -TEMP[7].xxxx 111: RCP TEMP[8].x, TEMP[6].xxxx 112: MUL TEMP[7].x, TEMP[7].xxxx, TEMP[8].xxxx 113: MOV_SAT TEMP[7].x, TEMP[7].xxxx 114: ADD TEMP[8].x, TEMP[4].xxxx, -CONST[13].xxxx 115: RCP TEMP[9].x, CONST[13].yyyy 116: MUL TEMP[8].x, TEMP[8].xxxx, TEMP[9].xxxx 117: MOV_SAT TEMP[8].x, TEMP[8].xxxx 118: MUL TEMP[5].x, TEMP[8].xxxx, TEMP[5].xxxx 119: MUL TEMP[5].x, TEMP[5].xxxx, IMM[1].wwww 120: EX2 TEMP[5].x, TEMP[5].xxxx 121: ADD TEMP[5].x, IMM[0].xxxx, -TEMP[5].xxxx 122: RCP TEMP[6].x, TEMP[6].xxxx 123: MUL TEMP[5].x, TEMP[5].xxxx, TEMP[6].xxxx 124: MOV_SAT TEMP[5].x, TEMP[5].xxxx 125: MOV TEMP[6].xyz, TEMP[3].xyzz 126: TEX TEMP[6], TEMP[6], SAMP[1], CUBE 127: MUL TEMP[6], TEMP[6], CONST[9] 128: DP3 TEMP[8].x, TEMP[3].xyzz, TEMP[3].xyzz 129: RSQ TEMP[8].x, TEMP[8].xxxx 130: MUL TEMP[8].y, TEMP[3].xyzz, TEMP[8].xxxx 131: MOV TEMP[9], CONST[4] 132: FSLT TEMP[10].x, IMM[0].yyyy, TEMP[8].yyyy 133: UIF TEMP[10].xxxx :0 134: MOV_SAT TEMP[10].x, TEMP[8].yyyy 135: MUL TEMP[10].x, TEMP[10].xxxx, IMM[1].xxxx 136: MOV_SAT TEMP[10].x, TEMP[10].xxxx 137: MUL TEMP[11].x, IMM[0].zzzz, TEMP[10].xxxx 138: ADD TEMP[11].x, IMM[1].yyyy, -TEMP[11].xxxx 139: MUL TEMP[11].x, TEMP[10].xxxx, TEMP[11].xxxx 140: MUL TEMP[10].x, TEMP[10].xxxx, TEMP[11].xxxx 141: LRP TEMP[9], TEMP[10].xxxx, CONST[3], CONST[4] 142: ELSE :0 143: MOV_SAT TEMP[8].x, -TEMP[8].yyyy 144: MUL TEMP[8].x, TEMP[8].xxxx, IMM[1].xxxx 145: MOV_SAT TEMP[8].x, TEMP[8].xxxx 146: MUL TEMP[10].x, IMM[0].zzzz, TEMP[8].xxxx 147: ADD TEMP[10].x, IMM[1].yyyy, -TEMP[10].xxxx 148: MUL TEMP[10].x, TEMP[8].xxxx, TEMP[10].xxxx 149: MUL TEMP[8].x, TEMP[8].xxxx, TEMP[10].xxxx 150: LRP TEMP[9], TEMP[8].xxxx, CONST[5], TEMP[9] 151: ENDIF 152: DP3 TEMP[8].x, TEMP[3].xyzz, TEMP[3].xyzz 153: RSQ TEMP[8].x, TEMP[8].xxxx 154: MUL TEMP[8].xyz, TEMP[3].xyzz, TEMP[8].xxxx 155: MUL TEMP[8].xyz, TEMP[8].xyzz, CONST[13].wwww 156: MUL TEMP[8].xyz, TEMP[8].xyzz, IMM[2].xxxx 157: MOV TEMP[10].xz, TEMP[8].xxzx 158: ADD TEMP[8].x, TEMP[8].yyyy, CONST[0].yyyy 159: MOV TEMP[10].y, TEMP[8].xxxx 160: MOV TEMP[8].xyz, TEMP[10].xyzz 161: TEX TEMP[8], TEMP[8], SAMP[0], CUBE 162: MUL TEMP[8].xyz, TEMP[8], CONST[7] 163: MUL TEMP[8].xyz, TEMP[8].xyzz, IMM[0].zzzz 164: LRP TEMP[7].xyz, TEMP[7].xxxx, TEMP[8].xyzz, CONST[12].xyzz 165: MUL TEMP[6].xyz, TEMP[6].xyzz, IMM[0].wwww 166: MUL TEMP[8], TEMP[9], CONST[7] 167: MUL TEMP[9].x, IMM[0].zzzz, CONST[6].xxxx 168: MUL TEMP[8].xyz, TEMP[8], TEMP[9].xxxx 169: MAD TEMP[6].xyz, TEMP[8].xyzz, IMM[0].wwww, TEMP[6].xyzz 170: MUL TEMP[8].x, TEMP[4].xxxx, CONST[14].zzzz 171: MUL TEMP[8].x, TEMP[8].xxxx, IMM[2].zzzz 172: MUL TEMP[8].x, -TEMP[8].xxxx, IMM[1].wwww 173: EX2 TEMP[8].x, TEMP[8].xxxx 174: ADD TEMP[8].x, IMM[2].yyyy, -TEMP[8].xxxx 175: MUL TEMP[8].x, TEMP[6].wwww, TEMP[8].xxxx 176: MUL TEMP[8].x, TEMP[8].xxxx, IMM[1].xxxx 177: MOV_SAT TEMP[8].x, TEMP[8].xxxx 178: LRP TEMP[3].xyz, TEMP[8].xxxx, TEMP[6].xyzz, TEMP[7].xyzz 179: MAX TEMP[5].x, TEMP[5].xxxx, TEMP[8].xxxx 180: MOV TEMP[3].w, TEMP[5].xxxx 181: FSLT TEMP[6].x, IMM[0].yyyy, CONST[11].yyyy 182: UIF TEMP[6].xxxx :0 183: MOV TEMP[6].xyz, IMM[0].yxyy 184: MOV TEMP[6].w, CONST[11].xxxx 185: MOV TEMP[7].w, IMM[0].xxxx 186: MOV TEMP[7].xyz, CONST[0].xyzx 187: DP4 TEMP[7].x, TEMP[6], TEMP[7] 188: FSGE TEMP[8].x, IMM[0].yyyy, TEMP[7].xxxx 189: UIF TEMP[8].xxxx :0 190: MOV TEMP[8].x, IMM[3].xxxx 191: ELSE :0 192: MOV TEMP[8].x, IMM[3].yyyy 193: ENDIF 194: I2F TEMP[8].x, TEMP[8].xxxx 195: MOV TEMP[9].w, IMM[0].xxxx 196: MOV TEMP[9].xyz, TEMP[0].xyzx 197: DP4 TEMP[9].x, TEMP[6], TEMP[9] 198: MOV TEMP[10].w, IMM[0].yyyy 199: ADD TEMP[10].xyz, CONST[0].xyzz, -TEMP[0].xyzz 200: MUL TEMP[11].x, IMM[0].zzzz, TEMP[8].xxxx 201: ADD TEMP[11].x, IMM[0].xxxx, -TEMP[11].xxxx 202: MUL TEMP[11].x, TEMP[11].xxxx, TEMP[9].xxxx 203: MIN TEMP[11].x, IMM[0].yyyy, TEMP[11].xxxx 204: MUL TEMP[4].x, CONST[11].zzzz, TEMP[4].xxxx 205: ADD TEMP[7].x, TEMP[9].xxxx, TEMP[7].xxxx 206: MUL TEMP[9].x, TEMP[11].xxxx, TEMP[11].xxxx 207: DP4 TEMP[6].x, TEMP[6], TEMP[10] 208: ABS TEMP[6].x, TEMP[6].xxxx 209: RCP TEMP[6].x, TEMP[6].xxxx 210: MUL TEMP[6].x, TEMP[9].xxxx, TEMP[6].xxxx 211: MAD TEMP[6].x, TEMP[8].xxxx, TEMP[7].xxxx, -TEMP[6].xxxx 212: MUL TEMP[4].x, -TEMP[4].xxxx, TEMP[6].xxxx 213: MUL TEMP[4].x, -TEMP[4].xxxx, CONST[11].yyyy 214: MUL TEMP[4].x, TEMP[4].xxxx, IMM[1].wwww 215: EX2 TEMP[4].x, TEMP[4].xxxx 216: MOV_SAT TEMP[4].x, TEMP[4].xxxx 217: ADD TEMP[4].x, IMM[0].xxxx, -TEMP[4].xxxx 218: MAX TEMP[4].x, TEMP[5].xxxx, TEMP[4].xxxx 219: MOV TEMP[3].w, TEMP[4].xxxx 220: ENDIF 221: MOV_SAT TEMP[4].x, TEMP[3].wwww 222: LRP TEMP[0].xyz, TEMP[4].xxxx, TEMP[3].xyzz, TEMP[2].xyzz 223: MOV_SAT TEMP[2].x, TEMP[3].wwww 224: ADD TEMP[2].x, IMM[0].xxxx, -TEMP[2].xxxx 225: MUL TEMP[1].x, TEMP[1].xxxx, TEMP[2].xxxx 226: MOV TEMP[0].w, TEMP[1].xxxx 227: MOV OUT[0], TEMP[0] 228: END radeonsi: Compiling shader 40 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_ps <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), float inreg, i32 inreg, <2 x i32>, <2 x i32>, <2 x i32>, <3 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, float, float, float, float, float, i32, i32, float, i32) #0 { main_body: %23 = call float @llvm.SI.fs.interp(i32 3, i32 1, i32 %6, <2 x i32> %8) %24 = call float @llvm.SI.fs.interp(i32 0, i32 2, i32 %6, <2 x i32> %8) %25 = call float @llvm.SI.fs.interp(i32 1, i32 2, i32 %6, <2 x i32> %8) %26 = call float @llvm.SI.fs.interp(i32 2, i32 0, i32 %6, <2 x i32> %8) %27 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %6, <2 x i32> %8) %28 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 4, !amdgpu.uniform !0 %29 = load <8 x i32>, <8 x i32> addrspace(2)* %28, align 32, !invariant.load !0 %30 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %31 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %30, i64 0, i64 11, !amdgpu.uniform !0 %32 = load <4 x i32>, <4 x i32> addrspace(2)* %31, align 16, !invariant.load !0 %33 = bitcast float %26 to i32 %34 = bitcast float %27 to i32 %35 = insertelement <2 x i32> undef, i32 %33, i32 0 %36 = insertelement <2 x i32> %35, i32 %34, i32 1 %37 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %36, <8 x i32> %29, <4 x i32> %32, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %38 = extractelement <4 x float> %37, i32 0 %39 = extractelement <4 x float> %37, i32 1 %40 = extractelement <4 x float> %37, i32 2 %41 = extractelement <4 x float> %37, i32 3 %42 = call float @llvm.SI.fs.interp(i32 0, i32 0, i32 %6, <2 x i32> %8) %43 = call float @llvm.SI.fs.interp(i32 1, i32 0, i32 %6, <2 x i32> %8) %44 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 8, !amdgpu.uniform !0 %45 = load <8 x i32>, <8 x i32> addrspace(2)* %44, align 32, !invariant.load !0 %46 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %47 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %46, i64 0, i64 19, !amdgpu.uniform !0 %48 = load <4 x i32>, <4 x i32> addrspace(2)* %47, align 16, !invariant.load !0 %49 = bitcast float %42 to i32 %50 = bitcast float %43 to i32 %51 = insertelement <2 x i32> undef, i32 %49, i32 0 %52 = insertelement <2 x i32> %51, i32 %50, i32 1 %53 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %52, <8 x i32> %45, <4 x i32> %48, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %54 = extractelement <4 x float> %53, i32 0 %55 = extractelement <4 x float> %53, i32 1 %56 = extractelement <4 x float> %53, i32 2 %57 = extractelement <4 x float> %53, i32 3 %58 = call float @llvm.SI.fs.interp(i32 0, i32 0, i32 %6, <2 x i32> %8) %59 = call float @llvm.SI.fs.interp(i32 1, i32 0, i32 %6, <2 x i32> %8) %60 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 6, !amdgpu.uniform !0 %61 = load <8 x i32>, <8 x i32> addrspace(2)* %60, align 32, !invariant.load !0 %62 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %63 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %62, i64 0, i64 15, !amdgpu.uniform !0 %64 = load <4 x i32>, <4 x i32> addrspace(2)* %63, align 16, !invariant.load !0 %65 = bitcast float %58 to i32 %66 = bitcast float %59 to i32 %67 = insertelement <2 x i32> undef, i32 %65, i32 0 %68 = insertelement <2 x i32> %67, i32 %66, i32 1 %69 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %68, <8 x i32> %61, <4 x i32> %64, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %70 = extractelement <4 x float> %69, i32 0 %71 = extractelement <4 x float> %69, i32 1 %72 = extractelement <4 x float> %69, i32 2 %73 = extractelement <4 x float> %69, i32 3 %74 = fsub float 1.000000e+00, %57 %75 = fmul float %54, %57 %76 = fmul float %38, %74 %77 = fadd float %75, %76 %78 = fsub float 1.000000e+00, %57 %79 = fmul float %55, %57 %80 = fmul float %39, %78 %81 = fadd float %79, %80 %82 = fsub float 1.000000e+00, %57 %83 = fmul float %56, %57 %84 = fmul float %40, %82 %85 = fadd float %83, %84 %86 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %87 = load <16 x i8>, <16 x i8> addrspace(2)* %86, align 16, !invariant.load !0 %88 = call float @llvm.SI.load.const(<16 x i8> %87, i32 336) %89 = fmul float %77, %88 %90 = call float @llvm.SI.load.const(<16 x i8> %87, i32 340) %91 = fmul float %81, %90 %92 = call float @llvm.SI.load.const(<16 x i8> %87, i32 344) %93 = fmul float %85, %92 %94 = fmul float %89, 2.000000e+00 %95 = fmul float %91, 2.000000e+00 %96 = fmul float %93, 2.000000e+00 %97 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %98 = load <16 x i8>, <16 x i8> addrspace(2)* %97, align 16, !invariant.load !0 %99 = call float @llvm.SI.load.const(<16 x i8> %98, i32 240) %100 = fmul float %94, %99 %101 = call float @llvm.SI.load.const(<16 x i8> %98, i32 244) %102 = fmul float %95, %101 %103 = call float @llvm.SI.load.const(<16 x i8> %98, i32 248) %104 = fmul float %96, %103 %105 = fmul float %100, 2.000000e+00 %106 = fmul float %102, 2.000000e+00 %107 = fmul float %104, 2.000000e+00 %108 = fsub float 1.000000e+00, %94 %109 = fsub float 1.000000e+00, %95 %110 = fsub float 1.000000e+00, %96 %111 = fmul float %108, 2.000000e+00 %112 = fmul float %109, 2.000000e+00 %113 = fmul float %110, 2.000000e+00 %114 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %115 = load <16 x i8>, <16 x i8> addrspace(2)* %114, align 16, !invariant.load !0 %116 = call float @llvm.SI.load.const(<16 x i8> %115, i32 240) %117 = fsub float 1.000000e+00, %116 %118 = call float @llvm.SI.load.const(<16 x i8> %115, i32 244) %119 = fsub float 1.000000e+00, %118 %120 = call float @llvm.SI.load.const(<16 x i8> %115, i32 248) %121 = fsub float 1.000000e+00, %120 %122 = fmul float %111, %117 %123 = fmul float %112, %119 %124 = fmul float %113, %121 %125 = fsub float 1.000000e+00, %122 %126 = fsub float 1.000000e+00, %123 %127 = fsub float 1.000000e+00, %124 %128 = fcmp oge float %94, 5.000000e-01 %129 = select i1 %128, float 1.000000e+00, float 0.000000e+00 %130 = fsub float 1.000000e+00, %129 %131 = fmul float %125, %129 %132 = fmul float %105, %130 %133 = fadd float %131, %132 %134 = fsub float 1.000000e+00, %129 %135 = fmul float %126, %129 %136 = fmul float %106, %134 %137 = fadd float %135, %136 %138 = fsub float 1.000000e+00, %129 %139 = fmul float %127, %129 %140 = fmul float %107, %138 %141 = fadd float %139, %140 %142 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %143 = load <16 x i8>, <16 x i8> addrspace(2)* %142, align 16, !invariant.load !0 %144 = call float @llvm.SI.load.const(<16 x i8> %143, i32 252) %145 = fmul float %70, %144 %146 = fsub float 1.000000e+00, %145 %147 = fmul float %133, %145 %148 = fmul float %94, %146 %149 = fadd float %147, %148 %150 = fsub float 1.000000e+00, %145 %151 = fmul float %137, %145 %152 = fmul float %95, %150 %153 = fadd float %151, %152 %154 = fsub float 1.000000e+00, %145 %155 = fmul float %141, %145 %156 = fmul float %96, %154 %157 = fadd float %155, %156 %158 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %159 = load <16 x i8>, <16 x i8> addrspace(2)* %158, align 16, !invariant.load !0 %160 = call float @llvm.SI.load.const(<16 x i8> %159, i32 256) %161 = fmul float %149, %160 %162 = call float @llvm.SI.load.const(<16 x i8> %159, i32 260) %163 = fmul float %153, %162 %164 = call float @llvm.SI.load.const(<16 x i8> %159, i32 264) %165 = fmul float %157, %164 %166 = fmul float %161, 2.000000e+00 %167 = fmul float %163, 2.000000e+00 %168 = fmul float %165, 2.000000e+00 %169 = fsub float 1.000000e+00, %149 %170 = fsub float 1.000000e+00, %153 %171 = fsub float 1.000000e+00, %157 %172 = fmul float %169, 2.000000e+00 %173 = fmul float %170, 2.000000e+00 %174 = fmul float %171, 2.000000e+00 %175 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %176 = load <16 x i8>, <16 x i8> addrspace(2)* %175, align 16, !invariant.load !0 %177 = call float @llvm.SI.load.const(<16 x i8> %176, i32 256) %178 = fsub float 1.000000e+00, %177 %179 = call float @llvm.SI.load.const(<16 x i8> %176, i32 260) %180 = fsub float 1.000000e+00, %179 %181 = call float @llvm.SI.load.const(<16 x i8> %176, i32 264) %182 = fsub float 1.000000e+00, %181 %183 = fmul float %172, %178 %184 = fmul float %173, %180 %185 = fmul float %174, %182 %186 = fsub float 1.000000e+00, %183 %187 = fsub float 1.000000e+00, %184 %188 = fsub float 1.000000e+00, %185 %189 = fcmp oge float %149, 5.000000e-01 %190 = select i1 %189, float 1.000000e+00, float 0.000000e+00 %191 = fsub float 1.000000e+00, %190 %192 = fmul float %186, %190 %193 = fmul float %166, %191 %194 = fadd float %192, %193 %195 = fsub float 1.000000e+00, %190 %196 = fmul float %187, %190 %197 = fmul float %167, %195 %198 = fadd float %196, %197 %199 = fsub float 1.000000e+00, %190 %200 = fmul float %188, %190 %201 = fmul float %168, %199 %202 = fadd float %200, %201 %203 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %204 = load <16 x i8>, <16 x i8> addrspace(2)* %203, align 16, !invariant.load !0 %205 = call float @llvm.SI.load.const(<16 x i8> %204, i32 268) %206 = fmul float %71, %205 %207 = fsub float 1.000000e+00, %206 %208 = fmul float %194, %206 %209 = fmul float %149, %207 %210 = fadd float %208, %209 %211 = fsub float 1.000000e+00, %206 %212 = fmul float %198, %206 %213 = fmul float %153, %211 %214 = fadd float %212, %213 %215 = fsub float 1.000000e+00, %206 %216 = fmul float %202, %206 %217 = fmul float %157, %215 %218 = fadd float %216, %217 %219 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %220 = load <16 x i8>, <16 x i8> addrspace(2)* %219, align 16, !invariant.load !0 %221 = call float @llvm.SI.load.const(<16 x i8> %220, i32 272) %222 = fmul float %210, %221 %223 = call float @llvm.SI.load.const(<16 x i8> %220, i32 276) %224 = fmul float %214, %223 %225 = call float @llvm.SI.load.const(<16 x i8> %220, i32 280) %226 = fmul float %218, %225 %227 = fmul float %222, 2.000000e+00 %228 = fmul float %224, 2.000000e+00 %229 = fmul float %226, 2.000000e+00 %230 = fsub float 1.000000e+00, %210 %231 = fsub float 1.000000e+00, %214 %232 = fsub float 1.000000e+00, %218 %233 = fmul float %230, 2.000000e+00 %234 = fmul float %231, 2.000000e+00 %235 = fmul float %232, 2.000000e+00 %236 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %237 = load <16 x i8>, <16 x i8> addrspace(2)* %236, align 16, !invariant.load !0 %238 = call float @llvm.SI.load.const(<16 x i8> %237, i32 272) %239 = fsub float 1.000000e+00, %238 %240 = call float @llvm.SI.load.const(<16 x i8> %237, i32 276) %241 = fsub float 1.000000e+00, %240 %242 = call float @llvm.SI.load.const(<16 x i8> %237, i32 280) %243 = fsub float 1.000000e+00, %242 %244 = fmul float %233, %239 %245 = fmul float %234, %241 %246 = fmul float %235, %243 %247 = fsub float 1.000000e+00, %244 %248 = fsub float 1.000000e+00, %245 %249 = fsub float 1.000000e+00, %246 %250 = fcmp oge float %210, 5.000000e-01 %251 = select i1 %250, float 1.000000e+00, float 0.000000e+00 %252 = fsub float 1.000000e+00, %251 %253 = fmul float %247, %251 %254 = fmul float %227, %252 %255 = fadd float %253, %254 %256 = fsub float 1.000000e+00, %251 %257 = fmul float %248, %251 %258 = fmul float %228, %256 %259 = fadd float %257, %258 %260 = fsub float 1.000000e+00, %251 %261 = fmul float %249, %251 %262 = fmul float %229, %260 %263 = fadd float %261, %262 %264 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %265 = load <16 x i8>, <16 x i8> addrspace(2)* %264, align 16, !invariant.load !0 %266 = call float @llvm.SI.load.const(<16 x i8> %265, i32 284) %267 = fmul float %72, %266 %268 = fsub float 1.000000e+00, %267 %269 = fmul float %255, %267 %270 = fmul float %210, %268 %271 = fadd float %269, %270 %272 = fsub float 1.000000e+00, %267 %273 = fmul float %259, %267 %274 = fmul float %214, %272 %275 = fadd float %273, %274 %276 = fsub float 1.000000e+00, %267 %277 = fmul float %263, %267 %278 = fmul float %218, %276 %279 = fadd float %277, %278 %280 = fmul float %271, %73 %281 = fmul float %275, %73 %282 = fmul float %279, %73 %283 = call float @llvm.SI.fs.interp(i32 0, i32 1, i32 %6, <2 x i32> %8) %284 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %285 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %286 = call float @llvm.SI.fs.interp(i32 0, i32 1, i32 %6, <2 x i32> %8) %287 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %288 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %289 = fmul float %283, %286 %290 = fmul float %284, %287 %291 = fadd float %290, %289 %292 = fmul float %285, %288 %293 = fadd float %291, %292 %294 = call float @llvm.sqrt.f32(float %293) %295 = fdiv float 1.000000e+00, %294, !fpmath !1 %296 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %297 = fmul float %296, %295 %298 = fcmp ogt float %297, 0.000000e+00 br i1 %298, label %if55, label %else64 if55: ; preds = %main_body %299 = call float @llvm.AMDGPU.clamp.(float %297, float 0.000000e+00, float 1.000000e+00) %300 = fmul float %299, 1.250000e+00 %301 = call float @llvm.AMDGPU.clamp.(float %300, float 0.000000e+00, float 1.000000e+00) %302 = fmul float %301, 2.000000e+00 %303 = fsub float 3.000000e+00, %302 %304 = fmul float %301, %303 %305 = fmul float %301, %304 %306 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %307 = load <16 x i8>, <16 x i8> addrspace(2)* %306, align 16, !invariant.load !0 %308 = call float @llvm.SI.load.const(<16 x i8> %307, i32 48) %309 = call float @llvm.SI.load.const(<16 x i8> %307, i32 64) %310 = fsub float 1.000000e+00, %305 %311 = fmul float %308, %305 %312 = fmul float %309, %310 %313 = fadd float %311, %312 %314 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %315 = load <16 x i8>, <16 x i8> addrspace(2)* %314, align 16, !invariant.load !0 %316 = call float @llvm.SI.load.const(<16 x i8> %315, i32 52) %317 = call float @llvm.SI.load.const(<16 x i8> %315, i32 68) %318 = fsub float 1.000000e+00, %305 %319 = fmul float %316, %305 %320 = fmul float %317, %318 %321 = fadd float %319, %320 %322 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %323 = load <16 x i8>, <16 x i8> addrspace(2)* %322, align 16, !invariant.load !0 %324 = call float @llvm.SI.load.const(<16 x i8> %323, i32 56) %325 = call float @llvm.SI.load.const(<16 x i8> %323, i32 72) %326 = fmul float %324, %305 br label %endif73 else64: ; preds = %main_body %327 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %328 = load <16 x i8>, <16 x i8> addrspace(2)* %327, align 16, !invariant.load !0 %329 = call float @llvm.SI.load.const(<16 x i8> %328, i32 72) %330 = call float @llvm.SI.load.const(<16 x i8> %328, i32 68) %331 = call float @llvm.SI.load.const(<16 x i8> %328, i32 64) %332 = fsub float -0.000000e+00, %297 %333 = call float @llvm.AMDGPU.clamp.(float %332, float 0.000000e+00, float 1.000000e+00) %334 = fmul float %333, 1.250000e+00 %335 = call float @llvm.AMDGPU.clamp.(float %334, float 0.000000e+00, float 1.000000e+00) %336 = fmul float %335, 2.000000e+00 %337 = fsub float 3.000000e+00, %336 %338 = fmul float %335, %337 %339 = fmul float %335, %338 %340 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %341 = load <16 x i8>, <16 x i8> addrspace(2)* %340, align 16, !invariant.load !0 %342 = call float @llvm.SI.load.const(<16 x i8> %341, i32 80) %343 = fsub float 1.000000e+00, %339 %344 = fmul float %342, %339 %345 = fmul float %331, %343 %346 = fadd float %344, %345 %347 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %348 = load <16 x i8>, <16 x i8> addrspace(2)* %347, align 16, !invariant.load !0 %349 = call float @llvm.SI.load.const(<16 x i8> %348, i32 84) %350 = fsub float 1.000000e+00, %339 %351 = fmul float %349, %339 %352 = fmul float %330, %350 %353 = fadd float %351, %352 %354 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %355 = load <16 x i8>, <16 x i8> addrspace(2)* %354, align 16, !invariant.load !0 %356 = call float @llvm.SI.load.const(<16 x i8> %355, i32 88) %357 = fmul float %356, %339 br label %endif73 endif73: ; preds = %else64, %if55 %.pn = phi float [ %339, %else64 ], [ %305, %if55 ] %.sink12 = phi float [ %329, %else64 ], [ %325, %if55 ] %.sink = phi float [ %357, %else64 ], [ %326, %if55 ] %.09 = phi float [ %346, %else64 ], [ %313, %if55 ] %.08 = phi float [ %353, %else64 ], [ %321, %if55 ] %.sink13 = fsub float 1.000000e+00, %.pn %358 = fmul float %.sink12, %.sink13 %359 = fadd float %.sink, %358 %360 = fmul float %.09, %280 %361 = fmul float %.08, %281 %362 = fmul float %359, %282 %363 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %364 = load <16 x i8>, <16 x i8> addrspace(2)* %363, align 16, !invariant.load !0 %365 = call float @llvm.SI.load.const(<16 x i8> %364, i32 96) %366 = fmul float %365, 2.000000e+00 %367 = fmul float %360, %366 %368 = fmul float %361, %366 %369 = fmul float %362, %366 %370 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %371 = load <16 x i8>, <16 x i8> addrspace(2)* %370, align 16, !invariant.load !0 %372 = call float @llvm.SI.load.const(<16 x i8> %371, i32 348) %373 = fmul float %41, %372 %374 = call float @llvm.SI.load.const(<16 x i8> %371, i32 368) %375 = fcmp olt float %373, %374 %376 = select i1 %375, float -1.000000e+00, float 0.000000e+00 call void @llvm.AMDGPU.kill(float %376) %377 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %378 = load <16 x i8>, <16 x i8> addrspace(2)* %377, align 16, !invariant.load !0 %379 = call float @llvm.SI.load.const(<16 x i8> %378, i32 32) %380 = fmul float %271, %379 %381 = call float @llvm.SI.load.const(<16 x i8> %378, i32 36) %382 = fmul float %275, %381 %383 = call float @llvm.SI.load.const(<16 x i8> %378, i32 40) %384 = fmul float %279, %383 %385 = call float @llvm.SI.fs.interp(i32 0, i32 1, i32 %6, <2 x i32> %8) %386 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %387 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %388 = call float @llvm.SI.fs.interp(i32 0, i32 1, i32 %6, <2 x i32> %8) %389 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %390 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %391 = fmul float %385, %388 %392 = fmul float %386, %389 %393 = fadd float %392, %391 %394 = fmul float %387, %390 %395 = fadd float %393, %394 %396 = call float @llvm.sqrt.f32(float %395) %397 = fdiv float 1.000000e+00, %396, !fpmath !1 %398 = call float @llvm.SI.fs.interp(i32 0, i32 1, i32 %6, <2 x i32> %8) %399 = fmul float %398, %397 %400 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %401 = fmul float %400, %397 %402 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %403 = fmul float %402, %397 %404 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %405 = load <16 x i8>, <16 x i8> addrspace(2)* %404, align 16, !invariant.load !0 %406 = call float @llvm.SI.load.const(<16 x i8> %405, i32 16) %407 = call float @llvm.SI.load.const(<16 x i8> %405, i32 20) %408 = call float @llvm.SI.load.const(<16 x i8> %405, i32 24) %409 = call float @llvm.SI.load.const(<16 x i8> %405, i32 16) %410 = call float @llvm.SI.load.const(<16 x i8> %405, i32 20) %411 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %412 = load <16 x i8>, <16 x i8> addrspace(2)* %411, align 16, !invariant.load !0 %413 = call float @llvm.SI.load.const(<16 x i8> %412, i32 24) %414 = fmul float %406, %409 %415 = fmul float %407, %410 %416 = fadd float %415, %414 %417 = fmul float %408, %413 %418 = fadd float %416, %417 %419 = call float @llvm.sqrt.f32(float %418) %420 = fdiv float 1.000000e+00, %419, !fpmath !1 %421 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %422 = load <16 x i8>, <16 x i8> addrspace(2)* %421, align 16, !invariant.load !0 %423 = call float @llvm.SI.load.const(<16 x i8> %422, i32 16) %424 = fmul float %423, %420 %425 = call float @llvm.SI.load.const(<16 x i8> %422, i32 20) %426 = fmul float %425, %420 %427 = call float @llvm.SI.load.const(<16 x i8> %422, i32 24) %428 = fmul float %427, %420 %429 = fmul float %399, %424 %430 = fmul float %401, %426 %431 = fadd float %430, %429 %432 = fmul float %403, %428 %433 = fadd float %431, %432 %434 = call float @llvm.maxnum.f32(float %433, float 0.000000e+00) %435 = fmul float %380, %434 %436 = fmul float %382, %434 %437 = fmul float %384, %434 %438 = fadd float %435, %367 %439 = fadd float %436, %368 %440 = fadd float %437, %369 %441 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %442 = load <16 x i8>, <16 x i8> addrspace(2)* %441, align 16, !invariant.load !0 %443 = call float @llvm.SI.load.const(<16 x i8> %442, i32 0) %444 = fsub float %23, %443 %445 = call float @llvm.SI.load.const(<16 x i8> %442, i32 4) %446 = fsub float %24, %445 %447 = call float @llvm.SI.load.const(<16 x i8> %442, i32 8) %448 = fsub float %25, %447 %449 = fmul float %444, %444 %450 = fmul float %446, %446 %451 = fadd float %450, %449 %452 = fmul float %448, %448 %453 = fadd float %451, %452 %454 = call float @llvm.sqrt.f32(float %453) %455 = fmul float %444, %444 %456 = fmul float %446, %446 %457 = fadd float %456, %455 %458 = fmul float %448, %448 %459 = fadd float %457, %458 %460 = call float @llvm.sqrt.f32(float %459) %461 = fdiv float 1.000000e+00, %460, !fpmath !1 %462 = fmul float %444, %461 %463 = fmul float %446, %461 %464 = fmul float %448, %461 %465 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %466 = load <16 x i8>, <16 x i8> addrspace(2)* %465, align 16, !invariant.load !0 %467 = call float @llvm.SI.load.const(<16 x i8> %466, i32 224) %468 = fsub float -0.000000e+00, %467 %469 = fmul float %467, 0xBFF7154760000000 %470 = call float @llvm.exp2.f32(float %469) %471 = fsub float 1.000000e+00, %470 %472 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %473 = load <16 x i8>, <16 x i8> addrspace(2)* %472, align 16, !invariant.load !0 %474 = call float @llvm.SI.load.const(<16 x i8> %473, i32 220) %475 = call float @llvm.SI.load.const(<16 x i8> %473, i32 216) %476 = fsub float %474, %475 %477 = fsub float %454, %476 %478 = call float @llvm.SI.load.const(<16 x i8> %473, i32 216) %479 = fdiv float 1.000000e+00, %478, !fpmath !1 %480 = fmul float %477, %479 %481 = call float @llvm.AMDGPU.clamp.(float %480, float 0.000000e+00, float 1.000000e+00) %482 = fmul float %481, %468 %483 = fmul float %482, 0x3FF7154760000000 %484 = call float @llvm.exp2.f32(float %483) %485 = fsub float 1.000000e+00, %484 %486 = fdiv float 1.000000e+00, %471, !fpmath !1 %487 = fmul float %485, %486 %488 = call float @llvm.AMDGPU.clamp.(float %487, float 0.000000e+00, float 1.000000e+00) %489 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %490 = load <16 x i8>, <16 x i8> addrspace(2)* %489, align 16, !invariant.load !0 %491 = call float @llvm.SI.load.const(<16 x i8> %490, i32 208) %492 = fsub float %454, %491 %493 = call float @llvm.SI.load.const(<16 x i8> %490, i32 212) %494 = fdiv float 1.000000e+00, %493, !fpmath !1 %495 = fmul float %492, %494 %496 = call float @llvm.AMDGPU.clamp.(float %495, float 0.000000e+00, float 1.000000e+00) %497 = fmul float %496, %468 %498 = fmul float %497, 0x3FF7154760000000 %499 = call float @llvm.exp2.f32(float %498) %500 = fsub float 1.000000e+00, %499 %501 = fdiv float 1.000000e+00, %471, !fpmath !1 %502 = fmul float %500, %501 %503 = call float @llvm.AMDGPU.clamp.(float %502, float 0.000000e+00, float 1.000000e+00) %504 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 2, !amdgpu.uniform !0 %505 = load <8 x i32>, <8 x i32> addrspace(2)* %504, align 32, !invariant.load !0 %506 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %507 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %506, i64 0, i64 7, !amdgpu.uniform !0 %508 = load <4 x i32>, <4 x i32> addrspace(2)* %507, align 16, !invariant.load !0 %509 = call float @llvm.amdgcn.cubetc(float %462, float %463, float %464) %510 = call float @llvm.amdgcn.cubesc(float %462, float %463, float %464) %511 = call float @llvm.amdgcn.cubema(float %462, float %463, float %464) %512 = call float @llvm.amdgcn.cubeid(float %462, float %463, float %464) %513 = call float @llvm.fabs.f32(float %511) %514 = fdiv float 1.000000e+00, %513, !fpmath !1 %515 = fmul float %509, %514 %516 = fadd float %515, 1.500000e+00 %517 = fmul float %510, %514 %518 = fadd float %517, 1.500000e+00 %519 = bitcast float %518 to i32 %520 = bitcast float %516 to i32 %521 = bitcast float %512 to i32 %522 = insertelement <4 x i32> undef, i32 %519, i32 0 %523 = insertelement <4 x i32> %522, i32 %520, i32 1 %524 = insertelement <4 x i32> %523, i32 %521, i32 2 %525 = call <4 x float> @llvm.SI.image.sample.v4i32(<4 x i32> %524, <8 x i32> %505, <4 x i32> %508, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %526 = extractelement <4 x float> %525, i32 0 %527 = extractelement <4 x float> %525, i32 1 %528 = extractelement <4 x float> %525, i32 2 %529 = extractelement <4 x float> %525, i32 3 %530 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %531 = load <16 x i8>, <16 x i8> addrspace(2)* %530, align 16, !invariant.load !0 %532 = call float @llvm.SI.load.const(<16 x i8> %531, i32 144) %533 = fmul float %526, %532 %534 = call float @llvm.SI.load.const(<16 x i8> %531, i32 148) %535 = fmul float %527, %534 %536 = call float @llvm.SI.load.const(<16 x i8> %531, i32 152) %537 = fmul float %528, %536 %538 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %539 = load <16 x i8>, <16 x i8> addrspace(2)* %538, align 16, !invariant.load !0 %540 = call float @llvm.SI.load.const(<16 x i8> %539, i32 156) %541 = fmul float %529, %540 %542 = fmul float %462, %462 %543 = fmul float %463, %463 %544 = fadd float %543, %542 %545 = fmul float %464, %464 %546 = fadd float %544, %545 %547 = call float @llvm.sqrt.f32(float %546) %548 = fdiv float 1.000000e+00, %547, !fpmath !1 %549 = fmul float %463, %548 %550 = fcmp ogt float %549, 0.000000e+00 br i1 %550, label %if133, label %else142 if133: ; preds = %endif73 %551 = call float @llvm.AMDGPU.clamp.(float %549, float 0.000000e+00, float 1.000000e+00) %552 = fmul float %551, 1.250000e+00 %553 = call float @llvm.AMDGPU.clamp.(float %552, float 0.000000e+00, float 1.000000e+00) %554 = fmul float %553, 2.000000e+00 %555 = fsub float 3.000000e+00, %554 %556 = fmul float %553, %555 %557 = fmul float %553, %556 %558 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %559 = load <16 x i8>, <16 x i8> addrspace(2)* %558, align 16, !invariant.load !0 %560 = call float @llvm.SI.load.const(<16 x i8> %559, i32 48) %561 = call float @llvm.SI.load.const(<16 x i8> %559, i32 64) %562 = fsub float 1.000000e+00, %557 %563 = fmul float %560, %557 %564 = fmul float %561, %562 %565 = fadd float %563, %564 %566 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %567 = load <16 x i8>, <16 x i8> addrspace(2)* %566, align 16, !invariant.load !0 %568 = call float @llvm.SI.load.const(<16 x i8> %567, i32 52) %569 = call float @llvm.SI.load.const(<16 x i8> %567, i32 68) %570 = fsub float 1.000000e+00, %557 %571 = fmul float %568, %557 %572 = fmul float %569, %570 %573 = fadd float %571, %572 %574 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %575 = load <16 x i8>, <16 x i8> addrspace(2)* %574, align 16, !invariant.load !0 %576 = call float @llvm.SI.load.const(<16 x i8> %575, i32 56) %577 = call float @llvm.SI.load.const(<16 x i8> %575, i32 72) %578 = fmul float %576, %557 br label %endif151 else142: ; preds = %endif73 %579 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %580 = load <16 x i8>, <16 x i8> addrspace(2)* %579, align 16, !invariant.load !0 %581 = call float @llvm.SI.load.const(<16 x i8> %580, i32 72) %582 = call float @llvm.SI.load.const(<16 x i8> %580, i32 68) %583 = call float @llvm.SI.load.const(<16 x i8> %580, i32 64) %584 = fsub float -0.000000e+00, %549 %585 = call float @llvm.AMDGPU.clamp.(float %584, float 0.000000e+00, float 1.000000e+00) %586 = fmul float %585, 1.250000e+00 %587 = call float @llvm.AMDGPU.clamp.(float %586, float 0.000000e+00, float 1.000000e+00) %588 = fmul float %587, 2.000000e+00 %589 = fsub float 3.000000e+00, %588 %590 = fmul float %587, %589 %591 = fmul float %587, %590 %592 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %593 = load <16 x i8>, <16 x i8> addrspace(2)* %592, align 16, !invariant.load !0 %594 = call float @llvm.SI.load.const(<16 x i8> %593, i32 80) %595 = fsub float 1.000000e+00, %591 %596 = fmul float %594, %591 %597 = fmul float %583, %595 %598 = fadd float %596, %597 %599 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %600 = load <16 x i8>, <16 x i8> addrspace(2)* %599, align 16, !invariant.load !0 %601 = call float @llvm.SI.load.const(<16 x i8> %600, i32 84) %602 = fsub float 1.000000e+00, %591 %603 = fmul float %601, %591 %604 = fmul float %582, %602 %605 = fadd float %603, %604 %606 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %607 = load <16 x i8>, <16 x i8> addrspace(2)* %606, align 16, !invariant.load !0 %608 = call float @llvm.SI.load.const(<16 x i8> %607, i32 88) %609 = fmul float %608, %591 br label %endif151 endif151: ; preds = %else142, %if133 %.pn18 = phi float [ %591, %else142 ], [ %557, %if133 ] %.sink16 = phi float [ %581, %else142 ], [ %577, %if133 ] %.sink14 = phi float [ %609, %else142 ], [ %578, %if133 ] %.04 = phi float [ %598, %else142 ], [ %565, %if133 ] %.03 = phi float [ %605, %else142 ], [ %573, %if133 ] %.sink17 = fsub float 1.000000e+00, %.pn18 %610 = fmul float %.sink16, %.sink17 %611 = fadd float %.sink14, %610 %612 = fmul float %462, %462 %613 = fmul float %463, %463 %614 = fadd float %613, %612 %615 = fmul float %464, %464 %616 = fadd float %614, %615 %617 = call float @llvm.sqrt.f32(float %616) %618 = fdiv float 1.000000e+00, %617, !fpmath !1 %619 = fmul float %462, %618 %620 = fmul float %463, %618 %621 = fmul float %464, %618 %622 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %623 = load <16 x i8>, <16 x i8> addrspace(2)* %622, align 16, !invariant.load !0 %624 = call float @llvm.SI.load.const(<16 x i8> %623, i32 220) %625 = fmul float %619, %624 %626 = call float @llvm.SI.load.const(<16 x i8> %623, i32 220) %627 = fmul float %620, %626 %628 = call float @llvm.SI.load.const(<16 x i8> %623, i32 220) %629 = fmul float %621, %628 %630 = fmul float %625, 4.000000e+00 %631 = fmul float %627, 4.000000e+00 %632 = fmul float %629, 4.000000e+00 %633 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %634 = load <16 x i8>, <16 x i8> addrspace(2)* %633, align 16, !invariant.load !0 %635 = call float @llvm.SI.load.const(<16 x i8> %634, i32 4) %636 = fadd float %631, %635 %637 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 0, !amdgpu.uniform !0 %638 = load <8 x i32>, <8 x i32> addrspace(2)* %637, align 32, !invariant.load !0 %639 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %640 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %639, i64 0, i64 3, !amdgpu.uniform !0 %641 = load <4 x i32>, <4 x i32> addrspace(2)* %640, align 16, !invariant.load !0 %642 = call float @llvm.amdgcn.cubetc(float %630, float %636, float %632) %643 = call float @llvm.amdgcn.cubesc(float %630, float %636, float %632) %644 = call float @llvm.amdgcn.cubema(float %630, float %636, float %632) %645 = call float @llvm.amdgcn.cubeid(float %630, float %636, float %632) %646 = call float @llvm.fabs.f32(float %644) %647 = fdiv float 1.000000e+00, %646, !fpmath !1 %648 = fmul float %642, %647 %649 = fadd float %648, 1.500000e+00 %650 = fmul float %643, %647 %651 = fadd float %650, 1.500000e+00 %652 = bitcast float %651 to i32 %653 = bitcast float %649 to i32 %654 = bitcast float %645 to i32 %655 = insertelement <4 x i32> undef, i32 %652, i32 0 %656 = insertelement <4 x i32> %655, i32 %653, i32 1 %657 = insertelement <4 x i32> %656, i32 %654, i32 2 %658 = call <4 x float> @llvm.SI.image.sample.v4i32(<4 x i32> %657, <8 x i32> %638, <4 x i32> %641, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %659 = extractelement <4 x float> %658, i32 0 %660 = extractelement <4 x float> %658, i32 1 %661 = extractelement <4 x float> %658, i32 2 %662 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %663 = load <16 x i8>, <16 x i8> addrspace(2)* %662, align 16, !invariant.load !0 %664 = call float @llvm.SI.load.const(<16 x i8> %663, i32 112) %665 = fmul float %659, %664 %666 = call float @llvm.SI.load.const(<16 x i8> %663, i32 116) %667 = fmul float %660, %666 %668 = call float @llvm.SI.load.const(<16 x i8> %663, i32 120) %669 = fmul float %661, %668 %670 = fmul float %665, 2.000000e+00 %671 = fmul float %667, 2.000000e+00 %672 = fmul float %669, 2.000000e+00 %673 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %674 = load <16 x i8>, <16 x i8> addrspace(2)* %673, align 16, !invariant.load !0 %675 = call float @llvm.SI.load.const(<16 x i8> %674, i32 192) %676 = fsub float 1.000000e+00, %488 %677 = fmul float %670, %488 %678 = fmul float %675, %676 %679 = fadd float %677, %678 %680 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %681 = load <16 x i8>, <16 x i8> addrspace(2)* %680, align 16, !invariant.load !0 %682 = call float @llvm.SI.load.const(<16 x i8> %681, i32 196) %683 = fsub float 1.000000e+00, %488 %684 = fmul float %671, %488 %685 = fmul float %682, %683 %686 = fadd float %684, %685 %687 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %688 = load <16 x i8>, <16 x i8> addrspace(2)* %687, align 16, !invariant.load !0 %689 = call float @llvm.SI.load.const(<16 x i8> %688, i32 200) %690 = fsub float 1.000000e+00, %488 %691 = fmul float %672, %488 %692 = fmul float %689, %690 %693 = fadd float %691, %692 %694 = fmul float %533, 5.000000e-01 %695 = fmul float %535, 5.000000e-01 %696 = fmul float %537, 5.000000e-01 %697 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %698 = load <16 x i8>, <16 x i8> addrspace(2)* %697, align 16, !invariant.load !0 %699 = call float @llvm.SI.load.const(<16 x i8> %698, i32 112) %700 = fmul float %.04, %699 %701 = call float @llvm.SI.load.const(<16 x i8> %698, i32 116) %702 = fmul float %.03, %701 %703 = call float @llvm.SI.load.const(<16 x i8> %698, i32 120) %704 = fmul float %611, %703 %705 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %706 = load <16 x i8>, <16 x i8> addrspace(2)* %705, align 16, !invariant.load !0 %707 = call float @llvm.SI.load.const(<16 x i8> %706, i32 96) %708 = fmul float %707, 2.000000e+00 %709 = fmul float %700, %708 %710 = fmul float %702, %708 %711 = fmul float %704, %708 %712 = fmul float %709, 5.000000e-01 %713 = fadd float %712, %694 %714 = fmul float %710, 5.000000e-01 %715 = fadd float %714, %695 %716 = fmul float %711, 5.000000e-01 %717 = fadd float %716, %696 %718 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %719 = load <16 x i8>, <16 x i8> addrspace(2)* %718, align 16, !invariant.load !0 %720 = call float @llvm.SI.load.const(<16 x i8> %719, i32 232) %721 = fmul float %454, %720 %722 = fmul float %721, 0x3FFB333340000000 %723 = fmul float %722, 0xBFF7154760000000 %724 = call float @llvm.exp2.f32(float %723) %725 = fsub float 0x3FF3333340000000, %724 %726 = fmul float %541, %725 %727 = fmul float %726, 1.250000e+00 %728 = call float @llvm.AMDGPU.clamp.(float %727, float 0.000000e+00, float 1.000000e+00) %729 = fsub float 1.000000e+00, %728 %730 = fmul float %713, %728 %731 = fmul float %679, %729 %732 = fadd float %730, %731 %733 = fsub float 1.000000e+00, %728 %734 = fmul float %715, %728 %735 = fmul float %686, %733 %736 = fadd float %734, %735 %737 = fsub float 1.000000e+00, %728 %738 = fmul float %717, %728 %739 = fmul float %693, %737 %740 = fadd float %738, %739 %741 = call float @llvm.maxnum.f32(float %503, float %728) %742 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %743 = load <16 x i8>, <16 x i8> addrspace(2)* %742, align 16, !invariant.load !0 %744 = call float @llvm.SI.load.const(<16 x i8> %743, i32 180) %745 = fcmp ogt float %744, 0.000000e+00 br i1 %745, label %if182, label %endif220 if182: ; preds = %endif151 %746 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %747 = load <16 x i8>, <16 x i8> addrspace(2)* %746, align 16, !invariant.load !0 %748 = call float @llvm.SI.load.const(<16 x i8> %747, i32 176) %749 = call float @llvm.SI.load.const(<16 x i8> %747, i32 0) %750 = call float @llvm.SI.load.const(<16 x i8> %747, i32 4) %751 = call float @llvm.SI.load.const(<16 x i8> %747, i32 8) %752 = fmul float %749, 0.000000e+00 %753 = fadd float %752, %750 %754 = fmul float %751, 0.000000e+00 %755 = fadd float %753, %754 %756 = fadd float %755, %748 %757 = fcmp ole float %756, 0.000000e+00 %758 = uitofp i1 %757 to float %759 = fmul float %23, 0.000000e+00 %760 = fadd float %759, %24 %761 = fmul float %25, 0.000000e+00 %762 = fadd float %760, %761 %763 = fadd float %762, %748 %764 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %765 = load <16 x i8>, <16 x i8> addrspace(2)* %764, align 16, !invariant.load !0 %766 = call float @llvm.SI.load.const(<16 x i8> %765, i32 0) %767 = fsub float %766, %23 %768 = call float @llvm.SI.load.const(<16 x i8> %765, i32 4) %769 = fsub float %768, %24 %770 = call float @llvm.SI.load.const(<16 x i8> %765, i32 8) %771 = fsub float %770, %25 %772 = fmul float %758, 2.000000e+00 %773 = fsub float 1.000000e+00, %772 %774 = fmul float %773, %763 %775 = call float @llvm.minnum.f32(float %774, float 0.000000e+00) %776 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %777 = load <16 x i8>, <16 x i8> addrspace(2)* %776, align 16, !invariant.load !0 %778 = call float @llvm.SI.load.const(<16 x i8> %777, i32 184) %779 = fmul float %778, %454 %780 = fadd float %763, %756 %781 = fmul float %775, %775 %782 = fmul float %767, 0.000000e+00 %783 = fadd float %782, %769 %784 = fmul float %771, 0.000000e+00 %785 = fadd float %783, %784 %786 = fmul float %748, 0.000000e+00 %787 = fadd float %785, %786 %788 = call float @llvm.fabs.f32(float %787) %789 = fdiv float 1.000000e+00, %788, !fpmath !1 %790 = fmul float %781, %789 %791 = fmul float %758, %780 %792 = fsub float %791, %790 %793 = fmul float %779, %792 %794 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %795 = load <16 x i8>, <16 x i8> addrspace(2)* %794, align 16, !invariant.load !0 %796 = call float @llvm.SI.load.const(<16 x i8> %795, i32 180) %797 = fmul float %793, %796 %798 = fmul float %797, 0x3FF7154760000000 %799 = call float @llvm.exp2.f32(float %798) %800 = call float @llvm.AMDGPU.clamp.(float %799, float 0.000000e+00, float 1.000000e+00) %801 = fsub float 1.000000e+00, %800 %802 = call float @llvm.maxnum.f32(float %741, float %801) br label %endif220 endif220: ; preds = %if182, %endif151 %.010 = phi float [ %802, %if182 ], [ %741, %endif151 ] %803 = call float @llvm.AMDGPU.clamp.(float %.010, float 0.000000e+00, float 1.000000e+00) %804 = fsub float 1.000000e+00, %803 %805 = fmul float %732, %803 %806 = fmul float %438, %804 %807 = fadd float %805, %806 %808 = fsub float 1.000000e+00, %803 %809 = fmul float %736, %803 %810 = fmul float %439, %808 %811 = fadd float %809, %810 %812 = fsub float 1.000000e+00, %803 %813 = fmul float %740, %803 %814 = fmul float %440, %812 %815 = fadd float %813, %814 %816 = call float @llvm.AMDGPU.clamp.(float %.010, float 0.000000e+00, float 1.000000e+00) %817 = fsub float 1.000000e+00, %816 %818 = fmul float %373, %817 %819 = bitcast float %5 to i32 %820 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> undef, i32 %819, 10 %821 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %820, float %807, 11 %822 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %821, float %811, 12 %823 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %822, float %815, 13 %824 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %823, float %818, 14 %825 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %824, float %21, 24 ret <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %825 } ; Function Attrs: nounwind readnone declare float @llvm.SI.fs.interp(i32, i32, i32, <2 x i32>) #1 ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.sqrt.f32(float) #1 ; Function Attrs: nounwind readnone declare float @llvm.AMDGPU.clamp.(float, float, float) #1 ; Function Attrs: nounwind declare void @llvm.AMDGPU.kill(float) #2 ; Function Attrs: nounwind readnone declare float @llvm.maxnum.f32(float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.exp2.f32(float) #1 ; Function Attrs: nounwind readnone declare float @llvm.amdgcn.cubetc(float, float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.amdgcn.cubesc(float, float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.amdgcn.cubema(float, float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.amdgcn.cubeid(float, float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.fabs.f32(float) #1 ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.image.sample.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.minnum.f32(float, float) #1 attributes #0 = { "InitialPSInputAddr"="36983" } attributes #1 = { nounwind readnone } attributes #2 = { nounwind } !0 = !{} !1 = !{float 2.500000e+00} VERT PROPERTY NEXT_SHADER FRAG DCL IN[0] DCL IN[1] DCL IN[2] DCL IN[3] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] DCL OUT[2], GENERIC[1] DCL OUT[3], GENERIC[2] DCL CONST[0..13] DCL TEMP[0..4], LOCAL 0: MAD TEMP[0].xy, IN[3].xyyy, CONST[8].xyyy, CONST[8].zwww 1: MAD TEMP[1].xy, IN[2].xyyy, CONST[9].xyyy, CONST[9].zwww 2: MOV TEMP[0].zw, TEMP[1].yyxy 3: MOV TEMP[1].x, CONST[4].xxxx 4: MOV TEMP[1].y, CONST[5].xxxx 5: MOV TEMP[1].z, CONST[6].xxxx 6: MOV TEMP[2].x, CONST[4].yyyy 7: MOV TEMP[2].y, CONST[5].yyyy 8: MOV TEMP[2].z, CONST[6].yyyy 9: MOV TEMP[3].x, CONST[4].zzzz 10: MOV TEMP[3].y, CONST[5].zzzz 11: MOV TEMP[3].z, CONST[6].zzzz 12: MUL TEMP[4], CONST[10], IN[0].xxxx 13: MAD TEMP[4], CONST[11], IN[0].yyyy, TEMP[4] 14: MAD TEMP[4], CONST[12], IN[0].zzzz, TEMP[4] 15: MAD TEMP[4], CONST[13], IN[0].wwww, TEMP[4] 16: MUL TEMP[1].xyz, TEMP[1].xyzz, IN[1].xxxx 17: MAD TEMP[1].xyz, TEMP[2].xyzz, IN[1].yyyy, TEMP[1].xyzz 18: MAD TEMP[1].xyz, TEMP[3].xyzz, IN[1].zzzz, TEMP[1].xyzz 19: MUL TEMP[2], CONST[0], IN[0].xxxx 20: MAD TEMP[2], CONST[1], IN[0].yyyy, TEMP[2] 21: MAD TEMP[2], CONST[2], IN[0].zzzz, TEMP[2] 22: MAD TEMP[2].xyz, CONST[3], IN[0].wwww, TEMP[2] 23: DP3 TEMP[3].x, TEMP[1].xyzz, TEMP[1].xyzz 24: RSQ TEMP[3].x, TEMP[3].xxxx 25: MUL TEMP[1].xyz, TEMP[1].xyzz, TEMP[3].xxxx 26: MOV TEMP[1].w, TEMP[2].xxxx 27: MOV TEMP[2].xy, TEMP[2].yzyy 28: MOV OUT[3], TEMP[2] 29: MOV OUT[0], TEMP[4] 30: MOV OUT[2], TEMP[1] 31: MOV OUT[1], TEMP[0] 32: END radeonsi: Compiling shader 41 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_vs <{ float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32, i32, i32, i32, i32, i32, i32, i32) { main_body: %18 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 0, !amdgpu.uniform !0 %19 = load <16 x i8>, <16 x i8> addrspace(2)* %18, align 16, !invariant.load !0 %20 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %19, i32 0, i32 %14) %21 = extractelement <4 x float> %20, i32 0 %22 = extractelement <4 x float> %20, i32 1 %23 = extractelement <4 x float> %20, i32 2 %24 = extractelement <4 x float> %20, i32 3 %25 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 1, !amdgpu.uniform !0 %26 = load <16 x i8>, <16 x i8> addrspace(2)* %25, align 16, !invariant.load !0 %27 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %26, i32 0, i32 %15) %28 = extractelement <4 x float> %27, i32 0 %29 = extractelement <4 x float> %27, i32 1 %30 = extractelement <4 x float> %27, i32 2 %31 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 2, !amdgpu.uniform !0 %32 = load <16 x i8>, <16 x i8> addrspace(2)* %31, align 16, !invariant.load !0 %33 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %32, i32 0, i32 %16) %34 = extractelement <4 x float> %33, i32 0 %35 = extractelement <4 x float> %33, i32 1 %36 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 3, !amdgpu.uniform !0 %37 = load <16 x i8>, <16 x i8> addrspace(2)* %36, align 16, !invariant.load !0 %38 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %37, i32 0, i32 %17) %39 = extractelement <4 x float> %38, i32 0 %40 = extractelement <4 x float> %38, i32 1 %41 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %42 = load <16 x i8>, <16 x i8> addrspace(2)* %41, align 16, !invariant.load !0 %43 = call float @llvm.SI.load.const(<16 x i8> %42, i32 128) %44 = call float @llvm.SI.load.const(<16 x i8> %42, i32 136) %45 = fmul float %39, %43 %46 = fadd float %45, %44 %47 = call float @llvm.SI.load.const(<16 x i8> %42, i32 132) %48 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %49 = load <16 x i8>, <16 x i8> addrspace(2)* %48, align 16, !invariant.load !0 %50 = call float @llvm.SI.load.const(<16 x i8> %49, i32 140) %51 = fmul float %40, %47 %52 = fadd float %51, %50 %53 = call float @llvm.SI.load.const(<16 x i8> %49, i32 144) %54 = call float @llvm.SI.load.const(<16 x i8> %49, i32 152) %55 = fmul float %34, %53 %56 = fadd float %55, %54 %57 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %58 = load <16 x i8>, <16 x i8> addrspace(2)* %57, align 16, !invariant.load !0 %59 = call float @llvm.SI.load.const(<16 x i8> %58, i32 148) %60 = call float @llvm.SI.load.const(<16 x i8> %58, i32 156) %61 = fmul float %35, %59 %62 = fadd float %61, %60 %63 = call float @llvm.SI.load.const(<16 x i8> %58, i32 64) %64 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %65 = load <16 x i8>, <16 x i8> addrspace(2)* %64, align 16, !invariant.load !0 %66 = call float @llvm.SI.load.const(<16 x i8> %65, i32 80) %67 = call float @llvm.SI.load.const(<16 x i8> %65, i32 96) %68 = call float @llvm.SI.load.const(<16 x i8> %65, i32 68) %69 = call float @llvm.SI.load.const(<16 x i8> %65, i32 84) %70 = call float @llvm.SI.load.const(<16 x i8> %65, i32 100) %71 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %72 = load <16 x i8>, <16 x i8> addrspace(2)* %71, align 16, !invariant.load !0 %73 = call float @llvm.SI.load.const(<16 x i8> %72, i32 72) %74 = call float @llvm.SI.load.const(<16 x i8> %72, i32 88) %75 = call float @llvm.SI.load.const(<16 x i8> %72, i32 104) %76 = call float @llvm.SI.load.const(<16 x i8> %72, i32 160) %77 = fmul float %76, %21 %78 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %79 = load <16 x i8>, <16 x i8> addrspace(2)* %78, align 16, !invariant.load !0 %80 = call float @llvm.SI.load.const(<16 x i8> %79, i32 164) %81 = fmul float %80, %21 %82 = call float @llvm.SI.load.const(<16 x i8> %79, i32 168) %83 = fmul float %82, %21 %84 = call float @llvm.SI.load.const(<16 x i8> %79, i32 172) %85 = fmul float %84, %21 %86 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %87 = load <16 x i8>, <16 x i8> addrspace(2)* %86, align 16, !invariant.load !0 %88 = call float @llvm.SI.load.const(<16 x i8> %87, i32 176) %89 = fmul float %88, %22 %90 = fadd float %89, %77 %91 = call float @llvm.SI.load.const(<16 x i8> %87, i32 180) %92 = fmul float %91, %22 %93 = fadd float %92, %81 %94 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %95 = load <16 x i8>, <16 x i8> addrspace(2)* %94, align 16, !invariant.load !0 %96 = call float @llvm.SI.load.const(<16 x i8> %95, i32 184) %97 = fmul float %96, %22 %98 = fadd float %97, %83 %99 = call float @llvm.SI.load.const(<16 x i8> %95, i32 188) %100 = fmul float %99, %22 %101 = fadd float %100, %85 %102 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %103 = load <16 x i8>, <16 x i8> addrspace(2)* %102, align 16, !invariant.load !0 %104 = call float @llvm.SI.load.const(<16 x i8> %103, i32 192) %105 = fmul float %104, %23 %106 = fadd float %105, %90 %107 = call float @llvm.SI.load.const(<16 x i8> %103, i32 196) %108 = fmul float %107, %23 %109 = fadd float %108, %93 %110 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %111 = load <16 x i8>, <16 x i8> addrspace(2)* %110, align 16, !invariant.load !0 %112 = call float @llvm.SI.load.const(<16 x i8> %111, i32 200) %113 = fmul float %112, %23 %114 = fadd float %113, %98 %115 = call float @llvm.SI.load.const(<16 x i8> %111, i32 204) %116 = fmul float %115, %23 %117 = fadd float %116, %101 %118 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %119 = load <16 x i8>, <16 x i8> addrspace(2)* %118, align 16, !invariant.load !0 %120 = call float @llvm.SI.load.const(<16 x i8> %119, i32 208) %121 = fmul float %120, %24 %122 = fadd float %121, %106 %123 = call float @llvm.SI.load.const(<16 x i8> %119, i32 212) %124 = fmul float %123, %24 %125 = fadd float %124, %109 %126 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %127 = load <16 x i8>, <16 x i8> addrspace(2)* %126, align 16, !invariant.load !0 %128 = call float @llvm.SI.load.const(<16 x i8> %127, i32 216) %129 = fmul float %128, %24 %130 = fadd float %129, %114 %131 = call float @llvm.SI.load.const(<16 x i8> %127, i32 220) %132 = fmul float %131, %24 %133 = fadd float %132, %117 %134 = fmul float %63, %28 %135 = fmul float %66, %28 %136 = fmul float %67, %28 %137 = fmul float %68, %29 %138 = fadd float %137, %134 %139 = fmul float %69, %29 %140 = fadd float %139, %135 %141 = fmul float %70, %29 %142 = fadd float %141, %136 %143 = fmul float %73, %30 %144 = fadd float %143, %138 %145 = fmul float %74, %30 %146 = fadd float %145, %140 %147 = fmul float %75, %30 %148 = fadd float %147, %142 %149 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %150 = load <16 x i8>, <16 x i8> addrspace(2)* %149, align 16, !invariant.load !0 %151 = call float @llvm.SI.load.const(<16 x i8> %150, i32 0) %152 = fmul float %151, %21 %153 = call float @llvm.SI.load.const(<16 x i8> %150, i32 4) %154 = fmul float %153, %21 %155 = call float @llvm.SI.load.const(<16 x i8> %150, i32 8) %156 = fmul float %155, %21 %157 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %158 = load <16 x i8>, <16 x i8> addrspace(2)* %157, align 16, !invariant.load !0 %159 = call float @llvm.SI.load.const(<16 x i8> %158, i32 12) %160 = fmul float %159, %21 %161 = call float @llvm.SI.load.const(<16 x i8> %158, i32 16) %162 = fmul float %161, %22 %163 = fadd float %162, %152 %164 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %165 = load <16 x i8>, <16 x i8> addrspace(2)* %164, align 16, !invariant.load !0 %166 = call float @llvm.SI.load.const(<16 x i8> %165, i32 20) %167 = fmul float %166, %22 %168 = fadd float %167, %154 %169 = call float @llvm.SI.load.const(<16 x i8> %165, i32 24) %170 = fmul float %169, %22 %171 = fadd float %170, %156 %172 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %173 = load <16 x i8>, <16 x i8> addrspace(2)* %172, align 16, !invariant.load !0 %174 = call float @llvm.SI.load.const(<16 x i8> %173, i32 28) %175 = fmul float %174, %22 %176 = fadd float %175, %160 %177 = call float @llvm.SI.load.const(<16 x i8> %173, i32 32) %178 = fmul float %177, %23 %179 = fadd float %178, %163 %180 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %181 = load <16 x i8>, <16 x i8> addrspace(2)* %180, align 16, !invariant.load !0 %182 = call float @llvm.SI.load.const(<16 x i8> %181, i32 36) %183 = fmul float %182, %23 %184 = fadd float %183, %168 %185 = call float @llvm.SI.load.const(<16 x i8> %181, i32 40) %186 = fmul float %185, %23 %187 = fadd float %186, %171 %188 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %189 = load <16 x i8>, <16 x i8> addrspace(2)* %188, align 16, !invariant.load !0 %190 = call float @llvm.SI.load.const(<16 x i8> %189, i32 44) %191 = fmul float %190, %23 %192 = fadd float %191, %176 %193 = call float @llvm.SI.load.const(<16 x i8> %189, i32 48) %194 = fmul float %193, %24 %195 = fadd float %194, %179 %196 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %197 = load <16 x i8>, <16 x i8> addrspace(2)* %196, align 16, !invariant.load !0 %198 = call float @llvm.SI.load.const(<16 x i8> %197, i32 52) %199 = fmul float %198, %24 %200 = fadd float %199, %184 %201 = call float @llvm.SI.load.const(<16 x i8> %197, i32 56) %202 = fmul float %201, %24 %203 = fadd float %202, %187 %204 = fmul float %144, %144 %205 = fmul float %146, %146 %206 = fadd float %205, %204 %207 = fmul float %148, %148 %208 = fadd float %206, %207 %209 = call float @llvm.sqrt.f32(float %208) %210 = fdiv float 1.000000e+00, %209, !fpmath !1 %211 = fmul float %144, %210 %212 = fmul float %146, %210 %213 = fmul float %148, %210 %214 = bitcast i32 %12 to float %215 = insertvalue <{ float, float, float }> undef, float %214, 2 call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 32, i32 0, float %46, float %52, float %56, float %62) call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 33, i32 0, float %211, float %212, float %213, float %195) call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 34, i32 0, float %200, float %203, float %203, float %192) call void @llvm.SI.export(i32 15, i32 0, i32 1, i32 12, i32 0, float %122, float %125, float %130, float %133) ret <{ float, float, float }> %215 } ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.vs.load.input(<16 x i8>, i32, i32) #0 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #0 ; Function Attrs: nounwind readnone declare float @llvm.sqrt.f32(float) #0 ; Function Attrs: nounwind declare void @llvm.SI.export(i32, i32, i32, i32, i32, float, float, float, float) #1 attributes #0 = { nounwind readnone } attributes #1 = { nounwind } !0 = !{} !1 = !{float 2.500000e+00} FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL IN[1], GENERIC[1], PERSPECTIVE DCL IN[2], GENERIC[2], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL SAMP[2] DCL SAMP[3] DCL SVIEW[0], 2D, FLOAT DCL SVIEW[1], 2D, FLOAT DCL SVIEW[2], 2D, FLOAT DCL SVIEW[3], 2D, FLOAT DCL CONST[0..2] DCL CONST[4..14] DCL CONST[18..19] DCL TEMP[0..11], LOCAL IMM[0] FLT32 { 2.0000, 1.0000, 0.5000, 0.0000} IMM[1] FLT32 { 1.4427, 0.0000, 0.0000, 0.0000} IMM[2] INT32 {1, 0, 0, 0} 0: MOV TEMP[0].x, IN[1].wwww 1: MOV TEMP[0].yz, IN[2].yxyy 2: MOV TEMP[1].xy, IN[0].zwww 3: TEX TEMP[1], TEMP[1], SAMP[1], 2D 4: MOV TEMP[2].xy, IN[0].xyyy 5: TEX TEMP[2], TEMP[2], SAMP[3], 2D 6: MOV TEMP[3].xy, IN[0].xyyy 7: TEX TEMP[3].xyz, TEMP[3], SAMP[2], 2D 8: LRP TEMP[2].xyz, TEMP[2].wwww, TEMP[2].xyzz, TEMP[1].xyzz 9: MUL TEMP[2].xyz, TEMP[2].xyzz, CONST[18].xyzz 10: MUL TEMP[2].xyz, TEMP[2].xyzz, IMM[0].xxxx 11: MUL TEMP[4].xyz, TEMP[2].xyzz, CONST[12].xyzz 12: MUL TEMP[4].xyz, TEMP[4].xyzz, IMM[0].xxxx 13: ADD TEMP[5].xyz, IMM[0].yyyy, -TEMP[2].xyzz 14: MUL TEMP[5].xyz, IMM[0].xxxx, TEMP[5].xyzz 15: ADD TEMP[6].xyz, IMM[0].yyyy, -CONST[12].xyzz 16: MUL TEMP[5].xyz, TEMP[5].xyzz, TEMP[6].xyzz 17: ADD TEMP[5].xyz, IMM[0].yyyy, -TEMP[5].xyzz 18: FSGE TEMP[6].x, TEMP[2].xxxx, IMM[0].zzzz 19: AND TEMP[6].x, TEMP[6].xxxx, IMM[0].yyyy 20: LRP TEMP[4].xyz, TEMP[6].xxxx, TEMP[5].xyzz, TEMP[4].xyzz 21: MUL TEMP[5].x, TEMP[3].xxxx, CONST[12].wwww 22: LRP TEMP[2].xyz, TEMP[5].xxxx, TEMP[4].xyzz, TEMP[2].xyzz 23: MUL TEMP[4].xyz, TEMP[2].xyzz, CONST[13].xyzz 24: MUL TEMP[4].xyz, TEMP[4].xyzz, IMM[0].xxxx 25: ADD TEMP[5].xyz, IMM[0].yyyy, -TEMP[2].xyzz 26: MUL TEMP[5].xyz, IMM[0].xxxx, TEMP[5].xyzz 27: ADD TEMP[6].xyz, IMM[0].yyyy, -CONST[13].xyzz 28: MUL TEMP[5].xyz, TEMP[5].xyzz, TEMP[6].xyzz 29: ADD TEMP[5].xyz, IMM[0].yyyy, -TEMP[5].xyzz 30: FSGE TEMP[6].x, TEMP[2].xxxx, IMM[0].zzzz 31: AND TEMP[6].x, TEMP[6].xxxx, IMM[0].yyyy 32: LRP TEMP[4].xyz, TEMP[6].xxxx, TEMP[5].xyzz, TEMP[4].xyzz 33: MUL TEMP[5].x, TEMP[3].yyyy, CONST[13].wwww 34: LRP TEMP[2].xyz, TEMP[5].xxxx, TEMP[4].xyzz, TEMP[2].xyzz 35: MUL TEMP[4].xyz, TEMP[2].xyzz, CONST[14].xyzz 36: MUL TEMP[4].xyz, TEMP[4].xyzz, IMM[0].xxxx 37: ADD TEMP[5].xyz, IMM[0].yyyy, -TEMP[2].xyzz 38: MUL TEMP[5].xyz, IMM[0].xxxx, TEMP[5].xyzz 39: ADD TEMP[6].xyz, IMM[0].yyyy, -CONST[14].xyzz 40: MUL TEMP[5].xyz, TEMP[5].xyzz, TEMP[6].xyzz 41: ADD TEMP[5].xyz, IMM[0].yyyy, -TEMP[5].xyzz 42: FSGE TEMP[6].x, TEMP[2].xxxx, IMM[0].zzzz 43: AND TEMP[6].x, TEMP[6].xxxx, IMM[0].yyyy 44: LRP TEMP[4].xyz, TEMP[6].xxxx, TEMP[5].xyzz, TEMP[4].xyzz 45: MUL TEMP[3].x, TEMP[3].zzzz, CONST[14].wwww 46: LRP TEMP[2].xyz, TEMP[3].xxxx, TEMP[4].xyzz, TEMP[2].xyzz 47: MUL TEMP[1].x, TEMP[1].wwww, CONST[18].wwww 48: FSLT TEMP[3].x, TEMP[1].xxxx, CONST[19].xxxx 49: AND TEMP[3].x, TEMP[3].xxxx, IMM[0].yyyy 50: KILL_IF -TEMP[3].xxxx 51: MUL TEMP[3], CONST[4], IN[1].wwww 52: MAD TEMP[3], CONST[5], IN[2].xxxx, TEMP[3] 53: MAD TEMP[3], CONST[6], IN[2].yyyy, TEMP[3] 54: ADD TEMP[3].xyz, TEMP[3], CONST[7] 55: ADD TEMP[4].xyz, CONST[1].xyzz, -TEMP[0].xyzz 56: DP3 TEMP[5].x, TEMP[4].xyzz, TEMP[4].xyzz 57: RSQ TEMP[5].x, TEMP[5].xxxx 58: MUL TEMP[4].xyz, TEMP[4].xyzz, TEMP[5].xxxx 59: DP3 TEMP[3].x, TEMP[3].xyzz, TEMP[3].xyzz 60: MOV TEMP[3].xy, TEMP[3].xxxx 61: TEX TEMP[3].w, TEMP[3], SAMP[0], 2D 62: MUL TEMP[3].xyz, CONST[2].xyzz, TEMP[3].wwww 63: MUL TEMP[2].xyz, TEMP[2].xyzz, TEMP[3].xyzz 64: DP3 TEMP[3].x, IN[1].xyzz, IN[1].xyzz 65: RSQ TEMP[3].x, TEMP[3].xxxx 66: MUL TEMP[3].xyz, IN[1].xyzz, TEMP[3].xxxx 67: DP3 TEMP[5].x, TEMP[4].xyzz, TEMP[4].xyzz 68: RSQ TEMP[5].x, TEMP[5].xxxx 69: MUL TEMP[4].xyz, TEMP[4].xyzz, TEMP[5].xxxx 70: DP3 TEMP[3].x, TEMP[3].xyzz, TEMP[4].xyzz 71: MAX TEMP[3].x, IMM[0].wwww, TEMP[3].xxxx 72: MUL TEMP[2].xyz, TEMP[2].xyzz, TEMP[3].xxxx 73: ADD TEMP[3].xyz, TEMP[0].xyzz, -CONST[0].xyzz 74: DP3 TEMP[3].x, TEMP[3].xyzz, TEMP[3].xyzz 75: SQRT TEMP[3].x, TEMP[3].xxxx 76: MOV TEMP[4].x, -CONST[11].xxxx 77: ADD TEMP[5].x, TEMP[3].xxxx, -CONST[10].xxxx 78: RCP TEMP[6].x, CONST[10].yyyy 79: MUL TEMP[5].x, TEMP[5].xxxx, TEMP[6].xxxx 80: MOV_SAT TEMP[5].x, TEMP[5].xxxx 81: MUL TEMP[5].x, TEMP[5].xxxx, TEMP[4].xxxx 82: MUL TEMP[5].x, TEMP[5].xxxx, IMM[1].xxxx 83: EX2 TEMP[5].x, TEMP[5].xxxx 84: ADD TEMP[5].x, IMM[0].yyyy, -TEMP[5].xxxx 85: MUL TEMP[4].x, TEMP[4].xxxx, IMM[1].xxxx 86: EX2 TEMP[4].x, TEMP[4].xxxx 87: ADD TEMP[4].x, IMM[0].yyyy, -TEMP[4].xxxx 88: RCP TEMP[4].x, TEMP[4].xxxx 89: MUL TEMP[4].x, TEMP[5].xxxx, TEMP[4].xxxx 90: MOV_SAT TEMP[4].x, TEMP[4].xxxx 91: MOV TEMP[5].w, TEMP[4].xxxx 92: FSLT TEMP[6].x, IMM[0].wwww, CONST[8].yyyy 93: UIF TEMP[6].xxxx :0 94: MOV TEMP[6].xyz, IMM[0].wyww 95: MOV TEMP[6].w, CONST[8].xxxx 96: MOV TEMP[7].w, IMM[0].yyyy 97: MOV TEMP[7].xyz, CONST[0].xyzx 98: DP4 TEMP[7].x, TEMP[6], TEMP[7] 99: FSGE TEMP[8].x, IMM[0].wwww, TEMP[7].xxxx 100: UIF TEMP[8].xxxx :0 101: MOV TEMP[8].x, IMM[2].xxxx 102: ELSE :0 103: MOV TEMP[8].x, IMM[2].yyyy 104: ENDIF 105: I2F TEMP[8].x, TEMP[8].xxxx 106: MOV TEMP[9].w, IMM[0].yyyy 107: MOV TEMP[9].xyz, TEMP[0].xyzx 108: DP4 TEMP[9].x, TEMP[6], TEMP[9] 109: MOV TEMP[10].w, IMM[0].wwww 110: ADD TEMP[10].xyz, CONST[0].xyzz, -TEMP[0].xyzz 111: MUL TEMP[11].x, IMM[0].xxxx, TEMP[8].xxxx 112: ADD TEMP[11].x, IMM[0].yyyy, -TEMP[11].xxxx 113: MUL TEMP[11].x, TEMP[11].xxxx, TEMP[9].xxxx 114: MIN TEMP[11].x, IMM[0].wwww, TEMP[11].xxxx 115: MUL TEMP[3].x, CONST[8].zzzz, TEMP[3].xxxx 116: ADD TEMP[7].x, TEMP[9].xxxx, TEMP[7].xxxx 117: MUL TEMP[9].x, TEMP[11].xxxx, TEMP[11].xxxx 118: DP4 TEMP[6].x, TEMP[6], TEMP[10] 119: ABS TEMP[6].x, TEMP[6].xxxx 120: RCP TEMP[6].x, TEMP[6].xxxx 121: MUL TEMP[6].x, TEMP[9].xxxx, TEMP[6].xxxx 122: MAD TEMP[6].x, TEMP[8].xxxx, TEMP[7].xxxx, -TEMP[6].xxxx 123: MUL TEMP[3].x, -TEMP[3].xxxx, TEMP[6].xxxx 124: MUL TEMP[3].x, -TEMP[3].xxxx, CONST[8].yyyy 125: MUL TEMP[3].x, TEMP[3].xxxx, IMM[1].xxxx 126: EX2 TEMP[3].x, TEMP[3].xxxx 127: MOV_SAT TEMP[3].x, TEMP[3].xxxx 128: ADD TEMP[3].x, IMM[0].yyyy, -TEMP[3].xxxx 129: MAX TEMP[3].x, TEMP[4].xxxx, TEMP[3].xxxx 130: MOV TEMP[5].w, TEMP[3].xxxx 131: ENDIF 132: MOV_SAT TEMP[3].x, TEMP[5].wwww 133: ADD TEMP[3].xyz, IMM[0].yyyy, -TEMP[3].xxxx 134: MUL TEMP[0].xyz, TEMP[2].xyzz, TEMP[3].xyzz 135: MOV_SAT TEMP[2].x, TEMP[5].wwww 136: ADD TEMP[2].x, IMM[0].yyyy, -TEMP[2].xxxx 137: MUL TEMP[1].x, TEMP[1].xxxx, TEMP[2].xxxx 138: MOV TEMP[0].w, TEMP[1].xxxx 139: MOV OUT[0], TEMP[0] 140: END radeonsi: Compiling shader 42 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_ps <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), float inreg, i32 inreg, <2 x i32>, <2 x i32>, <2 x i32>, <3 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, float, float, float, float, float, i32, i32, float, i32) #0 { main_body: %23 = call float @llvm.SI.fs.interp(i32 3, i32 1, i32 %6, <2 x i32> %8) %24 = call float @llvm.SI.fs.interp(i32 0, i32 2, i32 %6, <2 x i32> %8) %25 = call float @llvm.SI.fs.interp(i32 1, i32 2, i32 %6, <2 x i32> %8) %26 = call float @llvm.SI.fs.interp(i32 2, i32 0, i32 %6, <2 x i32> %8) %27 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %6, <2 x i32> %8) %28 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 2, !amdgpu.uniform !0 %29 = load <8 x i32>, <8 x i32> addrspace(2)* %28, align 32, !invariant.load !0 %30 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %31 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %30, i64 0, i64 7, !amdgpu.uniform !0 %32 = load <4 x i32>, <4 x i32> addrspace(2)* %31, align 16, !invariant.load !0 %33 = bitcast float %26 to i32 %34 = bitcast float %27 to i32 %35 = insertelement <2 x i32> undef, i32 %33, i32 0 %36 = insertelement <2 x i32> %35, i32 %34, i32 1 %37 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %36, <8 x i32> %29, <4 x i32> %32, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %38 = extractelement <4 x float> %37, i32 0 %39 = extractelement <4 x float> %37, i32 1 %40 = extractelement <4 x float> %37, i32 2 %41 = extractelement <4 x float> %37, i32 3 %42 = call float @llvm.SI.fs.interp(i32 0, i32 0, i32 %6, <2 x i32> %8) %43 = call float @llvm.SI.fs.interp(i32 1, i32 0, i32 %6, <2 x i32> %8) %44 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 6, !amdgpu.uniform !0 %45 = load <8 x i32>, <8 x i32> addrspace(2)* %44, align 32, !invariant.load !0 %46 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %47 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %46, i64 0, i64 15, !amdgpu.uniform !0 %48 = load <4 x i32>, <4 x i32> addrspace(2)* %47, align 16, !invariant.load !0 %49 = bitcast float %42 to i32 %50 = bitcast float %43 to i32 %51 = insertelement <2 x i32> undef, i32 %49, i32 0 %52 = insertelement <2 x i32> %51, i32 %50, i32 1 %53 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %52, <8 x i32> %45, <4 x i32> %48, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %54 = extractelement <4 x float> %53, i32 0 %55 = extractelement <4 x float> %53, i32 1 %56 = extractelement <4 x float> %53, i32 2 %57 = extractelement <4 x float> %53, i32 3 %58 = call float @llvm.SI.fs.interp(i32 0, i32 0, i32 %6, <2 x i32> %8) %59 = call float @llvm.SI.fs.interp(i32 1, i32 0, i32 %6, <2 x i32> %8) %60 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 4, !amdgpu.uniform !0 %61 = load <8 x i32>, <8 x i32> addrspace(2)* %60, align 32, !invariant.load !0 %62 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %63 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %62, i64 0, i64 11, !amdgpu.uniform !0 %64 = load <4 x i32>, <4 x i32> addrspace(2)* %63, align 16, !invariant.load !0 %65 = bitcast float %58 to i32 %66 = bitcast float %59 to i32 %67 = insertelement <2 x i32> undef, i32 %65, i32 0 %68 = insertelement <2 x i32> %67, i32 %66, i32 1 %69 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %68, <8 x i32> %61, <4 x i32> %64, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %70 = extractelement <4 x float> %69, i32 0 %71 = extractelement <4 x float> %69, i32 1 %72 = extractelement <4 x float> %69, i32 2 %73 = fsub float 1.000000e+00, %57 %74 = fmul float %54, %57 %75 = fmul float %38, %73 %76 = fadd float %74, %75 %77 = fsub float 1.000000e+00, %57 %78 = fmul float %55, %57 %79 = fmul float %39, %77 %80 = fadd float %78, %79 %81 = fsub float 1.000000e+00, %57 %82 = fmul float %56, %57 %83 = fmul float %40, %81 %84 = fadd float %82, %83 %85 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %86 = load <16 x i8>, <16 x i8> addrspace(2)* %85, align 16, !invariant.load !0 %87 = call float @llvm.SI.load.const(<16 x i8> %86, i32 288) %88 = fmul float %76, %87 %89 = call float @llvm.SI.load.const(<16 x i8> %86, i32 292) %90 = fmul float %80, %89 %91 = call float @llvm.SI.load.const(<16 x i8> %86, i32 296) %92 = fmul float %84, %91 %93 = fmul float %88, 2.000000e+00 %94 = fmul float %90, 2.000000e+00 %95 = fmul float %92, 2.000000e+00 %96 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %97 = load <16 x i8>, <16 x i8> addrspace(2)* %96, align 16, !invariant.load !0 %98 = call float @llvm.SI.load.const(<16 x i8> %97, i32 192) %99 = fmul float %93, %98 %100 = call float @llvm.SI.load.const(<16 x i8> %97, i32 196) %101 = fmul float %94, %100 %102 = call float @llvm.SI.load.const(<16 x i8> %97, i32 200) %103 = fmul float %95, %102 %104 = fmul float %99, 2.000000e+00 %105 = fmul float %101, 2.000000e+00 %106 = fmul float %103, 2.000000e+00 %107 = fsub float 1.000000e+00, %93 %108 = fsub float 1.000000e+00, %94 %109 = fsub float 1.000000e+00, %95 %110 = fmul float %107, 2.000000e+00 %111 = fmul float %108, 2.000000e+00 %112 = fmul float %109, 2.000000e+00 %113 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %114 = load <16 x i8>, <16 x i8> addrspace(2)* %113, align 16, !invariant.load !0 %115 = call float @llvm.SI.load.const(<16 x i8> %114, i32 192) %116 = fsub float 1.000000e+00, %115 %117 = call float @llvm.SI.load.const(<16 x i8> %114, i32 196) %118 = fsub float 1.000000e+00, %117 %119 = call float @llvm.SI.load.const(<16 x i8> %114, i32 200) %120 = fsub float 1.000000e+00, %119 %121 = fmul float %110, %116 %122 = fmul float %111, %118 %123 = fmul float %112, %120 %124 = fsub float 1.000000e+00, %121 %125 = fsub float 1.000000e+00, %122 %126 = fsub float 1.000000e+00, %123 %127 = fcmp oge float %93, 5.000000e-01 %128 = select i1 %127, float 1.000000e+00, float 0.000000e+00 %129 = fsub float 1.000000e+00, %128 %130 = fmul float %124, %128 %131 = fmul float %104, %129 %132 = fadd float %130, %131 %133 = fsub float 1.000000e+00, %128 %134 = fmul float %125, %128 %135 = fmul float %105, %133 %136 = fadd float %134, %135 %137 = fsub float 1.000000e+00, %128 %138 = fmul float %126, %128 %139 = fmul float %106, %137 %140 = fadd float %138, %139 %141 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %142 = load <16 x i8>, <16 x i8> addrspace(2)* %141, align 16, !invariant.load !0 %143 = call float @llvm.SI.load.const(<16 x i8> %142, i32 204) %144 = fmul float %70, %143 %145 = fsub float 1.000000e+00, %144 %146 = fmul float %132, %144 %147 = fmul float %93, %145 %148 = fadd float %146, %147 %149 = fsub float 1.000000e+00, %144 %150 = fmul float %136, %144 %151 = fmul float %94, %149 %152 = fadd float %150, %151 %153 = fsub float 1.000000e+00, %144 %154 = fmul float %140, %144 %155 = fmul float %95, %153 %156 = fadd float %154, %155 %157 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %158 = load <16 x i8>, <16 x i8> addrspace(2)* %157, align 16, !invariant.load !0 %159 = call float @llvm.SI.load.const(<16 x i8> %158, i32 208) %160 = fmul float %148, %159 %161 = call float @llvm.SI.load.const(<16 x i8> %158, i32 212) %162 = fmul float %152, %161 %163 = call float @llvm.SI.load.const(<16 x i8> %158, i32 216) %164 = fmul float %156, %163 %165 = fmul float %160, 2.000000e+00 %166 = fmul float %162, 2.000000e+00 %167 = fmul float %164, 2.000000e+00 %168 = fsub float 1.000000e+00, %148 %169 = fsub float 1.000000e+00, %152 %170 = fsub float 1.000000e+00, %156 %171 = fmul float %168, 2.000000e+00 %172 = fmul float %169, 2.000000e+00 %173 = fmul float %170, 2.000000e+00 %174 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %175 = load <16 x i8>, <16 x i8> addrspace(2)* %174, align 16, !invariant.load !0 %176 = call float @llvm.SI.load.const(<16 x i8> %175, i32 208) %177 = fsub float 1.000000e+00, %176 %178 = call float @llvm.SI.load.const(<16 x i8> %175, i32 212) %179 = fsub float 1.000000e+00, %178 %180 = call float @llvm.SI.load.const(<16 x i8> %175, i32 216) %181 = fsub float 1.000000e+00, %180 %182 = fmul float %171, %177 %183 = fmul float %172, %179 %184 = fmul float %173, %181 %185 = fsub float 1.000000e+00, %182 %186 = fsub float 1.000000e+00, %183 %187 = fsub float 1.000000e+00, %184 %188 = fcmp oge float %148, 5.000000e-01 %189 = select i1 %188, float 1.000000e+00, float 0.000000e+00 %190 = fsub float 1.000000e+00, %189 %191 = fmul float %185, %189 %192 = fmul float %165, %190 %193 = fadd float %191, %192 %194 = fsub float 1.000000e+00, %189 %195 = fmul float %186, %189 %196 = fmul float %166, %194 %197 = fadd float %195, %196 %198 = fsub float 1.000000e+00, %189 %199 = fmul float %187, %189 %200 = fmul float %167, %198 %201 = fadd float %199, %200 %202 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %203 = load <16 x i8>, <16 x i8> addrspace(2)* %202, align 16, !invariant.load !0 %204 = call float @llvm.SI.load.const(<16 x i8> %203, i32 220) %205 = fmul float %71, %204 %206 = fsub float 1.000000e+00, %205 %207 = fmul float %193, %205 %208 = fmul float %148, %206 %209 = fadd float %207, %208 %210 = fsub float 1.000000e+00, %205 %211 = fmul float %197, %205 %212 = fmul float %152, %210 %213 = fadd float %211, %212 %214 = fsub float 1.000000e+00, %205 %215 = fmul float %201, %205 %216 = fmul float %156, %214 %217 = fadd float %215, %216 %218 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %219 = load <16 x i8>, <16 x i8> addrspace(2)* %218, align 16, !invariant.load !0 %220 = call float @llvm.SI.load.const(<16 x i8> %219, i32 224) %221 = fmul float %209, %220 %222 = call float @llvm.SI.load.const(<16 x i8> %219, i32 228) %223 = fmul float %213, %222 %224 = call float @llvm.SI.load.const(<16 x i8> %219, i32 232) %225 = fmul float %217, %224 %226 = fmul float %221, 2.000000e+00 %227 = fmul float %223, 2.000000e+00 %228 = fmul float %225, 2.000000e+00 %229 = fsub float 1.000000e+00, %209 %230 = fsub float 1.000000e+00, %213 %231 = fsub float 1.000000e+00, %217 %232 = fmul float %229, 2.000000e+00 %233 = fmul float %230, 2.000000e+00 %234 = fmul float %231, 2.000000e+00 %235 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %236 = load <16 x i8>, <16 x i8> addrspace(2)* %235, align 16, !invariant.load !0 %237 = call float @llvm.SI.load.const(<16 x i8> %236, i32 224) %238 = fsub float 1.000000e+00, %237 %239 = call float @llvm.SI.load.const(<16 x i8> %236, i32 228) %240 = fsub float 1.000000e+00, %239 %241 = call float @llvm.SI.load.const(<16 x i8> %236, i32 232) %242 = fsub float 1.000000e+00, %241 %243 = fmul float %232, %238 %244 = fmul float %233, %240 %245 = fmul float %234, %242 %246 = fsub float 1.000000e+00, %243 %247 = fsub float 1.000000e+00, %244 %248 = fsub float 1.000000e+00, %245 %249 = fcmp oge float %209, 5.000000e-01 %250 = select i1 %249, float 1.000000e+00, float 0.000000e+00 %251 = fsub float 1.000000e+00, %250 %252 = fmul float %246, %250 %253 = fmul float %226, %251 %254 = fadd float %252, %253 %255 = fsub float 1.000000e+00, %250 %256 = fmul float %247, %250 %257 = fmul float %227, %255 %258 = fadd float %256, %257 %259 = fsub float 1.000000e+00, %250 %260 = fmul float %248, %250 %261 = fmul float %228, %259 %262 = fadd float %260, %261 %263 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %264 = load <16 x i8>, <16 x i8> addrspace(2)* %263, align 16, !invariant.load !0 %265 = call float @llvm.SI.load.const(<16 x i8> %264, i32 236) %266 = fmul float %72, %265 %267 = fsub float 1.000000e+00, %266 %268 = fmul float %254, %266 %269 = fmul float %209, %267 %270 = fadd float %268, %269 %271 = fsub float 1.000000e+00, %266 %272 = fmul float %258, %266 %273 = fmul float %213, %271 %274 = fadd float %272, %273 %275 = fsub float 1.000000e+00, %266 %276 = fmul float %262, %266 %277 = fmul float %217, %275 %278 = fadd float %276, %277 %279 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %280 = load <16 x i8>, <16 x i8> addrspace(2)* %279, align 16, !invariant.load !0 %281 = call float @llvm.SI.load.const(<16 x i8> %280, i32 300) %282 = fmul float %41, %281 %283 = call float @llvm.SI.load.const(<16 x i8> %280, i32 304) %284 = fcmp olt float %282, %283 %285 = select i1 %284, float -1.000000e+00, float 0.000000e+00 call void @llvm.AMDGPU.kill(float %285) %286 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %287 = load <16 x i8>, <16 x i8> addrspace(2)* %286, align 16, !invariant.load !0 %288 = call float @llvm.SI.load.const(<16 x i8> %287, i32 64) %289 = call float @llvm.SI.fs.interp(i32 3, i32 1, i32 %6, <2 x i32> %8) %290 = fmul float %288, %289 %291 = call float @llvm.SI.load.const(<16 x i8> %287, i32 68) %292 = call float @llvm.SI.fs.interp(i32 3, i32 1, i32 %6, <2 x i32> %8) %293 = fmul float %291, %292 %294 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %295 = load <16 x i8>, <16 x i8> addrspace(2)* %294, align 16, !invariant.load !0 %296 = call float @llvm.SI.load.const(<16 x i8> %295, i32 72) %297 = call float @llvm.SI.fs.interp(i32 3, i32 1, i32 %6, <2 x i32> %8) %298 = fmul float %296, %297 %299 = call float @llvm.SI.load.const(<16 x i8> %295, i32 80) %300 = call float @llvm.SI.fs.interp(i32 0, i32 2, i32 %6, <2 x i32> %8) %301 = fmul float %299, %300 %302 = fadd float %301, %290 %303 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %304 = load <16 x i8>, <16 x i8> addrspace(2)* %303, align 16, !invariant.load !0 %305 = call float @llvm.SI.load.const(<16 x i8> %304, i32 84) %306 = call float @llvm.SI.fs.interp(i32 0, i32 2, i32 %6, <2 x i32> %8) %307 = fmul float %305, %306 %308 = fadd float %307, %293 %309 = call float @llvm.SI.load.const(<16 x i8> %304, i32 88) %310 = call float @llvm.SI.fs.interp(i32 0, i32 2, i32 %6, <2 x i32> %8) %311 = fmul float %309, %310 %312 = fadd float %311, %298 %313 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %314 = load <16 x i8>, <16 x i8> addrspace(2)* %313, align 16, !invariant.load !0 %315 = call float @llvm.SI.load.const(<16 x i8> %314, i32 96) %316 = call float @llvm.SI.fs.interp(i32 1, i32 2, i32 %6, <2 x i32> %8) %317 = fmul float %315, %316 %318 = fadd float %317, %302 %319 = call float @llvm.SI.load.const(<16 x i8> %314, i32 100) %320 = call float @llvm.SI.fs.interp(i32 1, i32 2, i32 %6, <2 x i32> %8) %321 = fmul float %319, %320 %322 = fadd float %321, %308 %323 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %324 = load <16 x i8>, <16 x i8> addrspace(2)* %323, align 16, !invariant.load !0 %325 = call float @llvm.SI.load.const(<16 x i8> %324, i32 104) %326 = call float @llvm.SI.fs.interp(i32 1, i32 2, i32 %6, <2 x i32> %8) %327 = fmul float %325, %326 %328 = fadd float %327, %312 %329 = call float @llvm.SI.load.const(<16 x i8> %324, i32 112) %330 = fadd float %318, %329 %331 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %332 = load <16 x i8>, <16 x i8> addrspace(2)* %331, align 16, !invariant.load !0 %333 = call float @llvm.SI.load.const(<16 x i8> %332, i32 116) %334 = fadd float %322, %333 %335 = call float @llvm.SI.load.const(<16 x i8> %332, i32 120) %336 = fadd float %328, %335 %337 = call float @llvm.SI.load.const(<16 x i8> %332, i32 16) %338 = fsub float %337, %23 %339 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %340 = load <16 x i8>, <16 x i8> addrspace(2)* %339, align 16, !invariant.load !0 %341 = call float @llvm.SI.load.const(<16 x i8> %340, i32 20) %342 = fsub float %341, %24 %343 = call float @llvm.SI.load.const(<16 x i8> %340, i32 24) %344 = fsub float %343, %25 %345 = fmul float %338, %338 %346 = fmul float %342, %342 %347 = fadd float %346, %345 %348 = fmul float %344, %344 %349 = fadd float %347, %348 %350 = call float @llvm.sqrt.f32(float %349) %351 = fdiv float 1.000000e+00, %350, !fpmath !1 %352 = fmul float %338, %351 %353 = fmul float %342, %351 %354 = fmul float %344, %351 %355 = fmul float %330, %330 %356 = fmul float %334, %334 %357 = fadd float %356, %355 %358 = fmul float %336, %336 %359 = fadd float %357, %358 %360 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 0, !amdgpu.uniform !0 %361 = load <8 x i32>, <8 x i32> addrspace(2)* %360, align 32, !invariant.load !0 %362 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %363 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %362, i64 0, i64 3, !amdgpu.uniform !0 %364 = load <4 x i32>, <4 x i32> addrspace(2)* %363, align 16, !invariant.load !0 %365 = bitcast float %359 to i32 %366 = bitcast float %359 to i32 %367 = insertelement <2 x i32> undef, i32 %365, i32 0 %368 = insertelement <2 x i32> %367, i32 %366, i32 1 %369 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %368, <8 x i32> %361, <4 x i32> %364, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %370 = extractelement <4 x float> %369, i32 3 %371 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %372 = load <16 x i8>, <16 x i8> addrspace(2)* %371, align 16, !invariant.load !0 %373 = call float @llvm.SI.load.const(<16 x i8> %372, i32 32) %374 = fmul float %373, %370 %375 = call float @llvm.SI.load.const(<16 x i8> %372, i32 36) %376 = fmul float %375, %370 %377 = call float @llvm.SI.load.const(<16 x i8> %372, i32 40) %378 = fmul float %377, %370 %379 = fmul float %270, %374 %380 = fmul float %274, %376 %381 = fmul float %278, %378 %382 = call float @llvm.SI.fs.interp(i32 0, i32 1, i32 %6, <2 x i32> %8) %383 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %384 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %385 = call float @llvm.SI.fs.interp(i32 0, i32 1, i32 %6, <2 x i32> %8) %386 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %387 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %388 = fmul float %382, %385 %389 = fmul float %383, %386 %390 = fadd float %389, %388 %391 = fmul float %384, %387 %392 = fadd float %390, %391 %393 = call float @llvm.sqrt.f32(float %392) %394 = fdiv float 1.000000e+00, %393, !fpmath !1 %395 = call float @llvm.SI.fs.interp(i32 0, i32 1, i32 %6, <2 x i32> %8) %396 = fmul float %395, %394 %397 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %398 = fmul float %397, %394 %399 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %400 = fmul float %399, %394 %401 = fmul float %352, %352 %402 = fmul float %353, %353 %403 = fadd float %402, %401 %404 = fmul float %354, %354 %405 = fadd float %403, %404 %406 = call float @llvm.sqrt.f32(float %405) %407 = fdiv float 1.000000e+00, %406, !fpmath !1 %408 = fmul float %352, %407 %409 = fmul float %353, %407 %410 = fmul float %354, %407 %411 = fmul float %396, %408 %412 = fmul float %398, %409 %413 = fadd float %412, %411 %414 = fmul float %400, %410 %415 = fadd float %413, %414 %416 = call float @llvm.maxnum.f32(float %415, float 0.000000e+00) %417 = fmul float %379, %416 %418 = fmul float %380, %416 %419 = fmul float %381, %416 %420 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %421 = load <16 x i8>, <16 x i8> addrspace(2)* %420, align 16, !invariant.load !0 %422 = call float @llvm.SI.load.const(<16 x i8> %421, i32 0) %423 = fsub float %23, %422 %424 = call float @llvm.SI.load.const(<16 x i8> %421, i32 4) %425 = fsub float %24, %424 %426 = call float @llvm.SI.load.const(<16 x i8> %421, i32 8) %427 = fsub float %25, %426 %428 = fmul float %423, %423 %429 = fmul float %425, %425 %430 = fadd float %429, %428 %431 = fmul float %427, %427 %432 = fadd float %430, %431 %433 = call float @llvm.sqrt.f32(float %432) %434 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %435 = load <16 x i8>, <16 x i8> addrspace(2)* %434, align 16, !invariant.load !0 %436 = call float @llvm.SI.load.const(<16 x i8> %435, i32 176) %437 = call float @llvm.SI.load.const(<16 x i8> %435, i32 160) %438 = fsub float %433, %437 %439 = call float @llvm.SI.load.const(<16 x i8> %435, i32 164) %440 = fdiv float 1.000000e+00, %439, !fpmath !1 %441 = fmul float %438, %440 %442 = call float @llvm.AMDGPU.clamp.(float %441, float 0.000000e+00, float 1.000000e+00) %443 = fmul float %436, %442 %444 = fmul float %443, 0xBFF7154760000000 %445 = call float @llvm.exp2.f32(float %444) %446 = fsub float 1.000000e+00, %445 %447 = fmul float %436, 0xBFF7154760000000 %448 = call float @llvm.exp2.f32(float %447) %449 = fsub float 1.000000e+00, %448 %450 = fdiv float 1.000000e+00, %449, !fpmath !1 %451 = fmul float %446, %450 %452 = call float @llvm.AMDGPU.clamp.(float %451, float 0.000000e+00, float 1.000000e+00) %453 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %454 = load <16 x i8>, <16 x i8> addrspace(2)* %453, align 16, !invariant.load !0 %455 = call float @llvm.SI.load.const(<16 x i8> %454, i32 132) %456 = fcmp ogt float %455, 0.000000e+00 br i1 %456, label %if93, label %endif131 if93: ; preds = %main_body %457 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %458 = load <16 x i8>, <16 x i8> addrspace(2)* %457, align 16, !invariant.load !0 %459 = call float @llvm.SI.load.const(<16 x i8> %458, i32 128) %460 = call float @llvm.SI.load.const(<16 x i8> %458, i32 0) %461 = call float @llvm.SI.load.const(<16 x i8> %458, i32 4) %462 = call float @llvm.SI.load.const(<16 x i8> %458, i32 8) %463 = fmul float %460, 0.000000e+00 %464 = fadd float %463, %461 %465 = fmul float %462, 0.000000e+00 %466 = fadd float %464, %465 %467 = fadd float %466, %459 %468 = fcmp ole float %467, 0.000000e+00 %469 = uitofp i1 %468 to float %470 = fmul float %23, 0.000000e+00 %471 = fadd float %470, %24 %472 = fmul float %25, 0.000000e+00 %473 = fadd float %471, %472 %474 = fadd float %473, %459 %475 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %476 = load <16 x i8>, <16 x i8> addrspace(2)* %475, align 16, !invariant.load !0 %477 = call float @llvm.SI.load.const(<16 x i8> %476, i32 0) %478 = fsub float %477, %23 %479 = call float @llvm.SI.load.const(<16 x i8> %476, i32 4) %480 = fsub float %479, %24 %481 = call float @llvm.SI.load.const(<16 x i8> %476, i32 8) %482 = fsub float %481, %25 %483 = fmul float %469, 2.000000e+00 %484 = fsub float 1.000000e+00, %483 %485 = fmul float %484, %474 %486 = call float @llvm.minnum.f32(float %485, float 0.000000e+00) %487 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %488 = load <16 x i8>, <16 x i8> addrspace(2)* %487, align 16, !invariant.load !0 %489 = call float @llvm.SI.load.const(<16 x i8> %488, i32 136) %490 = fmul float %489, %433 %491 = fadd float %474, %467 %492 = fmul float %486, %486 %493 = fmul float %478, 0.000000e+00 %494 = fadd float %493, %480 %495 = fmul float %482, 0.000000e+00 %496 = fadd float %494, %495 %497 = fmul float %459, 0.000000e+00 %498 = fadd float %496, %497 %499 = call float @llvm.fabs.f32(float %498) %500 = fdiv float 1.000000e+00, %499, !fpmath !1 %501 = fmul float %492, %500 %502 = fmul float %469, %491 %503 = fsub float %502, %501 %504 = fmul float %490, %503 %505 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %506 = load <16 x i8>, <16 x i8> addrspace(2)* %505, align 16, !invariant.load !0 %507 = call float @llvm.SI.load.const(<16 x i8> %506, i32 132) %508 = fmul float %504, %507 %509 = fmul float %508, 0x3FF7154760000000 %510 = call float @llvm.exp2.f32(float %509) %511 = call float @llvm.AMDGPU.clamp.(float %510, float 0.000000e+00, float 1.000000e+00) %512 = fsub float 1.000000e+00, %511 %513 = call float @llvm.maxnum.f32(float %452, float %512) br label %endif131 endif131: ; preds = %if93, %main_body %.02 = phi float [ %513, %if93 ], [ %452, %main_body ] %514 = call float @llvm.AMDGPU.clamp.(float %.02, float 0.000000e+00, float 1.000000e+00) %515 = fsub float 1.000000e+00, %514 %516 = fsub float 1.000000e+00, %514 %517 = fsub float 1.000000e+00, %514 %518 = fmul float %417, %515 %519 = fmul float %418, %516 %520 = fmul float %419, %517 %521 = call float @llvm.AMDGPU.clamp.(float %.02, float 0.000000e+00, float 1.000000e+00) %522 = fsub float 1.000000e+00, %521 %523 = fmul float %282, %522 %524 = bitcast float %5 to i32 %525 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> undef, i32 %524, 10 %526 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %525, float %518, 11 %527 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %526, float %519, 12 %528 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %527, float %520, 13 %529 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %528, float %523, 14 %530 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %529, float %21, 24 ret <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %530 } ; Function Attrs: nounwind readnone declare float @llvm.SI.fs.interp(i32, i32, i32, <2 x i32>) #1 ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #1 ; Function Attrs: nounwind declare void @llvm.AMDGPU.kill(float) #2 ; Function Attrs: nounwind readnone declare float @llvm.sqrt.f32(float) #1 ; Function Attrs: nounwind readnone declare float @llvm.maxnum.f32(float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.AMDGPU.clamp.(float, float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.exp2.f32(float) #1 ; Function Attrs: nounwind readnone declare float @llvm.minnum.f32(float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.fabs.f32(float) #1 attributes #0 = { "InitialPSInputAddr"="36983" } attributes #1 = { nounwind readnone } attributes #2 = { nounwind } !0 = !{} !1 = !{float 2.500000e+00} VERT PROPERTY NEXT_SHADER FRAG DCL IN[0] DCL IN[1] DCL IN[2] DCL IN[3] DCL IN[4] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] DCL OUT[2], GENERIC[1] DCL CONST[0..12] DCL TEMP[0..5], LOCAL IMM[0] FLT32 { 0.0000, 0.0001, 0.0000, 0.0000} 0: MOV TEMP[0].xyz, IN[0] 1: UIF CONST[6].xxxx :0 2: MAD TEMP[0].xy, IN[3].xyyy, CONST[4].xyyy, CONST[4].zwww 3: FSLT TEMP[1].x, IMM[0].xxxx, IN[0].zzzz 4: UIF TEMP[1].xxxx :0 5: MOV TEMP[1].x, IMM[0].yyyy 6: ELSE :0 7: MOV TEMP[1].x, IMM[0].xxxx 8: ENDIF 9: MOV TEMP[0].z, TEMP[1].xxxx 10: ENDIF 11: UIF CONST[6].yyyy :0 12: MAD TEMP[0].xy, IN[4].xyyy, CONST[5].xyyy, CONST[5].zwww 13: FSLT TEMP[1].x, IMM[0].xxxx, TEMP[0].zzzz 14: UIF TEMP[1].xxxx :0 15: MOV TEMP[1].x, IMM[0].yyyy 16: ELSE :0 17: MOV TEMP[1].x, IMM[0].xxxx 18: ENDIF 19: MOV TEMP[0].z, TEMP[1].xxxx 20: ENDIF 21: MAD TEMP[1].xy, IN[3].xyyy, CONST[7].xyyy, CONST[7].zwww 22: MAD TEMP[2].xy, IN[2].xyyy, CONST[8].xyyy, CONST[8].zwww 23: MOV TEMP[1].zw, TEMP[2].yyxy 24: MOV TEMP[2].x, CONST[0].xxxx 25: MOV TEMP[2].y, CONST[1].xxxx 26: MOV TEMP[2].z, CONST[2].xxxx 27: MOV TEMP[3].x, CONST[0].yyyy 28: MOV TEMP[3].y, CONST[1].yyyy 29: MOV TEMP[3].z, CONST[2].yyyy 30: MOV TEMP[4].x, CONST[0].zzzz 31: MOV TEMP[4].y, CONST[1].zzzz 32: MOV TEMP[4].z, CONST[2].zzzz 33: MUL TEMP[5], CONST[9], TEMP[0].xxxx 34: MAD TEMP[5], CONST[10], TEMP[0].yyyy, TEMP[5] 35: MAD TEMP[0], CONST[11], TEMP[0].zzzz, TEMP[5] 36: MAD TEMP[0], CONST[12], IN[0].wwww, TEMP[0] 37: MUL TEMP[2].xyz, TEMP[2].xyzz, IN[1].xxxx 38: MAD TEMP[2].xyz, TEMP[3].xyzz, IN[1].yyyy, TEMP[2].xyzz 39: MAD TEMP[2].xyz, TEMP[4].xyzz, IN[1].zzzz, TEMP[2].xyzz 40: DP3 TEMP[3].x, TEMP[2].xyzz, TEMP[2].xyzz 41: RSQ TEMP[3].x, TEMP[3].xxxx 42: MUL TEMP[2].xyz, TEMP[2].xyzz, TEMP[3].xxxx 43: MOV OUT[2], TEMP[2] 44: MOV OUT[0], TEMP[0] 45: MOV OUT[1], TEMP[1] 46: END radeonsi: Compiling shader 43 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_vs <{ float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32, i32, i32, i32, i32, i32, i32, i32, i32) { main_body: %19 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 0, !amdgpu.uniform !0 %20 = load <16 x i8>, <16 x i8> addrspace(2)* %19, align 16, !invariant.load !0 %21 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %20, i32 0, i32 %14) %22 = extractelement <4 x float> %21, i32 0 %23 = extractelement <4 x float> %21, i32 1 %24 = extractelement <4 x float> %21, i32 2 %25 = extractelement <4 x float> %21, i32 3 %26 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 1, !amdgpu.uniform !0 %27 = load <16 x i8>, <16 x i8> addrspace(2)* %26, align 16, !invariant.load !0 %28 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %27, i32 0, i32 %15) %29 = extractelement <4 x float> %28, i32 0 %30 = extractelement <4 x float> %28, i32 1 %31 = extractelement <4 x float> %28, i32 2 %32 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 2, !amdgpu.uniform !0 %33 = load <16 x i8>, <16 x i8> addrspace(2)* %32, align 16, !invariant.load !0 %34 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %33, i32 0, i32 %16) %35 = extractelement <4 x float> %34, i32 0 %36 = extractelement <4 x float> %34, i32 1 %37 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 3, !amdgpu.uniform !0 %38 = load <16 x i8>, <16 x i8> addrspace(2)* %37, align 16, !invariant.load !0 %39 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %38, i32 0, i32 %17) %40 = extractelement <4 x float> %39, i32 0 %41 = extractelement <4 x float> %39, i32 1 %42 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 4, !amdgpu.uniform !0 %43 = load <16 x i8>, <16 x i8> addrspace(2)* %42, align 16, !invariant.load !0 %44 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %43, i32 0, i32 %18) %45 = extractelement <4 x float> %44, i32 0 %46 = extractelement <4 x float> %44, i32 1 %47 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %48 = load <16 x i8>, <16 x i8> addrspace(2)* %47, align 16, !invariant.load !0 %49 = call float @llvm.SI.load.const(<16 x i8> %48, i32 96) %50 = bitcast float %49 to i32 %51 = icmp eq i32 %50, 0 br i1 %51, label %endif10, label %if1 if1: ; preds = %main_body %52 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %53 = load <16 x i8>, <16 x i8> addrspace(2)* %52, align 16, !invariant.load !0 %54 = call float @llvm.SI.load.const(<16 x i8> %53, i32 64) %55 = call float @llvm.SI.load.const(<16 x i8> %53, i32 72) %56 = fmul float %40, %54 %57 = fadd float %56, %55 %58 = call float @llvm.SI.load.const(<16 x i8> %53, i32 68) %59 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %60 = load <16 x i8>, <16 x i8> addrspace(2)* %59, align 16, !invariant.load !0 %61 = call float @llvm.SI.load.const(<16 x i8> %60, i32 76) %62 = fmul float %41, %58 %63 = fadd float %62, %61 %64 = fcmp ogt float %24, 0.000000e+00 %. = select i1 %64, float 0x3F1A36E2E0000000, float 0.000000e+00 br label %endif10 endif10: ; preds = %main_body, %if1 %.05 = phi float [ %., %if1 ], [ %24, %main_body ] %.03 = phi float [ %63, %if1 ], [ %23, %main_body ] %.0 = phi float [ %57, %if1 ], [ %22, %main_body ] %65 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %66 = load <16 x i8>, <16 x i8> addrspace(2)* %65, align 16, !invariant.load !0 %67 = call float @llvm.SI.load.const(<16 x i8> %66, i32 100) %68 = bitcast float %67 to i32 %69 = icmp eq i32 %68, 0 br i1 %69, label %endif20, label %if11 if11: ; preds = %endif10 %70 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %71 = load <16 x i8>, <16 x i8> addrspace(2)* %70, align 16, !invariant.load !0 %72 = call float @llvm.SI.load.const(<16 x i8> %71, i32 80) %73 = call float @llvm.SI.load.const(<16 x i8> %71, i32 88) %74 = fmul float %45, %72 %75 = fadd float %74, %73 %76 = call float @llvm.SI.load.const(<16 x i8> %71, i32 84) %77 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %78 = load <16 x i8>, <16 x i8> addrspace(2)* %77, align 16, !invariant.load !0 %79 = call float @llvm.SI.load.const(<16 x i8> %78, i32 92) %80 = fmul float %46, %76 %81 = fadd float %80, %79 %82 = fcmp ogt float %.05, 0.000000e+00 %.9 = select i1 %82, float 0x3F1A36E2E0000000, float 0.000000e+00 br label %endif20 endif20: ; preds = %endif10, %if11 %.16 = phi float [ %.9, %if11 ], [ %.05, %endif10 ] %.14 = phi float [ %81, %if11 ], [ %.03, %endif10 ] %.1 = phi float [ %75, %if11 ], [ %.0, %endif10 ] %83 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %84 = load <16 x i8>, <16 x i8> addrspace(2)* %83, align 16, !invariant.load !0 %85 = call float @llvm.SI.load.const(<16 x i8> %84, i32 112) %86 = call float @llvm.SI.load.const(<16 x i8> %84, i32 120) %87 = fmul float %40, %85 %88 = fadd float %87, %86 %89 = call float @llvm.SI.load.const(<16 x i8> %84, i32 116) %90 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %91 = load <16 x i8>, <16 x i8> addrspace(2)* %90, align 16, !invariant.load !0 %92 = call float @llvm.SI.load.const(<16 x i8> %91, i32 124) %93 = fmul float %41, %89 %94 = fadd float %93, %92 %95 = call float @llvm.SI.load.const(<16 x i8> %91, i32 128) %96 = call float @llvm.SI.load.const(<16 x i8> %91, i32 136) %97 = fmul float %35, %95 %98 = fadd float %97, %96 %99 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %100 = load <16 x i8>, <16 x i8> addrspace(2)* %99, align 16, !invariant.load !0 %101 = call float @llvm.SI.load.const(<16 x i8> %100, i32 132) %102 = call float @llvm.SI.load.const(<16 x i8> %100, i32 140) %103 = fmul float %36, %101 %104 = fadd float %103, %102 %105 = call float @llvm.SI.load.const(<16 x i8> %100, i32 0) %106 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %107 = load <16 x i8>, <16 x i8> addrspace(2)* %106, align 16, !invariant.load !0 %108 = call float @llvm.SI.load.const(<16 x i8> %107, i32 16) %109 = call float @llvm.SI.load.const(<16 x i8> %107, i32 32) %110 = call float @llvm.SI.load.const(<16 x i8> %107, i32 4) %111 = call float @llvm.SI.load.const(<16 x i8> %107, i32 20) %112 = call float @llvm.SI.load.const(<16 x i8> %107, i32 36) %113 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %114 = load <16 x i8>, <16 x i8> addrspace(2)* %113, align 16, !invariant.load !0 %115 = call float @llvm.SI.load.const(<16 x i8> %114, i32 8) %116 = call float @llvm.SI.load.const(<16 x i8> %114, i32 24) %117 = call float @llvm.SI.load.const(<16 x i8> %114, i32 40) %118 = call float @llvm.SI.load.const(<16 x i8> %114, i32 144) %119 = fmul float %118, %.1 %120 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %121 = load <16 x i8>, <16 x i8> addrspace(2)* %120, align 16, !invariant.load !0 %122 = call float @llvm.SI.load.const(<16 x i8> %121, i32 148) %123 = fmul float %122, %.1 %124 = call float @llvm.SI.load.const(<16 x i8> %121, i32 152) %125 = fmul float %124, %.1 %126 = call float @llvm.SI.load.const(<16 x i8> %121, i32 156) %127 = fmul float %126, %.1 %128 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %129 = load <16 x i8>, <16 x i8> addrspace(2)* %128, align 16, !invariant.load !0 %130 = call float @llvm.SI.load.const(<16 x i8> %129, i32 160) %131 = fmul float %130, %.14 %132 = fadd float %131, %119 %133 = call float @llvm.SI.load.const(<16 x i8> %129, i32 164) %134 = fmul float %133, %.14 %135 = fadd float %134, %123 %136 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %137 = load <16 x i8>, <16 x i8> addrspace(2)* %136, align 16, !invariant.load !0 %138 = call float @llvm.SI.load.const(<16 x i8> %137, i32 168) %139 = fmul float %138, %.14 %140 = fadd float %139, %125 %141 = call float @llvm.SI.load.const(<16 x i8> %137, i32 172) %142 = fmul float %141, %.14 %143 = fadd float %142, %127 %144 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %145 = load <16 x i8>, <16 x i8> addrspace(2)* %144, align 16, !invariant.load !0 %146 = call float @llvm.SI.load.const(<16 x i8> %145, i32 176) %147 = fmul float %146, %.16 %148 = fadd float %147, %132 %149 = call float @llvm.SI.load.const(<16 x i8> %145, i32 180) %150 = fmul float %149, %.16 %151 = fadd float %150, %135 %152 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %153 = load <16 x i8>, <16 x i8> addrspace(2)* %152, align 16, !invariant.load !0 %154 = call float @llvm.SI.load.const(<16 x i8> %153, i32 184) %155 = fmul float %154, %.16 %156 = fadd float %155, %140 %157 = call float @llvm.SI.load.const(<16 x i8> %153, i32 188) %158 = fmul float %157, %.16 %159 = fadd float %158, %143 %160 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %161 = load <16 x i8>, <16 x i8> addrspace(2)* %160, align 16, !invariant.load !0 %162 = call float @llvm.SI.load.const(<16 x i8> %161, i32 192) %163 = fmul float %162, %25 %164 = fadd float %163, %148 %165 = call float @llvm.SI.load.const(<16 x i8> %161, i32 196) %166 = fmul float %165, %25 %167 = fadd float %166, %151 %168 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %169 = load <16 x i8>, <16 x i8> addrspace(2)* %168, align 16, !invariant.load !0 %170 = call float @llvm.SI.load.const(<16 x i8> %169, i32 200) %171 = fmul float %170, %25 %172 = fadd float %171, %156 %173 = call float @llvm.SI.load.const(<16 x i8> %169, i32 204) %174 = fmul float %173, %25 %175 = fadd float %174, %159 %176 = fmul float %105, %29 %177 = fmul float %108, %29 %178 = fmul float %109, %29 %179 = fmul float %110, %30 %180 = fadd float %179, %176 %181 = fmul float %111, %30 %182 = fadd float %181, %177 %183 = fmul float %112, %30 %184 = fadd float %183, %178 %185 = fmul float %115, %31 %186 = fadd float %185, %180 %187 = fmul float %116, %31 %188 = fadd float %187, %182 %189 = fmul float %117, %31 %190 = fadd float %189, %184 %191 = fmul float %186, %186 %192 = fmul float %188, %188 %193 = fadd float %192, %191 %194 = fmul float %190, %190 %195 = fadd float %193, %194 %196 = call float @llvm.sqrt.f32(float %195) %197 = fdiv float 1.000000e+00, %196, !fpmath !1 %198 = fmul float %186, %197 %199 = fmul float %188, %197 %200 = fmul float %190, %197 %201 = bitcast i32 %12 to float %202 = insertvalue <{ float, float, float }> undef, float %201, 2 call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 32, i32 0, float %88, float %94, float %98, float %104) call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 33, i32 0, float %198, float %199, float %200, float undef) call void @llvm.SI.export(i32 15, i32 0, i32 1, i32 12, i32 0, float %164, float %167, float %172, float %175) ret <{ float, float, float }> %202 } ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.vs.load.input(<16 x i8>, i32, i32) #0 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #0 ; Function Attrs: nounwind readnone declare float @llvm.sqrt.f32(float) #0 ; Function Attrs: nounwind declare void @llvm.SI.export(i32, i32, i32, i32, i32, float, float, float, float) #1 attributes #0 = { nounwind readnone } attributes #1 = { nounwind } !0 = !{} !1 = !{float 2.500000e+00} FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL IN[1], GENERIC[1], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL SAMP[2] DCL SVIEW[0], 2D, FLOAT DCL SVIEW[1], 2D, FLOAT DCL SVIEW[2], 2D, FLOAT DCL CONST[0..2] DCL CONST[6..11] DCL TEMP[0..5], LOCAL IMM[0] FLT32 { 2.0000, 1.0000, 0.5000, 0.0000} IMM[1] FLT32 { 0.0000, 0.3053, 0.6822, 0.0125} IMM[2] FLT32 { 0.0103, 0.0200, 255.0000, 0.0039} 0: MOV TEMP[0].xy, IN[0].zwww 1: TEX TEMP[0], TEMP[0], SAMP[0], 2D 2: MOV TEMP[1].xy, IN[0].xyyy 3: TEX TEMP[1], TEMP[1], SAMP[2], 2D 4: MOV TEMP[2].xy, IN[0].xyyy 5: TEX TEMP[2].xyz, TEMP[2], SAMP[1], 2D 6: LRP TEMP[1].xyz, TEMP[1].wwww, TEMP[1].xyzz, TEMP[0].xyzz 7: MUL TEMP[1].xyz, TEMP[1].xyzz, CONST[6].xyzz 8: MUL TEMP[1].xyz, TEMP[1].xyzz, IMM[0].xxxx 9: MUL TEMP[3].xyz, TEMP[1].xyzz, CONST[0].xyzz 10: MUL TEMP[3].xyz, TEMP[3].xyzz, IMM[0].xxxx 11: ADD TEMP[4].xyz, IMM[0].yyyy, -TEMP[1].xyzz 12: MUL TEMP[4].xyz, IMM[0].xxxx, TEMP[4].xyzz 13: ADD TEMP[5].xyz, IMM[0].yyyy, -CONST[0].xyzz 14: MUL TEMP[4].xyz, TEMP[4].xyzz, TEMP[5].xyzz 15: ADD TEMP[4].xyz, IMM[0].yyyy, -TEMP[4].xyzz 16: FSGE TEMP[5].x, TEMP[1].xxxx, IMM[0].zzzz 17: AND TEMP[5].x, TEMP[5].xxxx, IMM[0].yyyy 18: LRP TEMP[3].xyz, TEMP[5].xxxx, TEMP[4].xyzz, TEMP[3].xyzz 19: MUL TEMP[4].x, TEMP[2].xxxx, CONST[0].wwww 20: LRP TEMP[1].xyz, TEMP[4].xxxx, TEMP[3].xyzz, TEMP[1].xyzz 21: MUL TEMP[3].xyz, TEMP[1].xyzz, CONST[1].xyzz 22: MUL TEMP[3].xyz, TEMP[3].xyzz, IMM[0].xxxx 23: ADD TEMP[4].xyz, IMM[0].yyyy, -TEMP[1].xyzz 24: MUL TEMP[4].xyz, IMM[0].xxxx, TEMP[4].xyzz 25: ADD TEMP[5].xyz, IMM[0].yyyy, -CONST[1].xyzz 26: MUL TEMP[4].xyz, TEMP[4].xyzz, TEMP[5].xyzz 27: ADD TEMP[4].xyz, IMM[0].yyyy, -TEMP[4].xyzz 28: FSGE TEMP[5].x, TEMP[1].xxxx, IMM[0].zzzz 29: AND TEMP[5].x, TEMP[5].xxxx, IMM[0].yyyy 30: LRP TEMP[3].xyz, TEMP[5].xxxx, TEMP[4].xyzz, TEMP[3].xyzz 31: MUL TEMP[4].x, TEMP[2].yyyy, CONST[1].wwww 32: LRP TEMP[1].xyz, TEMP[4].xxxx, TEMP[3].xyzz, TEMP[1].xyzz 33: MUL TEMP[3].xyz, TEMP[1].xyzz, CONST[2].xyzz 34: MUL TEMP[3].xyz, TEMP[3].xyzz, IMM[0].xxxx 35: ADD TEMP[4].xyz, IMM[0].yyyy, -TEMP[1].xyzz 36: MUL TEMP[4].xyz, IMM[0].xxxx, TEMP[4].xyzz 37: ADD TEMP[5].xyz, IMM[0].yyyy, -CONST[2].xyzz 38: MUL TEMP[4].xyz, TEMP[4].xyzz, TEMP[5].xyzz 39: ADD TEMP[4].xyz, IMM[0].yyyy, -TEMP[4].xyzz 40: FSGE TEMP[5].x, TEMP[1].xxxx, IMM[0].zzzz 41: AND TEMP[5].x, TEMP[5].xxxx, IMM[0].yyyy 42: LRP TEMP[3].xyz, TEMP[5].xxxx, TEMP[4].xyzz, TEMP[3].xyzz 43: MUL TEMP[2].x, TEMP[2].zzzz, CONST[2].wwww 44: LRP TEMP[1].xyz, TEMP[2].xxxx, TEMP[3].xyzz, TEMP[1].xyzz 45: MOV TEMP[2].x, IMM[0].wwww 46: MUL TEMP[3].xyz, IN[1].xyzz, IMM[1].xxxx 47: MOV TEMP[2].yz, TEMP[3].yxyz 48: MUL TEMP[0].x, TEMP[0].wwww, CONST[6].wwww 49: FSLT TEMP[0].x, TEMP[0].xxxx, CONST[11].xxxx 50: AND TEMP[0].x, TEMP[0].xxxx, IMM[0].yyyy 51: KILL_IF -TEMP[0].xxxx 52: MOV TEMP[0], IMM[0].wwww 53: UIF CONST[7].xxxx :0 54: MOV TEMP[0].w, IMM[0].yyyy 55: MOV_SAT TEMP[3].x, CONST[8].xxxx 56: POW TEMP[4].x, TEMP[1].xxxx, TEMP[3].xxxx 57: POW TEMP[4].y, TEMP[1].yyyy, TEMP[3].xxxx 58: POW TEMP[4].z, TEMP[1].zzzz, TEMP[3].xxxx 59: MAX TEMP[1].xyz, TEMP[4].xyzz, IMM[0].wwww 60: MIN TEMP[0].xyz, TEMP[1].xyzz, CONST[9].xxxx 61: ENDIF 62: UIF CONST[7].yyyy :0 63: FSNE TEMP[1].x, CONST[10].xxxx, IMM[0].wwww 64: UIF TEMP[1].xxxx :0 65: MOV TEMP[1].xyz, TEMP[2].xyzx 66: ELSE :0 67: MAD TEMP[3].xyz, TEMP[2].xyzz, IMM[1].yyyy, IMM[1].zzzz 68: MAD TEMP[3].xyz, TEMP[2].xyzz, TEMP[3].xyzz, IMM[1].wwww 69: MUL TEMP[1].xyz, TEMP[2].xyzz, TEMP[3].xyzz 70: ENDIF 71: MUL TEMP[1].xyz, TEMP[1].xyzz, IMM[2].xxxx 72: MAX TEMP[3].x, TEMP[1].xxxx, TEMP[1].yyyy 73: MAX TEMP[4].x, TEMP[1].zzzz, IMM[2].yyyy 74: MAX TEMP[3].x, TEMP[3].xxxx, TEMP[4].xxxx 75: MUL TEMP[3].x, TEMP[3].xxxx, IMM[2].zzzz 76: CEIL TEMP[3].x, TEMP[3].xxxx 77: MUL TEMP[3].x, TEMP[3].xxxx, IMM[2].wwww 78: MAX TEMP[3].x, TEMP[3].xxxx, IMM[2].yyyy 79: MOV TEMP[2].w, TEMP[3].xxxx 80: RCP TEMP[3].x, TEMP[3].xxxx 81: MUL TEMP[2].xyz, TEMP[1].xyzz, TEMP[3].xxxx 82: MOV TEMP[0], TEMP[2] 83: ENDIF 84: MOV OUT[0], TEMP[0] 85: END radeonsi: Compiling shader 44 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_ps <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), float inreg, i32 inreg, <2 x i32>, <2 x i32>, <2 x i32>, <3 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, float, float, float, float, float, i32, i32, float, i32) #0 { main_body: %23 = call float @llvm.SI.fs.interp(i32 2, i32 0, i32 %6, <2 x i32> %8) %24 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %6, <2 x i32> %8) %25 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 0, !amdgpu.uniform !0 %26 = load <8 x i32>, <8 x i32> addrspace(2)* %25, align 32, !invariant.load !0 %27 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %28 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %27, i64 0, i64 3, !amdgpu.uniform !0 %29 = load <4 x i32>, <4 x i32> addrspace(2)* %28, align 16, !invariant.load !0 %30 = bitcast float %23 to i32 %31 = bitcast float %24 to i32 %32 = insertelement <2 x i32> undef, i32 %30, i32 0 %33 = insertelement <2 x i32> %32, i32 %31, i32 1 %34 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %33, <8 x i32> %26, <4 x i32> %29, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %35 = extractelement <4 x float> %34, i32 0 %36 = extractelement <4 x float> %34, i32 1 %37 = extractelement <4 x float> %34, i32 2 %38 = extractelement <4 x float> %34, i32 3 %39 = call float @llvm.SI.fs.interp(i32 0, i32 0, i32 %6, <2 x i32> %8) %40 = call float @llvm.SI.fs.interp(i32 1, i32 0, i32 %6, <2 x i32> %8) %41 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 4, !amdgpu.uniform !0 %42 = load <8 x i32>, <8 x i32> addrspace(2)* %41, align 32, !invariant.load !0 %43 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %44 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %43, i64 0, i64 11, !amdgpu.uniform !0 %45 = load <4 x i32>, <4 x i32> addrspace(2)* %44, align 16, !invariant.load !0 %46 = bitcast float %39 to i32 %47 = bitcast float %40 to i32 %48 = insertelement <2 x i32> undef, i32 %46, i32 0 %49 = insertelement <2 x i32> %48, i32 %47, i32 1 %50 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %49, <8 x i32> %42, <4 x i32> %45, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %51 = extractelement <4 x float> %50, i32 0 %52 = extractelement <4 x float> %50, i32 1 %53 = extractelement <4 x float> %50, i32 2 %54 = extractelement <4 x float> %50, i32 3 %55 = call float @llvm.SI.fs.interp(i32 0, i32 0, i32 %6, <2 x i32> %8) %56 = call float @llvm.SI.fs.interp(i32 1, i32 0, i32 %6, <2 x i32> %8) %57 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 2, !amdgpu.uniform !0 %58 = load <8 x i32>, <8 x i32> addrspace(2)* %57, align 32, !invariant.load !0 %59 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %60 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %59, i64 0, i64 7, !amdgpu.uniform !0 %61 = load <4 x i32>, <4 x i32> addrspace(2)* %60, align 16, !invariant.load !0 %62 = bitcast float %55 to i32 %63 = bitcast float %56 to i32 %64 = insertelement <2 x i32> undef, i32 %62, i32 0 %65 = insertelement <2 x i32> %64, i32 %63, i32 1 %66 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %65, <8 x i32> %58, <4 x i32> %61, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %67 = extractelement <4 x float> %66, i32 0 %68 = extractelement <4 x float> %66, i32 1 %69 = extractelement <4 x float> %66, i32 2 %70 = fsub float 1.000000e+00, %54 %71 = fmul float %51, %54 %72 = fmul float %35, %70 %73 = fadd float %71, %72 %74 = fsub float 1.000000e+00, %54 %75 = fmul float %52, %54 %76 = fmul float %36, %74 %77 = fadd float %75, %76 %78 = fsub float 1.000000e+00, %54 %79 = fmul float %53, %54 %80 = fmul float %37, %78 %81 = fadd float %79, %80 %82 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %83 = load <16 x i8>, <16 x i8> addrspace(2)* %82, align 16, !invariant.load !0 %84 = call float @llvm.SI.load.const(<16 x i8> %83, i32 96) %85 = fmul float %73, %84 %86 = call float @llvm.SI.load.const(<16 x i8> %83, i32 100) %87 = fmul float %77, %86 %88 = call float @llvm.SI.load.const(<16 x i8> %83, i32 104) %89 = fmul float %81, %88 %90 = fmul float %85, 2.000000e+00 %91 = fmul float %87, 2.000000e+00 %92 = fmul float %89, 2.000000e+00 %93 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %94 = load <16 x i8>, <16 x i8> addrspace(2)* %93, align 16, !invariant.load !0 %95 = call float @llvm.SI.load.const(<16 x i8> %94, i32 0) %96 = fmul float %90, %95 %97 = call float @llvm.SI.load.const(<16 x i8> %94, i32 4) %98 = fmul float %91, %97 %99 = call float @llvm.SI.load.const(<16 x i8> %94, i32 8) %100 = fmul float %92, %99 %101 = fmul float %96, 2.000000e+00 %102 = fmul float %98, 2.000000e+00 %103 = fmul float %100, 2.000000e+00 %104 = fsub float 1.000000e+00, %90 %105 = fsub float 1.000000e+00, %91 %106 = fsub float 1.000000e+00, %92 %107 = fmul float %104, 2.000000e+00 %108 = fmul float %105, 2.000000e+00 %109 = fmul float %106, 2.000000e+00 %110 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %111 = load <16 x i8>, <16 x i8> addrspace(2)* %110, align 16, !invariant.load !0 %112 = call float @llvm.SI.load.const(<16 x i8> %111, i32 0) %113 = fsub float 1.000000e+00, %112 %114 = call float @llvm.SI.load.const(<16 x i8> %111, i32 4) %115 = fsub float 1.000000e+00, %114 %116 = call float @llvm.SI.load.const(<16 x i8> %111, i32 8) %117 = fsub float 1.000000e+00, %116 %118 = fmul float %107, %113 %119 = fmul float %108, %115 %120 = fmul float %109, %117 %121 = fsub float 1.000000e+00, %118 %122 = fsub float 1.000000e+00, %119 %123 = fsub float 1.000000e+00, %120 %124 = fcmp oge float %90, 5.000000e-01 %125 = select i1 %124, float 1.000000e+00, float 0.000000e+00 %126 = fsub float 1.000000e+00, %125 %127 = fmul float %121, %125 %128 = fmul float %101, %126 %129 = fadd float %127, %128 %130 = fsub float 1.000000e+00, %125 %131 = fmul float %122, %125 %132 = fmul float %102, %130 %133 = fadd float %131, %132 %134 = fsub float 1.000000e+00, %125 %135 = fmul float %123, %125 %136 = fmul float %103, %134 %137 = fadd float %135, %136 %138 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %139 = load <16 x i8>, <16 x i8> addrspace(2)* %138, align 16, !invariant.load !0 %140 = call float @llvm.SI.load.const(<16 x i8> %139, i32 12) %141 = fmul float %67, %140 %142 = fsub float 1.000000e+00, %141 %143 = fmul float %129, %141 %144 = fmul float %90, %142 %145 = fadd float %143, %144 %146 = fsub float 1.000000e+00, %141 %147 = fmul float %133, %141 %148 = fmul float %91, %146 %149 = fadd float %147, %148 %150 = fsub float 1.000000e+00, %141 %151 = fmul float %137, %141 %152 = fmul float %92, %150 %153 = fadd float %151, %152 %154 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %155 = load <16 x i8>, <16 x i8> addrspace(2)* %154, align 16, !invariant.load !0 %156 = call float @llvm.SI.load.const(<16 x i8> %155, i32 16) %157 = fmul float %145, %156 %158 = call float @llvm.SI.load.const(<16 x i8> %155, i32 20) %159 = fmul float %149, %158 %160 = call float @llvm.SI.load.const(<16 x i8> %155, i32 24) %161 = fmul float %153, %160 %162 = fmul float %157, 2.000000e+00 %163 = fmul float %159, 2.000000e+00 %164 = fmul float %161, 2.000000e+00 %165 = fsub float 1.000000e+00, %145 %166 = fsub float 1.000000e+00, %149 %167 = fsub float 1.000000e+00, %153 %168 = fmul float %165, 2.000000e+00 %169 = fmul float %166, 2.000000e+00 %170 = fmul float %167, 2.000000e+00 %171 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %172 = load <16 x i8>, <16 x i8> addrspace(2)* %171, align 16, !invariant.load !0 %173 = call float @llvm.SI.load.const(<16 x i8> %172, i32 16) %174 = fsub float 1.000000e+00, %173 %175 = call float @llvm.SI.load.const(<16 x i8> %172, i32 20) %176 = fsub float 1.000000e+00, %175 %177 = call float @llvm.SI.load.const(<16 x i8> %172, i32 24) %178 = fsub float 1.000000e+00, %177 %179 = fmul float %168, %174 %180 = fmul float %169, %176 %181 = fmul float %170, %178 %182 = fsub float 1.000000e+00, %179 %183 = fsub float 1.000000e+00, %180 %184 = fsub float 1.000000e+00, %181 %185 = fcmp oge float %145, 5.000000e-01 %186 = select i1 %185, float 1.000000e+00, float 0.000000e+00 %187 = fsub float 1.000000e+00, %186 %188 = fmul float %182, %186 %189 = fmul float %162, %187 %190 = fadd float %188, %189 %191 = fsub float 1.000000e+00, %186 %192 = fmul float %183, %186 %193 = fmul float %163, %191 %194 = fadd float %192, %193 %195 = fsub float 1.000000e+00, %186 %196 = fmul float %184, %186 %197 = fmul float %164, %195 %198 = fadd float %196, %197 %199 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %200 = load <16 x i8>, <16 x i8> addrspace(2)* %199, align 16, !invariant.load !0 %201 = call float @llvm.SI.load.const(<16 x i8> %200, i32 28) %202 = fmul float %68, %201 %203 = fsub float 1.000000e+00, %202 %204 = fmul float %190, %202 %205 = fmul float %145, %203 %206 = fadd float %204, %205 %207 = fsub float 1.000000e+00, %202 %208 = fmul float %194, %202 %209 = fmul float %149, %207 %210 = fadd float %208, %209 %211 = fsub float 1.000000e+00, %202 %212 = fmul float %198, %202 %213 = fmul float %153, %211 %214 = fadd float %212, %213 %215 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %216 = load <16 x i8>, <16 x i8> addrspace(2)* %215, align 16, !invariant.load !0 %217 = fcmp oge float %206, 5.000000e-01 %218 = select i1 %217, float 1.000000e+00, float 0.000000e+00 %219 = call float @llvm.SI.load.const(<16 x i8> %216, i32 44) %220 = fmul float %69, %219 %221 = call float @llvm.SI.fs.interp(i32 0, i32 1, i32 %6, <2 x i32> %8) %222 = fmul float %221, 0x3EB0C6F7A0000000 %223 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %224 = fmul float %223, 0x3EB0C6F7A0000000 %225 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %226 = load <16 x i8>, <16 x i8> addrspace(2)* %225, align 16, !invariant.load !0 %227 = call float @llvm.SI.load.const(<16 x i8> %226, i32 108) %228 = fmul float %38, %227 %229 = call float @llvm.SI.load.const(<16 x i8> %226, i32 176) %230 = fcmp olt float %228, %229 %231 = select i1 %230, float -1.000000e+00, float 0.000000e+00 call void @llvm.AMDGPU.kill(float %231) %232 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %233 = load <16 x i8>, <16 x i8> addrspace(2)* %232, align 16, !invariant.load !0 %234 = call float @llvm.SI.load.const(<16 x i8> %233, i32 112) %235 = bitcast float %234 to i32 %236 = icmp eq i32 %235, 0 br i1 %236, label %endif61, label %if53 if53: ; preds = %main_body %237 = fsub float 1.000000e+00, %214 %238 = fmul float %237, 2.000000e+00 %239 = call float @llvm.SI.load.const(<16 x i8> %216, i32 40) %240 = fsub float 1.000000e+00, %239 %241 = fmul float %238, %240 %242 = fsub float 1.000000e+00, %241 %243 = fmul float %242, %218 %244 = call float @llvm.SI.load.const(<16 x i8> %216, i32 40) %245 = fmul float %214, %244 %246 = fmul float %245, 2.000000e+00 %247 = fsub float 1.000000e+00, %218 %248 = fmul float %246, %247 %249 = fadd float %243, %248 %250 = fmul float %249, %220 %251 = fsub float 1.000000e+00, %220 %252 = fmul float %214, %251 %253 = fadd float %250, %252 %254 = fsub float 1.000000e+00, %210 %255 = fmul float %254, 2.000000e+00 %256 = call float @llvm.SI.load.const(<16 x i8> %216, i32 36) %257 = fsub float 1.000000e+00, %256 %258 = fmul float %255, %257 %259 = fsub float 1.000000e+00, %258 %260 = fmul float %259, %218 %261 = call float @llvm.SI.load.const(<16 x i8> %216, i32 36) %262 = fmul float %210, %261 %263 = fmul float %262, 2.000000e+00 %264 = fsub float 1.000000e+00, %218 %265 = fmul float %263, %264 %266 = fadd float %260, %265 %267 = fmul float %266, %220 %268 = fsub float 1.000000e+00, %220 %269 = fmul float %210, %268 %270 = fadd float %267, %269 %271 = fsub float 1.000000e+00, %206 %272 = fmul float %271, 2.000000e+00 %273 = call float @llvm.SI.load.const(<16 x i8> %216, i32 32) %274 = fsub float 1.000000e+00, %273 %275 = fmul float %272, %274 %276 = fsub float 1.000000e+00, %275 %277 = fmul float %276, %218 %278 = call float @llvm.SI.load.const(<16 x i8> %216, i32 32) %279 = fmul float %206, %278 %280 = fmul float %279, 2.000000e+00 %281 = fsub float 1.000000e+00, %218 %282 = fmul float %280, %281 %283 = fadd float %277, %282 %284 = fmul float %283, %220 %285 = fsub float 1.000000e+00, %220 %286 = fmul float %206, %285 %287 = fadd float %284, %286 %288 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %289 = load <16 x i8>, <16 x i8> addrspace(2)* %288, align 16, !invariant.load !0 %290 = call float @llvm.SI.load.const(<16 x i8> %289, i32 128) %291 = call float @llvm.AMDGPU.clamp.(float %290, float 0.000000e+00, float 1.000000e+00) %292 = call float @llvm.pow.f32(float %287, float %291) %293 = call float @llvm.pow.f32(float %270, float %291) %294 = call float @llvm.pow.f32(float %253, float %291) %295 = call float @llvm.maxnum.f32(float %292, float 0.000000e+00) %296 = call float @llvm.maxnum.f32(float %293, float 0.000000e+00) %297 = call float @llvm.maxnum.f32(float %294, float 0.000000e+00) %298 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %299 = load <16 x i8>, <16 x i8> addrspace(2)* %298, align 16, !invariant.load !0 %300 = call float @llvm.SI.load.const(<16 x i8> %299, i32 144) %301 = call float @llvm.minnum.f32(float %295, float %300) %302 = call float @llvm.SI.load.const(<16 x i8> %299, i32 144) %303 = call float @llvm.minnum.f32(float %296, float %302) %304 = call float @llvm.SI.load.const(<16 x i8> %299, i32 144) %305 = call float @llvm.minnum.f32(float %297, float %304) br label %endif61 endif61: ; preds = %main_body, %if53 %.06 = phi float [ 1.000000e+00, %if53 ], [ 0.000000e+00, %main_body ] %.04 = phi float [ %305, %if53 ], [ 0.000000e+00, %main_body ] %.02 = phi float [ %303, %if53 ], [ 0.000000e+00, %main_body ] %.0 = phi float [ %301, %if53 ], [ 0.000000e+00, %main_body ] %306 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %307 = load <16 x i8>, <16 x i8> addrspace(2)* %306, align 16, !invariant.load !0 %308 = call float @llvm.SI.load.const(<16 x i8> %307, i32 116) %309 = bitcast float %308 to i32 %310 = icmp eq i32 %309, 0 br i1 %310, label %endif83, label %if62 if62: ; preds = %endif61 %311 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %312 = load <16 x i8>, <16 x i8> addrspace(2)* %311, align 16, !invariant.load !0 %313 = call float @llvm.SI.load.const(<16 x i8> %312, i32 160) %314 = fcmp une float %313, 0.000000e+00 br i1 %314, label %endif70, label %else66 else66: ; preds = %if62 %315 = fmul float %222, 0x3FD38A2220000000 %316 = fadd float %315, 0x3FE5D45880000000 %317 = fmul float %224, 0x3FD38A2220000000 %318 = fadd float %317, 0x3FE5D45880000000 %319 = fmul float %222, %316 %320 = fadd float %319, 0x3F89A59880000000 %321 = fmul float %224, %318 %322 = fadd float %321, 0x3F89A59880000000 %323 = fmul float %222, %320 %324 = fmul float %224, %322 br label %endif70 endif70: ; preds = %if62, %else66 %.010 = phi float [ %324, %else66 ], [ %224, %if62 ] %.09 = phi float [ %323, %else66 ], [ %222, %if62 ] %325 = fmul float %.09, 0x3F851D0820000000 %326 = fmul float %.010, 0x3F851D0820000000 %327 = call float @llvm.maxnum.f32(float %325, float 0.000000e+00) %328 = call float @llvm.maxnum.f32(float %326, float 0x3F947AE140000000) %329 = call float @llvm.maxnum.f32(float %327, float %328) %330 = fmul float %329, 2.550000e+02 %331 = call float @llvm.ceil.f32(float %330) %332 = fmul float %331, 0x3F70101020000000 %333 = call float @llvm.maxnum.f32(float %332, float 0x3F947AE140000000) %334 = fdiv float 1.000000e+00, %333, !fpmath !1 %335 = fmul float %334, 0.000000e+00 %336 = fmul float %325, %334 %337 = fmul float %326, %334 br label %endif83 endif83: ; preds = %endif61, %endif70 %.17 = phi float [ %333, %endif70 ], [ %.06, %endif61 ] %.15 = phi float [ %337, %endif70 ], [ %.04, %endif61 ] %.13 = phi float [ %336, %endif70 ], [ %.02, %endif61 ] %.1 = phi float [ %335, %endif70 ], [ %.0, %endif61 ] %338 = bitcast float %5 to i32 %339 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> undef, i32 %338, 10 %340 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %339, float %.1, 11 %341 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %340, float %.13, 12 %342 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %341, float %.15, 13 %343 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %342, float %.17, 14 %344 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %343, float %21, 24 ret <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %344 } ; Function Attrs: nounwind readnone declare float @llvm.SI.fs.interp(i32, i32, i32, <2 x i32>) #1 ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #1 ; Function Attrs: nounwind declare void @llvm.AMDGPU.kill(float) #2 ; Function Attrs: nounwind readnone declare float @llvm.AMDGPU.clamp.(float, float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.pow.f32(float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.maxnum.f32(float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.minnum.f32(float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.ceil.f32(float) #1 attributes #0 = { "InitialPSInputAddr"="36983" } attributes #1 = { nounwind readnone } attributes #2 = { nounwind } !0 = !{} !1 = !{float 2.500000e+00} VERT PROPERTY NEXT_SHADER FRAG DCL IN[0] DCL IN[1] DCL IN[2] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] DCL OUT[2], GENERIC[1] DCL CONST[0..12] DCL TEMP[0..3], LOCAL 0: MOV TEMP[0].x, CONST[4].xxxx 1: MOV TEMP[0].y, CONST[5].xxxx 2: MOV TEMP[0].z, CONST[6].xxxx 3: MOV TEMP[1].x, CONST[4].yyyy 4: MOV TEMP[1].y, CONST[5].yyyy 5: MOV TEMP[1].z, CONST[6].yyyy 6: MOV TEMP[2].x, CONST[4].zzzz 7: MOV TEMP[2].y, CONST[5].zzzz 8: MOV TEMP[2].z, CONST[6].zzzz 9: MUL TEMP[0].xyz, TEMP[0].xyzz, IN[1].xxxx 10: MAD TEMP[0].xyz, TEMP[1].xyzz, IN[1].yyyy, TEMP[0].xyzz 11: MAD TEMP[0].xyz, TEMP[2].xyzz, IN[1].zzzz, TEMP[0].xyzz 12: DP3 TEMP[1].x, TEMP[0].xyzz, TEMP[0].xyzz 13: RSQ TEMP[1].x, TEMP[1].xxxx 14: MUL TEMP[0].xyz, TEMP[0].xyzz, TEMP[1].xxxx 15: MUL TEMP[1], CONST[9], IN[0].xxxx 16: MAD TEMP[1], CONST[10], IN[0].yyyy, TEMP[1] 17: MAD TEMP[1], CONST[11], IN[0].zzzz, TEMP[1] 18: MAD TEMP[1], CONST[12], IN[0].wwww, TEMP[1] 19: MAD TEMP[2].xy, IN[2].xyyy, CONST[8].xyyy, CONST[8].zwww 20: MOV TEMP[2].zw, TEMP[0].yyxy 21: MOV TEMP[0].x, TEMP[0].zzzz 22: MUL TEMP[3], CONST[0], IN[0].xxxx 23: MAD TEMP[3], CONST[1], IN[0].yyyy, TEMP[3] 24: MAD TEMP[3], CONST[2], IN[0].zzzz, TEMP[3] 25: MAD TEMP[3].xyz, CONST[3], IN[0].wwww, TEMP[3] 26: MOV TEMP[0].yzw, TEMP[3].yxyz 27: MOV OUT[2], TEMP[0] 28: MOV OUT[0], TEMP[1] 29: MOV OUT[1], TEMP[2] 30: END radeonsi: Compiling shader 45 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_vs <{ float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32, i32, i32, i32, i32, i32, i32) { main_body: %17 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 0, !amdgpu.uniform !0 %18 = load <16 x i8>, <16 x i8> addrspace(2)* %17, align 16, !invariant.load !0 %19 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %18, i32 0, i32 %14) %20 = extractelement <4 x float> %19, i32 0 %21 = extractelement <4 x float> %19, i32 1 %22 = extractelement <4 x float> %19, i32 2 %23 = extractelement <4 x float> %19, i32 3 %24 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 1, !amdgpu.uniform !0 %25 = load <16 x i8>, <16 x i8> addrspace(2)* %24, align 16, !invariant.load !0 %26 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %25, i32 0, i32 %15) %27 = extractelement <4 x float> %26, i32 0 %28 = extractelement <4 x float> %26, i32 1 %29 = extractelement <4 x float> %26, i32 2 %30 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 2, !amdgpu.uniform !0 %31 = load <16 x i8>, <16 x i8> addrspace(2)* %30, align 16, !invariant.load !0 %32 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %31, i32 0, i32 %16) %33 = extractelement <4 x float> %32, i32 0 %34 = extractelement <4 x float> %32, i32 1 %35 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %36 = load <16 x i8>, <16 x i8> addrspace(2)* %35, align 16, !invariant.load !0 %37 = call float @llvm.SI.load.const(<16 x i8> %36, i32 64) %38 = call float @llvm.SI.load.const(<16 x i8> %36, i32 80) %39 = call float @llvm.SI.load.const(<16 x i8> %36, i32 96) %40 = call float @llvm.SI.load.const(<16 x i8> %36, i32 68) %41 = call float @llvm.SI.load.const(<16 x i8> %36, i32 84) %42 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %43 = load <16 x i8>, <16 x i8> addrspace(2)* %42, align 16, !invariant.load !0 %44 = call float @llvm.SI.load.const(<16 x i8> %43, i32 100) %45 = call float @llvm.SI.load.const(<16 x i8> %43, i32 72) %46 = call float @llvm.SI.load.const(<16 x i8> %43, i32 88) %47 = call float @llvm.SI.load.const(<16 x i8> %43, i32 104) %48 = fmul float %37, %27 %49 = fmul float %38, %27 %50 = fmul float %39, %27 %51 = fmul float %40, %28 %52 = fadd float %51, %48 %53 = fmul float %41, %28 %54 = fadd float %53, %49 %55 = fmul float %44, %28 %56 = fadd float %55, %50 %57 = fmul float %45, %29 %58 = fadd float %57, %52 %59 = fmul float %46, %29 %60 = fadd float %59, %54 %61 = fmul float %47, %29 %62 = fadd float %61, %56 %63 = fmul float %58, %58 %64 = fmul float %60, %60 %65 = fadd float %64, %63 %66 = fmul float %62, %62 %67 = fadd float %65, %66 %68 = call float @llvm.sqrt.f32(float %67) %69 = fdiv float 1.000000e+00, %68, !fpmath !1 %70 = fmul float %58, %69 %71 = fmul float %60, %69 %72 = fmul float %62, %69 %73 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %74 = load <16 x i8>, <16 x i8> addrspace(2)* %73, align 16, !invariant.load !0 %75 = call float @llvm.SI.load.const(<16 x i8> %74, i32 144) %76 = fmul float %75, %20 %77 = call float @llvm.SI.load.const(<16 x i8> %74, i32 148) %78 = fmul float %77, %20 %79 = call float @llvm.SI.load.const(<16 x i8> %74, i32 152) %80 = fmul float %79, %20 %81 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %82 = load <16 x i8>, <16 x i8> addrspace(2)* %81, align 16, !invariant.load !0 %83 = call float @llvm.SI.load.const(<16 x i8> %82, i32 156) %84 = fmul float %83, %20 %85 = call float @llvm.SI.load.const(<16 x i8> %82, i32 160) %86 = fmul float %85, %21 %87 = fadd float %86, %76 %88 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %89 = load <16 x i8>, <16 x i8> addrspace(2)* %88, align 16, !invariant.load !0 %90 = call float @llvm.SI.load.const(<16 x i8> %89, i32 164) %91 = fmul float %90, %21 %92 = fadd float %91, %78 %93 = call float @llvm.SI.load.const(<16 x i8> %89, i32 168) %94 = fmul float %93, %21 %95 = fadd float %94, %80 %96 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %97 = load <16 x i8>, <16 x i8> addrspace(2)* %96, align 16, !invariant.load !0 %98 = call float @llvm.SI.load.const(<16 x i8> %97, i32 172) %99 = fmul float %98, %21 %100 = fadd float %99, %84 %101 = call float @llvm.SI.load.const(<16 x i8> %97, i32 176) %102 = fmul float %101, %22 %103 = fadd float %102, %87 %104 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %105 = load <16 x i8>, <16 x i8> addrspace(2)* %104, align 16, !invariant.load !0 %106 = call float @llvm.SI.load.const(<16 x i8> %105, i32 180) %107 = fmul float %106, %22 %108 = fadd float %107, %92 %109 = call float @llvm.SI.load.const(<16 x i8> %105, i32 184) %110 = fmul float %109, %22 %111 = fadd float %110, %95 %112 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %113 = load <16 x i8>, <16 x i8> addrspace(2)* %112, align 16, !invariant.load !0 %114 = call float @llvm.SI.load.const(<16 x i8> %113, i32 188) %115 = fmul float %114, %22 %116 = fadd float %115, %100 %117 = call float @llvm.SI.load.const(<16 x i8> %113, i32 192) %118 = fmul float %117, %23 %119 = fadd float %118, %103 %120 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %121 = load <16 x i8>, <16 x i8> addrspace(2)* %120, align 16, !invariant.load !0 %122 = call float @llvm.SI.load.const(<16 x i8> %121, i32 196) %123 = fmul float %122, %23 %124 = fadd float %123, %108 %125 = call float @llvm.SI.load.const(<16 x i8> %121, i32 200) %126 = fmul float %125, %23 %127 = fadd float %126, %111 %128 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %129 = load <16 x i8>, <16 x i8> addrspace(2)* %128, align 16, !invariant.load !0 %130 = call float @llvm.SI.load.const(<16 x i8> %129, i32 204) %131 = fmul float %130, %23 %132 = fadd float %131, %116 %133 = call float @llvm.SI.load.const(<16 x i8> %129, i32 128) %134 = call float @llvm.SI.load.const(<16 x i8> %129, i32 136) %135 = fmul float %33, %133 %136 = fadd float %135, %134 %137 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %138 = load <16 x i8>, <16 x i8> addrspace(2)* %137, align 16, !invariant.load !0 %139 = call float @llvm.SI.load.const(<16 x i8> %138, i32 132) %140 = call float @llvm.SI.load.const(<16 x i8> %138, i32 140) %141 = fmul float %34, %139 %142 = fadd float %141, %140 %143 = call float @llvm.SI.load.const(<16 x i8> %138, i32 0) %144 = fmul float %143, %20 %145 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %146 = load <16 x i8>, <16 x i8> addrspace(2)* %145, align 16, !invariant.load !0 %147 = call float @llvm.SI.load.const(<16 x i8> %146, i32 4) %148 = fmul float %147, %20 %149 = call float @llvm.SI.load.const(<16 x i8> %146, i32 8) %150 = fmul float %149, %20 %151 = call float @llvm.SI.load.const(<16 x i8> %146, i32 16) %152 = fmul float %151, %21 %153 = fadd float %152, %144 %154 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %155 = load <16 x i8>, <16 x i8> addrspace(2)* %154, align 16, !invariant.load !0 %156 = call float @llvm.SI.load.const(<16 x i8> %155, i32 20) %157 = fmul float %156, %21 %158 = fadd float %157, %148 %159 = call float @llvm.SI.load.const(<16 x i8> %155, i32 24) %160 = fmul float %159, %21 %161 = fadd float %160, %150 %162 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %163 = load <16 x i8>, <16 x i8> addrspace(2)* %162, align 16, !invariant.load !0 %164 = call float @llvm.SI.load.const(<16 x i8> %163, i32 32) %165 = fmul float %164, %22 %166 = fadd float %165, %153 %167 = call float @llvm.SI.load.const(<16 x i8> %163, i32 36) %168 = fmul float %167, %22 %169 = fadd float %168, %158 %170 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %171 = load <16 x i8>, <16 x i8> addrspace(2)* %170, align 16, !invariant.load !0 %172 = call float @llvm.SI.load.const(<16 x i8> %171, i32 40) %173 = fmul float %172, %22 %174 = fadd float %173, %161 %175 = call float @llvm.SI.load.const(<16 x i8> %171, i32 48) %176 = fmul float %175, %23 %177 = fadd float %176, %166 %178 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %179 = load <16 x i8>, <16 x i8> addrspace(2)* %178, align 16, !invariant.load !0 %180 = call float @llvm.SI.load.const(<16 x i8> %179, i32 52) %181 = fmul float %180, %23 %182 = fadd float %181, %169 %183 = call float @llvm.SI.load.const(<16 x i8> %179, i32 56) %184 = fmul float %183, %23 %185 = fadd float %184, %174 %186 = bitcast i32 %12 to float %187 = insertvalue <{ float, float, float }> undef, float %186, 2 call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 32, i32 0, float %136, float %142, float %70, float %71) call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 33, i32 0, float %72, float %177, float %182, float %185) call void @llvm.SI.export(i32 15, i32 0, i32 1, i32 12, i32 0, float %119, float %124, float %127, float %132) ret <{ float, float, float }> %187 } ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.vs.load.input(<16 x i8>, i32, i32) #0 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #0 ; Function Attrs: nounwind readnone declare float @llvm.sqrt.f32(float) #0 ; Function Attrs: nounwind declare void @llvm.SI.export(i32, i32, i32, i32, i32, float, float, float, float) #1 attributes #0 = { nounwind readnone } attributes #1 = { nounwind } !0 = !{} !1 = !{float 2.500000e+00} FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL IN[1], GENERIC[1], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL SAMP[2] DCL SVIEW[0], CUBE, FLOAT DCL SVIEW[1], CUBE, FLOAT DCL SVIEW[2], 2D, FLOAT DCL CONST[0..7] DCL CONST[9] DCL CONST[11..14] DCL CONST[16..18] DCL TEMP[0..10], LOCAL IMM[0] FLT32 { 0.0000, 2.0000, 1.0000, 1.2500} IMM[1] FLT32 { 3.0000, 0.0000, 1.4427, 4.0000} IMM[2] FLT32 { 0.5000, 1.2000, 1.7000, 0.0000} IMM[3] INT32 {1, 0, 0, 0} 0: MOV TEMP[0].xy, IN[0].zwzz 1: MOV TEMP[0].z, IN[1].xxxx 2: ADD TEMP[1].xyz, CONST[0].xyzz, -IN[1].yzww 3: DP3 TEMP[2].x, TEMP[1].xyzz, TEMP[1].xyzz 4: RSQ TEMP[2].x, TEMP[2].xxxx 5: MUL TEMP[1].z, TEMP[1].xyzz, TEMP[2].xxxx 6: MOV TEMP[2].xy, IN[0].xyyy 7: TEX TEMP[2], TEMP[2], SAMP[2], 2D 8: MUL TEMP[2], TEMP[2], CONST[16] 9: MUL TEMP[3].xyz, TEMP[2].xyzz, IMM[0].yyyy 10: MOV TEMP[4].w, IMM[0].zzzz 11: MOV TEMP[4].xyz, TEMP[3].xyzx 12: DP3 TEMP[5].x, TEMP[0].xyzz, TEMP[0].xyzz 13: RSQ TEMP[5].x, TEMP[5].xxxx 14: MUL TEMP[5].y, TEMP[0].xyzz, TEMP[5].xxxx 15: MOV TEMP[6], CONST[4] 16: FSLT TEMP[7].x, IMM[0].xxxx, TEMP[5].yyyy 17: UIF TEMP[7].xxxx :0 18: MOV_SAT TEMP[7].x, TEMP[5].yyyy 19: MUL TEMP[7].x, TEMP[7].xxxx, IMM[0].wwww 20: MOV_SAT TEMP[7].x, TEMP[7].xxxx 21: MUL TEMP[8].x, IMM[0].yyyy, TEMP[7].xxxx 22: ADD TEMP[8].x, IMM[1].xxxx, -TEMP[8].xxxx 23: MUL TEMP[8].x, TEMP[7].xxxx, TEMP[8].xxxx 24: MUL TEMP[7].x, TEMP[7].xxxx, TEMP[8].xxxx 25: LRP TEMP[6], TEMP[7].xxxx, CONST[3], CONST[4] 26: ELSE :0 27: MOV_SAT TEMP[5].x, -TEMP[5].yyyy 28: MUL TEMP[5].x, TEMP[5].xxxx, IMM[0].wwww 29: MOV_SAT TEMP[5].x, TEMP[5].xxxx 30: MUL TEMP[7].x, IMM[0].yyyy, TEMP[5].xxxx 31: ADD TEMP[7].x, IMM[1].xxxx, -TEMP[7].xxxx 32: MUL TEMP[7].x, TEMP[5].xxxx, TEMP[7].xxxx 33: MUL TEMP[5].x, TEMP[5].xxxx, TEMP[7].xxxx 34: LRP TEMP[6], TEMP[5].xxxx, CONST[5], TEMP[6] 35: ENDIF 36: MUL TEMP[4], TEMP[6], TEMP[4] 37: MUL TEMP[5].x, IMM[0].yyyy, CONST[6].xxxx 38: MUL TEMP[4].xyz, TEMP[4], TEMP[5].xxxx 39: MAD TEMP[1].x, TEMP[1].zzzz, IMM[1].yyyy, TEMP[2].wwww 40: FSLT TEMP[2].x, TEMP[1].xxxx, CONST[18].xxxx 41: AND TEMP[2].x, TEMP[2].xxxx, IMM[0].zzzz 42: KILL_IF -TEMP[2].xxxx 43: MUL TEMP[2].xyz, TEMP[3].xyzz, CONST[2].xyzz 44: DP3 TEMP[3].x, TEMP[0].xyzz, TEMP[0].xyzz 45: RSQ TEMP[3].x, TEMP[3].xxxx 46: MUL TEMP[0].xyz, TEMP[0].xyzz, TEMP[3].xxxx 47: DP3 TEMP[3].x, CONST[1].xyzz, CONST[1].xyzz 48: RSQ TEMP[3].x, TEMP[3].xxxx 49: MUL TEMP[3].xyz, CONST[1].xyzz, TEMP[3].xxxx 50: DP3 TEMP[0].x, TEMP[0].xyzz, TEMP[3].xyzz 51: MAX TEMP[0].x, IMM[0].xxxx, TEMP[0].xxxx 52: MUL TEMP[0].xyz, TEMP[2].xyzz, TEMP[0].xxxx 53: ADD TEMP[0].xyz, TEMP[0].xyzz, TEMP[4].xyzz 54: ADD TEMP[2].xyz, IN[1].yzww, -CONST[0].xyzz 55: DP3 TEMP[3].x, TEMP[2].xyzz, TEMP[2].xyzz 56: SQRT TEMP[3].x, TEMP[3].xxxx 57: DP3 TEMP[4].x, TEMP[2].xyzz, TEMP[2].xyzz 58: RSQ TEMP[4].x, TEMP[4].xxxx 59: MUL TEMP[2].xyz, TEMP[2].xyzz, TEMP[4].xxxx 60: MOV TEMP[4].x, -CONST[14].xxxx 61: MUL TEMP[5].x, TEMP[4].xxxx, IMM[1].zzzz 62: EX2 TEMP[5].x, TEMP[5].xxxx 63: ADD TEMP[5].x, IMM[0].zzzz, -TEMP[5].xxxx 64: ADD TEMP[6].x, CONST[13].wwww, -CONST[13].zzzz 65: ADD TEMP[6].x, TEMP[3].xxxx, -TEMP[6].xxxx 66: RCP TEMP[7].x, CONST[13].zzzz 67: MUL TEMP[6].x, TEMP[6].xxxx, TEMP[7].xxxx 68: MOV_SAT TEMP[6].x, TEMP[6].xxxx 69: MUL TEMP[6].x, TEMP[6].xxxx, TEMP[4].xxxx 70: MUL TEMP[6].x, TEMP[6].xxxx, IMM[1].zzzz 71: EX2 TEMP[6].x, TEMP[6].xxxx 72: ADD TEMP[6].x, IMM[0].zzzz, -TEMP[6].xxxx 73: RCP TEMP[7].x, TEMP[5].xxxx 74: MUL TEMP[6].x, TEMP[6].xxxx, TEMP[7].xxxx 75: MOV_SAT TEMP[6].x, TEMP[6].xxxx 76: ADD TEMP[7].x, TEMP[3].xxxx, -CONST[13].xxxx 77: RCP TEMP[8].x, CONST[13].yyyy 78: MUL TEMP[7].x, TEMP[7].xxxx, TEMP[8].xxxx 79: MOV_SAT TEMP[7].x, TEMP[7].xxxx 80: MUL TEMP[4].x, TEMP[7].xxxx, TEMP[4].xxxx 81: MUL TEMP[4].x, TEMP[4].xxxx, IMM[1].zzzz 82: EX2 TEMP[4].x, TEMP[4].xxxx 83: ADD TEMP[4].x, IMM[0].zzzz, -TEMP[4].xxxx 84: RCP TEMP[5].x, TEMP[5].xxxx 85: MUL TEMP[4].x, TEMP[4].xxxx, TEMP[5].xxxx 86: MOV_SAT TEMP[4].x, TEMP[4].xxxx 87: MOV TEMP[5].xyz, TEMP[2].xyzz 88: TEX TEMP[5], TEMP[5], SAMP[1], CUBE 89: MUL TEMP[5], TEMP[5], CONST[9] 90: DP3 TEMP[7].x, TEMP[2].xyzz, TEMP[2].xyzz 91: RSQ TEMP[7].x, TEMP[7].xxxx 92: MUL TEMP[7].y, TEMP[2].xyzz, TEMP[7].xxxx 93: MOV TEMP[8], CONST[4] 94: FSLT TEMP[9].x, IMM[0].xxxx, TEMP[7].yyyy 95: UIF TEMP[9].xxxx :0 96: MOV_SAT TEMP[9].x, TEMP[7].yyyy 97: MUL TEMP[9].x, TEMP[9].xxxx, IMM[0].wwww 98: MOV_SAT TEMP[9].x, TEMP[9].xxxx 99: MUL TEMP[10].x, IMM[0].yyyy, TEMP[9].xxxx 100: ADD TEMP[10].x, IMM[1].xxxx, -TEMP[10].xxxx 101: MUL TEMP[10].x, TEMP[9].xxxx, TEMP[10].xxxx 102: MUL TEMP[9].x, TEMP[9].xxxx, TEMP[10].xxxx 103: LRP TEMP[8], TEMP[9].xxxx, CONST[3], CONST[4] 104: ELSE :0 105: MOV_SAT TEMP[7].x, -TEMP[7].yyyy 106: MUL TEMP[7].x, TEMP[7].xxxx, IMM[0].wwww 107: MOV_SAT TEMP[7].x, TEMP[7].xxxx 108: MUL TEMP[9].x, IMM[0].yyyy, TEMP[7].xxxx 109: ADD TEMP[9].x, IMM[1].xxxx, -TEMP[9].xxxx 110: MUL TEMP[9].x, TEMP[7].xxxx, TEMP[9].xxxx 111: MUL TEMP[7].x, TEMP[7].xxxx, TEMP[9].xxxx 112: LRP TEMP[8], TEMP[7].xxxx, CONST[5], TEMP[8] 113: ENDIF 114: DP3 TEMP[7].x, TEMP[2].xyzz, TEMP[2].xyzz 115: RSQ TEMP[7].x, TEMP[7].xxxx 116: MUL TEMP[7].xyz, TEMP[2].xyzz, TEMP[7].xxxx 117: MUL TEMP[7].xyz, TEMP[7].xyzz, CONST[13].wwww 118: MUL TEMP[7].xyz, TEMP[7].xyzz, IMM[1].wwww 119: MOV TEMP[9].xz, TEMP[7].xxzx 120: ADD TEMP[7].x, TEMP[7].yyyy, CONST[0].yyyy 121: MOV TEMP[9].y, TEMP[7].xxxx 122: MOV TEMP[7].xyz, TEMP[9].xyzz 123: TEX TEMP[7], TEMP[7], SAMP[0], CUBE 124: MUL TEMP[7].xyz, TEMP[7], CONST[7] 125: MUL TEMP[7].xyz, TEMP[7].xyzz, IMM[0].yyyy 126: LRP TEMP[6].xyz, TEMP[6].xxxx, TEMP[7].xyzz, CONST[12].xyzz 127: MUL TEMP[5].xyz, TEMP[5].xyzz, IMM[2].xxxx 128: MUL TEMP[7], TEMP[8], CONST[7] 129: MUL TEMP[8].x, IMM[0].yyyy, CONST[6].xxxx 130: MUL TEMP[7].xyz, TEMP[7], TEMP[8].xxxx 131: MAD TEMP[5].xyz, TEMP[7].xyzz, IMM[2].xxxx, TEMP[5].xyzz 132: MUL TEMP[7].x, TEMP[3].xxxx, CONST[14].zzzz 133: MUL TEMP[7].x, TEMP[7].xxxx, IMM[2].zzzz 134: MUL TEMP[7].x, -TEMP[7].xxxx, IMM[1].zzzz 135: EX2 TEMP[7].x, TEMP[7].xxxx 136: ADD TEMP[7].x, IMM[2].yyyy, -TEMP[7].xxxx 137: MUL TEMP[7].x, TEMP[5].wwww, TEMP[7].xxxx 138: MUL TEMP[7].x, TEMP[7].xxxx, IMM[0].wwww 139: MOV_SAT TEMP[7].x, TEMP[7].xxxx 140: LRP TEMP[2].xyz, TEMP[7].xxxx, TEMP[5].xyzz, TEMP[6].xyzz 141: MAX TEMP[4].x, TEMP[4].xxxx, TEMP[7].xxxx 142: MOV TEMP[2].w, TEMP[4].xxxx 143: FSLT TEMP[5].x, IMM[0].xxxx, CONST[11].yyyy 144: UIF TEMP[5].xxxx :0 145: MOV TEMP[5].xyz, IMM[0].xzxx 146: MOV TEMP[5].w, CONST[11].xxxx 147: MOV TEMP[6].w, IMM[0].zzzz 148: MOV TEMP[6].xyz, CONST[0].xyzx 149: DP4 TEMP[6].x, TEMP[5], TEMP[6] 150: FSGE TEMP[7].x, IMM[0].xxxx, TEMP[6].xxxx 151: UIF TEMP[7].xxxx :0 152: MOV TEMP[7].x, IMM[3].xxxx 153: ELSE :0 154: MOV TEMP[7].x, IMM[3].yyyy 155: ENDIF 156: I2F TEMP[7].x, TEMP[7].xxxx 157: MOV TEMP[8].w, IMM[0].zzzz 158: MOV TEMP[8].xyz, IN[1].yzwy 159: DP4 TEMP[8].x, TEMP[5], TEMP[8] 160: MOV TEMP[9].w, IMM[0].xxxx 161: ADD TEMP[9].xyz, CONST[0].xyzz, -IN[1].yzww 162: MUL TEMP[10].x, IMM[0].yyyy, TEMP[7].xxxx 163: ADD TEMP[10].x, IMM[0].zzzz, -TEMP[10].xxxx 164: MUL TEMP[10].x, TEMP[10].xxxx, TEMP[8].xxxx 165: MIN TEMP[10].x, IMM[0].xxxx, TEMP[10].xxxx 166: MUL TEMP[3].x, CONST[11].zzzz, TEMP[3].xxxx 167: ADD TEMP[6].x, TEMP[8].xxxx, TEMP[6].xxxx 168: MUL TEMP[8].x, TEMP[10].xxxx, TEMP[10].xxxx 169: DP4 TEMP[5].x, TEMP[5], TEMP[9] 170: ABS TEMP[5].x, TEMP[5].xxxx 171: RCP TEMP[5].x, TEMP[5].xxxx 172: MUL TEMP[5].x, TEMP[8].xxxx, TEMP[5].xxxx 173: MAD TEMP[5].x, TEMP[7].xxxx, TEMP[6].xxxx, -TEMP[5].xxxx 174: MUL TEMP[3].x, -TEMP[3].xxxx, TEMP[5].xxxx 175: MUL TEMP[3].x, -TEMP[3].xxxx, CONST[11].yyyy 176: MUL TEMP[3].x, TEMP[3].xxxx, IMM[1].zzzz 177: EX2 TEMP[3].x, TEMP[3].xxxx 178: MOV_SAT TEMP[3].x, TEMP[3].xxxx 179: ADD TEMP[3].x, IMM[0].zzzz, -TEMP[3].xxxx 180: MAX TEMP[3].x, TEMP[4].xxxx, TEMP[3].xxxx 181: MOV TEMP[2].w, TEMP[3].xxxx 182: ENDIF 183: MOV_SAT TEMP[3].x, TEMP[2].wwww 184: LRP TEMP[0].xyz, TEMP[3].xxxx, TEMP[2].xyzz, TEMP[0].xyzz 185: MOV_SAT TEMP[2].x, TEMP[2].wwww 186: ADD TEMP[2].x, IMM[0].zzzz, -TEMP[2].xxxx 187: MUL TEMP[1].x, TEMP[1].xxxx, TEMP[2].xxxx 188: MOV TEMP[0].w, TEMP[1].xxxx 189: MOV OUT[0], TEMP[0] 190: END radeonsi: Compiling shader 46 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_ps <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), float inreg, i32 inreg, <2 x i32>, <2 x i32>, <2 x i32>, <3 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, float, float, float, float, float, i32, i32, float, i32) #0 { main_body: %23 = call float @llvm.SI.fs.interp(i32 2, i32 0, i32 %6, <2 x i32> %8) %24 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %6, <2 x i32> %8) %25 = call float @llvm.SI.fs.interp(i32 0, i32 1, i32 %6, <2 x i32> %8) %26 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %27 = load <16 x i8>, <16 x i8> addrspace(2)* %26, align 16, !invariant.load !0 %28 = call float @llvm.SI.load.const(<16 x i8> %27, i32 0) %29 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %30 = fsub float %28, %29 %31 = call float @llvm.SI.load.const(<16 x i8> %27, i32 4) %32 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %33 = fsub float %31, %32 %34 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %35 = load <16 x i8>, <16 x i8> addrspace(2)* %34, align 16, !invariant.load !0 %36 = call float @llvm.SI.load.const(<16 x i8> %35, i32 8) %37 = call float @llvm.SI.fs.interp(i32 3, i32 1, i32 %6, <2 x i32> %8) %38 = fsub float %36, %37 %39 = fmul float %30, %30 %40 = fmul float %33, %33 %41 = fadd float %40, %39 %42 = fmul float %38, %38 %43 = fadd float %41, %42 %44 = call float @llvm.sqrt.f32(float %43) %45 = fdiv float 1.000000e+00, %44, !fpmath !1 %46 = fmul float %38, %45 %47 = call float @llvm.SI.fs.interp(i32 0, i32 0, i32 %6, <2 x i32> %8) %48 = call float @llvm.SI.fs.interp(i32 1, i32 0, i32 %6, <2 x i32> %8) %49 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 4, !amdgpu.uniform !0 %50 = load <8 x i32>, <8 x i32> addrspace(2)* %49, align 32, !invariant.load !0 %51 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %52 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %51, i64 0, i64 11, !amdgpu.uniform !0 %53 = load <4 x i32>, <4 x i32> addrspace(2)* %52, align 16, !invariant.load !0 %54 = bitcast float %47 to i32 %55 = bitcast float %48 to i32 %56 = insertelement <2 x i32> undef, i32 %54, i32 0 %57 = insertelement <2 x i32> %56, i32 %55, i32 1 %58 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %57, <8 x i32> %50, <4 x i32> %53, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %59 = extractelement <4 x float> %58, i32 0 %60 = extractelement <4 x float> %58, i32 1 %61 = extractelement <4 x float> %58, i32 2 %62 = extractelement <4 x float> %58, i32 3 %63 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %64 = load <16 x i8>, <16 x i8> addrspace(2)* %63, align 16, !invariant.load !0 %65 = call float @llvm.SI.load.const(<16 x i8> %64, i32 256) %66 = fmul float %59, %65 %67 = call float @llvm.SI.load.const(<16 x i8> %64, i32 260) %68 = fmul float %60, %67 %69 = call float @llvm.SI.load.const(<16 x i8> %64, i32 264) %70 = fmul float %61, %69 %71 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %72 = load <16 x i8>, <16 x i8> addrspace(2)* %71, align 16, !invariant.load !0 %73 = call float @llvm.SI.load.const(<16 x i8> %72, i32 268) %74 = fmul float %62, %73 %75 = fmul float %66, 2.000000e+00 %76 = fmul float %68, 2.000000e+00 %77 = fmul float %70, 2.000000e+00 %78 = fmul float %23, %23 %79 = fmul float %24, %24 %80 = fadd float %79, %78 %81 = fmul float %25, %25 %82 = fadd float %80, %81 %83 = call float @llvm.sqrt.f32(float %82) %84 = fdiv float 1.000000e+00, %83, !fpmath !1 %85 = fmul float %24, %84 %86 = fcmp ogt float %85, 0.000000e+00 br i1 %86, label %if17, label %else26 if17: ; preds = %main_body %87 = call float @llvm.AMDGPU.clamp.(float %85, float 0.000000e+00, float 1.000000e+00) %88 = fmul float %87, 1.250000e+00 %89 = call float @llvm.AMDGPU.clamp.(float %88, float 0.000000e+00, float 1.000000e+00) %90 = fmul float %89, 2.000000e+00 %91 = fsub float 3.000000e+00, %90 %92 = fmul float %89, %91 %93 = fmul float %89, %92 %94 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %95 = load <16 x i8>, <16 x i8> addrspace(2)* %94, align 16, !invariant.load !0 %96 = call float @llvm.SI.load.const(<16 x i8> %95, i32 48) %97 = call float @llvm.SI.load.const(<16 x i8> %95, i32 64) %98 = fsub float 1.000000e+00, %93 %99 = fmul float %96, %93 %100 = fmul float %97, %98 %101 = fadd float %99, %100 %102 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %103 = load <16 x i8>, <16 x i8> addrspace(2)* %102, align 16, !invariant.load !0 %104 = call float @llvm.SI.load.const(<16 x i8> %103, i32 52) %105 = call float @llvm.SI.load.const(<16 x i8> %103, i32 68) %106 = fsub float 1.000000e+00, %93 %107 = fmul float %104, %93 %108 = fmul float %105, %106 %109 = fadd float %107, %108 %110 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %111 = load <16 x i8>, <16 x i8> addrspace(2)* %110, align 16, !invariant.load !0 %112 = call float @llvm.SI.load.const(<16 x i8> %111, i32 56) %113 = call float @llvm.SI.load.const(<16 x i8> %111, i32 72) %114 = fmul float %112, %93 br label %endif35 else26: ; preds = %main_body %115 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %116 = load <16 x i8>, <16 x i8> addrspace(2)* %115, align 16, !invariant.load !0 %117 = call float @llvm.SI.load.const(<16 x i8> %116, i32 72) %118 = call float @llvm.SI.load.const(<16 x i8> %116, i32 68) %119 = call float @llvm.SI.load.const(<16 x i8> %116, i32 64) %120 = fsub float -0.000000e+00, %85 %121 = call float @llvm.AMDGPU.clamp.(float %120, float 0.000000e+00, float 1.000000e+00) %122 = fmul float %121, 1.250000e+00 %123 = call float @llvm.AMDGPU.clamp.(float %122, float 0.000000e+00, float 1.000000e+00) %124 = fmul float %123, 2.000000e+00 %125 = fsub float 3.000000e+00, %124 %126 = fmul float %123, %125 %127 = fmul float %123, %126 %128 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %129 = load <16 x i8>, <16 x i8> addrspace(2)* %128, align 16, !invariant.load !0 %130 = call float @llvm.SI.load.const(<16 x i8> %129, i32 80) %131 = fsub float 1.000000e+00, %127 %132 = fmul float %130, %127 %133 = fmul float %119, %131 %134 = fadd float %132, %133 %135 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %136 = load <16 x i8>, <16 x i8> addrspace(2)* %135, align 16, !invariant.load !0 %137 = call float @llvm.SI.load.const(<16 x i8> %136, i32 84) %138 = fsub float 1.000000e+00, %127 %139 = fmul float %137, %127 %140 = fmul float %118, %138 %141 = fadd float %139, %140 %142 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %143 = load <16 x i8>, <16 x i8> addrspace(2)* %142, align 16, !invariant.load !0 %144 = call float @llvm.SI.load.const(<16 x i8> %143, i32 88) %145 = fmul float %144, %127 br label %endif35 endif35: ; preds = %else26, %if17 %.pn = phi float [ %127, %else26 ], [ %93, %if17 ] %.sink12 = phi float [ %117, %else26 ], [ %113, %if17 ] %.sink = phi float [ %145, %else26 ], [ %114, %if17 ] %.09 = phi float [ %134, %else26 ], [ %101, %if17 ] %.08 = phi float [ %141, %else26 ], [ %109, %if17 ] %.sink13 = fsub float 1.000000e+00, %.pn %146 = fmul float %.sink12, %.sink13 %147 = fadd float %.sink, %146 %148 = fmul float %.09, %75 %149 = fmul float %.08, %76 %150 = fmul float %147, %77 %151 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %152 = load <16 x i8>, <16 x i8> addrspace(2)* %151, align 16, !invariant.load !0 %153 = call float @llvm.SI.load.const(<16 x i8> %152, i32 96) %154 = fmul float %153, 2.000000e+00 %155 = fmul float %148, %154 %156 = fmul float %149, %154 %157 = fmul float %150, %154 %158 = fmul float %46, 0x3EE4F8B580000000 %159 = fadd float %158, %74 %160 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %161 = load <16 x i8>, <16 x i8> addrspace(2)* %160, align 16, !invariant.load !0 %162 = call float @llvm.SI.load.const(<16 x i8> %161, i32 288) %163 = fcmp olt float %159, %162 %164 = select i1 %163, float -1.000000e+00, float 0.000000e+00 call void @llvm.AMDGPU.kill(float %164) %165 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %166 = load <16 x i8>, <16 x i8> addrspace(2)* %165, align 16, !invariant.load !0 %167 = call float @llvm.SI.load.const(<16 x i8> %166, i32 32) %168 = fmul float %75, %167 %169 = call float @llvm.SI.load.const(<16 x i8> %166, i32 36) %170 = fmul float %76, %169 %171 = call float @llvm.SI.load.const(<16 x i8> %166, i32 40) %172 = fmul float %77, %171 %173 = fmul float %23, %23 %174 = fmul float %24, %24 %175 = fadd float %174, %173 %176 = fmul float %25, %25 %177 = fadd float %175, %176 %178 = call float @llvm.sqrt.f32(float %177) %179 = fdiv float 1.000000e+00, %178, !fpmath !1 %180 = fmul float %23, %179 %181 = fmul float %24, %179 %182 = fmul float %25, %179 %183 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %184 = load <16 x i8>, <16 x i8> addrspace(2)* %183, align 16, !invariant.load !0 %185 = call float @llvm.SI.load.const(<16 x i8> %184, i32 16) %186 = call float @llvm.SI.load.const(<16 x i8> %184, i32 20) %187 = call float @llvm.SI.load.const(<16 x i8> %184, i32 24) %188 = call float @llvm.SI.load.const(<16 x i8> %184, i32 16) %189 = call float @llvm.SI.load.const(<16 x i8> %184, i32 20) %190 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %191 = load <16 x i8>, <16 x i8> addrspace(2)* %190, align 16, !invariant.load !0 %192 = call float @llvm.SI.load.const(<16 x i8> %191, i32 24) %193 = fmul float %185, %188 %194 = fmul float %186, %189 %195 = fadd float %194, %193 %196 = fmul float %187, %192 %197 = fadd float %195, %196 %198 = call float @llvm.sqrt.f32(float %197) %199 = fdiv float 1.000000e+00, %198, !fpmath !1 %200 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %201 = load <16 x i8>, <16 x i8> addrspace(2)* %200, align 16, !invariant.load !0 %202 = call float @llvm.SI.load.const(<16 x i8> %201, i32 16) %203 = fmul float %202, %199 %204 = call float @llvm.SI.load.const(<16 x i8> %201, i32 20) %205 = fmul float %204, %199 %206 = call float @llvm.SI.load.const(<16 x i8> %201, i32 24) %207 = fmul float %206, %199 %208 = fmul float %180, %203 %209 = fmul float %181, %205 %210 = fadd float %209, %208 %211 = fmul float %182, %207 %212 = fadd float %210, %211 %213 = call float @llvm.maxnum.f32(float %212, float 0.000000e+00) %214 = fmul float %168, %213 %215 = fmul float %170, %213 %216 = fmul float %172, %213 %217 = fadd float %214, %155 %218 = fadd float %215, %156 %219 = fadd float %216, %157 %220 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %221 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %222 = load <16 x i8>, <16 x i8> addrspace(2)* %221, align 16, !invariant.load !0 %223 = call float @llvm.SI.load.const(<16 x i8> %222, i32 0) %224 = fsub float %220, %223 %225 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %226 = call float @llvm.SI.load.const(<16 x i8> %222, i32 4) %227 = fsub float %225, %226 %228 = call float @llvm.SI.fs.interp(i32 3, i32 1, i32 %6, <2 x i32> %8) %229 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %230 = load <16 x i8>, <16 x i8> addrspace(2)* %229, align 16, !invariant.load !0 %231 = call float @llvm.SI.load.const(<16 x i8> %230, i32 8) %232 = fsub float %228, %231 %233 = fmul float %224, %224 %234 = fmul float %227, %227 %235 = fadd float %234, %233 %236 = fmul float %232, %232 %237 = fadd float %235, %236 %238 = call float @llvm.sqrt.f32(float %237) %239 = fmul float %224, %224 %240 = fmul float %227, %227 %241 = fadd float %240, %239 %242 = fmul float %232, %232 %243 = fadd float %241, %242 %244 = call float @llvm.sqrt.f32(float %243) %245 = fdiv float 1.000000e+00, %244, !fpmath !1 %246 = fmul float %224, %245 %247 = fmul float %227, %245 %248 = fmul float %232, %245 %249 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %250 = load <16 x i8>, <16 x i8> addrspace(2)* %249, align 16, !invariant.load !0 %251 = call float @llvm.SI.load.const(<16 x i8> %250, i32 224) %252 = fsub float -0.000000e+00, %251 %253 = fmul float %251, 0xBFF7154760000000 %254 = call float @llvm.exp2.f32(float %253) %255 = fsub float 1.000000e+00, %254 %256 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %257 = load <16 x i8>, <16 x i8> addrspace(2)* %256, align 16, !invariant.load !0 %258 = call float @llvm.SI.load.const(<16 x i8> %257, i32 220) %259 = call float @llvm.SI.load.const(<16 x i8> %257, i32 216) %260 = fsub float %258, %259 %261 = fsub float %238, %260 %262 = call float @llvm.SI.load.const(<16 x i8> %257, i32 216) %263 = fdiv float 1.000000e+00, %262, !fpmath !1 %264 = fmul float %261, %263 %265 = call float @llvm.AMDGPU.clamp.(float %264, float 0.000000e+00, float 1.000000e+00) %266 = fmul float %265, %252 %267 = fmul float %266, 0x3FF7154760000000 %268 = call float @llvm.exp2.f32(float %267) %269 = fsub float 1.000000e+00, %268 %270 = fdiv float 1.000000e+00, %255, !fpmath !1 %271 = fmul float %269, %270 %272 = call float @llvm.AMDGPU.clamp.(float %271, float 0.000000e+00, float 1.000000e+00) %273 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %274 = load <16 x i8>, <16 x i8> addrspace(2)* %273, align 16, !invariant.load !0 %275 = call float @llvm.SI.load.const(<16 x i8> %274, i32 208) %276 = fsub float %238, %275 %277 = call float @llvm.SI.load.const(<16 x i8> %274, i32 212) %278 = fdiv float 1.000000e+00, %277, !fpmath !1 %279 = fmul float %276, %278 %280 = call float @llvm.AMDGPU.clamp.(float %279, float 0.000000e+00, float 1.000000e+00) %281 = fmul float %280, %252 %282 = fmul float %281, 0x3FF7154760000000 %283 = call float @llvm.exp2.f32(float %282) %284 = fsub float 1.000000e+00, %283 %285 = fdiv float 1.000000e+00, %255, !fpmath !1 %286 = fmul float %284, %285 %287 = call float @llvm.AMDGPU.clamp.(float %286, float 0.000000e+00, float 1.000000e+00) %288 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 2, !amdgpu.uniform !0 %289 = load <8 x i32>, <8 x i32> addrspace(2)* %288, align 32, !invariant.load !0 %290 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %291 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %290, i64 0, i64 7, !amdgpu.uniform !0 %292 = load <4 x i32>, <4 x i32> addrspace(2)* %291, align 16, !invariant.load !0 %293 = call float @llvm.amdgcn.cubetc(float %246, float %247, float %248) %294 = call float @llvm.amdgcn.cubesc(float %246, float %247, float %248) %295 = call float @llvm.amdgcn.cubema(float %246, float %247, float %248) %296 = call float @llvm.amdgcn.cubeid(float %246, float %247, float %248) %297 = call float @llvm.fabs.f32(float %295) %298 = fdiv float 1.000000e+00, %297, !fpmath !1 %299 = fmul float %293, %298 %300 = fadd float %299, 1.500000e+00 %301 = fmul float %294, %298 %302 = fadd float %301, 1.500000e+00 %303 = bitcast float %302 to i32 %304 = bitcast float %300 to i32 %305 = bitcast float %296 to i32 %306 = insertelement <4 x i32> undef, i32 %303, i32 0 %307 = insertelement <4 x i32> %306, i32 %304, i32 1 %308 = insertelement <4 x i32> %307, i32 %305, i32 2 %309 = call <4 x float> @llvm.SI.image.sample.v4i32(<4 x i32> %308, <8 x i32> %289, <4 x i32> %292, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %310 = extractelement <4 x float> %309, i32 0 %311 = extractelement <4 x float> %309, i32 1 %312 = extractelement <4 x float> %309, i32 2 %313 = extractelement <4 x float> %309, i32 3 %314 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %315 = load <16 x i8>, <16 x i8> addrspace(2)* %314, align 16, !invariant.load !0 %316 = call float @llvm.SI.load.const(<16 x i8> %315, i32 144) %317 = fmul float %310, %316 %318 = call float @llvm.SI.load.const(<16 x i8> %315, i32 148) %319 = fmul float %311, %318 %320 = call float @llvm.SI.load.const(<16 x i8> %315, i32 152) %321 = fmul float %312, %320 %322 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %323 = load <16 x i8>, <16 x i8> addrspace(2)* %322, align 16, !invariant.load !0 %324 = call float @llvm.SI.load.const(<16 x i8> %323, i32 156) %325 = fmul float %313, %324 %326 = fmul float %246, %246 %327 = fmul float %247, %247 %328 = fadd float %327, %326 %329 = fmul float %248, %248 %330 = fadd float %328, %329 %331 = call float @llvm.sqrt.f32(float %330) %332 = fdiv float 1.000000e+00, %331, !fpmath !1 %333 = fmul float %247, %332 %334 = fcmp ogt float %333, 0.000000e+00 br i1 %334, label %if95, label %else104 if95: ; preds = %endif35 %335 = call float @llvm.AMDGPU.clamp.(float %333, float 0.000000e+00, float 1.000000e+00) %336 = fmul float %335, 1.250000e+00 %337 = call float @llvm.AMDGPU.clamp.(float %336, float 0.000000e+00, float 1.000000e+00) %338 = fmul float %337, 2.000000e+00 %339 = fsub float 3.000000e+00, %338 %340 = fmul float %337, %339 %341 = fmul float %337, %340 %342 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %343 = load <16 x i8>, <16 x i8> addrspace(2)* %342, align 16, !invariant.load !0 %344 = call float @llvm.SI.load.const(<16 x i8> %343, i32 48) %345 = call float @llvm.SI.load.const(<16 x i8> %343, i32 64) %346 = fsub float 1.000000e+00, %341 %347 = fmul float %344, %341 %348 = fmul float %345, %346 %349 = fadd float %347, %348 %350 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %351 = load <16 x i8>, <16 x i8> addrspace(2)* %350, align 16, !invariant.load !0 %352 = call float @llvm.SI.load.const(<16 x i8> %351, i32 52) %353 = call float @llvm.SI.load.const(<16 x i8> %351, i32 68) %354 = fsub float 1.000000e+00, %341 %355 = fmul float %352, %341 %356 = fmul float %353, %354 %357 = fadd float %355, %356 %358 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %359 = load <16 x i8>, <16 x i8> addrspace(2)* %358, align 16, !invariant.load !0 %360 = call float @llvm.SI.load.const(<16 x i8> %359, i32 56) %361 = call float @llvm.SI.load.const(<16 x i8> %359, i32 72) %362 = fmul float %360, %341 br label %endif113 else104: ; preds = %endif35 %363 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %364 = load <16 x i8>, <16 x i8> addrspace(2)* %363, align 16, !invariant.load !0 %365 = call float @llvm.SI.load.const(<16 x i8> %364, i32 72) %366 = call float @llvm.SI.load.const(<16 x i8> %364, i32 68) %367 = call float @llvm.SI.load.const(<16 x i8> %364, i32 64) %368 = fsub float -0.000000e+00, %333 %369 = call float @llvm.AMDGPU.clamp.(float %368, float 0.000000e+00, float 1.000000e+00) %370 = fmul float %369, 1.250000e+00 %371 = call float @llvm.AMDGPU.clamp.(float %370, float 0.000000e+00, float 1.000000e+00) %372 = fmul float %371, 2.000000e+00 %373 = fsub float 3.000000e+00, %372 %374 = fmul float %371, %373 %375 = fmul float %371, %374 %376 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %377 = load <16 x i8>, <16 x i8> addrspace(2)* %376, align 16, !invariant.load !0 %378 = call float @llvm.SI.load.const(<16 x i8> %377, i32 80) %379 = fsub float 1.000000e+00, %375 %380 = fmul float %378, %375 %381 = fmul float %367, %379 %382 = fadd float %380, %381 %383 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %384 = load <16 x i8>, <16 x i8> addrspace(2)* %383, align 16, !invariant.load !0 %385 = call float @llvm.SI.load.const(<16 x i8> %384, i32 84) %386 = fsub float 1.000000e+00, %375 %387 = fmul float %385, %375 %388 = fmul float %366, %386 %389 = fadd float %387, %388 %390 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %391 = load <16 x i8>, <16 x i8> addrspace(2)* %390, align 16, !invariant.load !0 %392 = call float @llvm.SI.load.const(<16 x i8> %391, i32 88) %393 = fmul float %392, %375 br label %endif113 endif113: ; preds = %else104, %if95 %.pn18 = phi float [ %375, %else104 ], [ %341, %if95 ] %.sink16 = phi float [ %365, %else104 ], [ %361, %if95 ] %.sink14 = phi float [ %393, %else104 ], [ %362, %if95 ] %.04 = phi float [ %382, %else104 ], [ %349, %if95 ] %.03 = phi float [ %389, %else104 ], [ %357, %if95 ] %.sink17 = fsub float 1.000000e+00, %.pn18 %394 = fmul float %.sink16, %.sink17 %395 = fadd float %.sink14, %394 %396 = fmul float %246, %246 %397 = fmul float %247, %247 %398 = fadd float %397, %396 %399 = fmul float %248, %248 %400 = fadd float %398, %399 %401 = call float @llvm.sqrt.f32(float %400) %402 = fdiv float 1.000000e+00, %401, !fpmath !1 %403 = fmul float %246, %402 %404 = fmul float %247, %402 %405 = fmul float %248, %402 %406 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %407 = load <16 x i8>, <16 x i8> addrspace(2)* %406, align 16, !invariant.load !0 %408 = call float @llvm.SI.load.const(<16 x i8> %407, i32 220) %409 = fmul float %403, %408 %410 = call float @llvm.SI.load.const(<16 x i8> %407, i32 220) %411 = fmul float %404, %410 %412 = call float @llvm.SI.load.const(<16 x i8> %407, i32 220) %413 = fmul float %405, %412 %414 = fmul float %409, 4.000000e+00 %415 = fmul float %411, 4.000000e+00 %416 = fmul float %413, 4.000000e+00 %417 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %418 = load <16 x i8>, <16 x i8> addrspace(2)* %417, align 16, !invariant.load !0 %419 = call float @llvm.SI.load.const(<16 x i8> %418, i32 4) %420 = fadd float %415, %419 %421 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 0, !amdgpu.uniform !0 %422 = load <8 x i32>, <8 x i32> addrspace(2)* %421, align 32, !invariant.load !0 %423 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %424 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %423, i64 0, i64 3, !amdgpu.uniform !0 %425 = load <4 x i32>, <4 x i32> addrspace(2)* %424, align 16, !invariant.load !0 %426 = call float @llvm.amdgcn.cubetc(float %414, float %420, float %416) %427 = call float @llvm.amdgcn.cubesc(float %414, float %420, float %416) %428 = call float @llvm.amdgcn.cubema(float %414, float %420, float %416) %429 = call float @llvm.amdgcn.cubeid(float %414, float %420, float %416) %430 = call float @llvm.fabs.f32(float %428) %431 = fdiv float 1.000000e+00, %430, !fpmath !1 %432 = fmul float %426, %431 %433 = fadd float %432, 1.500000e+00 %434 = fmul float %427, %431 %435 = fadd float %434, 1.500000e+00 %436 = bitcast float %435 to i32 %437 = bitcast float %433 to i32 %438 = bitcast float %429 to i32 %439 = insertelement <4 x i32> undef, i32 %436, i32 0 %440 = insertelement <4 x i32> %439, i32 %437, i32 1 %441 = insertelement <4 x i32> %440, i32 %438, i32 2 %442 = call <4 x float> @llvm.SI.image.sample.v4i32(<4 x i32> %441, <8 x i32> %422, <4 x i32> %425, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %443 = extractelement <4 x float> %442, i32 0 %444 = extractelement <4 x float> %442, i32 1 %445 = extractelement <4 x float> %442, i32 2 %446 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %447 = load <16 x i8>, <16 x i8> addrspace(2)* %446, align 16, !invariant.load !0 %448 = call float @llvm.SI.load.const(<16 x i8> %447, i32 112) %449 = fmul float %443, %448 %450 = call float @llvm.SI.load.const(<16 x i8> %447, i32 116) %451 = fmul float %444, %450 %452 = call float @llvm.SI.load.const(<16 x i8> %447, i32 120) %453 = fmul float %445, %452 %454 = fmul float %449, 2.000000e+00 %455 = fmul float %451, 2.000000e+00 %456 = fmul float %453, 2.000000e+00 %457 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %458 = load <16 x i8>, <16 x i8> addrspace(2)* %457, align 16, !invariant.load !0 %459 = call float @llvm.SI.load.const(<16 x i8> %458, i32 192) %460 = fsub float 1.000000e+00, %272 %461 = fmul float %454, %272 %462 = fmul float %459, %460 %463 = fadd float %461, %462 %464 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %465 = load <16 x i8>, <16 x i8> addrspace(2)* %464, align 16, !invariant.load !0 %466 = call float @llvm.SI.load.const(<16 x i8> %465, i32 196) %467 = fsub float 1.000000e+00, %272 %468 = fmul float %455, %272 %469 = fmul float %466, %467 %470 = fadd float %468, %469 %471 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %472 = load <16 x i8>, <16 x i8> addrspace(2)* %471, align 16, !invariant.load !0 %473 = call float @llvm.SI.load.const(<16 x i8> %472, i32 200) %474 = fsub float 1.000000e+00, %272 %475 = fmul float %456, %272 %476 = fmul float %473, %474 %477 = fadd float %475, %476 %478 = fmul float %317, 5.000000e-01 %479 = fmul float %319, 5.000000e-01 %480 = fmul float %321, 5.000000e-01 %481 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %482 = load <16 x i8>, <16 x i8> addrspace(2)* %481, align 16, !invariant.load !0 %483 = call float @llvm.SI.load.const(<16 x i8> %482, i32 112) %484 = fmul float %.04, %483 %485 = call float @llvm.SI.load.const(<16 x i8> %482, i32 116) %486 = fmul float %.03, %485 %487 = call float @llvm.SI.load.const(<16 x i8> %482, i32 120) %488 = fmul float %395, %487 %489 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %490 = load <16 x i8>, <16 x i8> addrspace(2)* %489, align 16, !invariant.load !0 %491 = call float @llvm.SI.load.const(<16 x i8> %490, i32 96) %492 = fmul float %491, 2.000000e+00 %493 = fmul float %484, %492 %494 = fmul float %486, %492 %495 = fmul float %488, %492 %496 = fmul float %493, 5.000000e-01 %497 = fadd float %496, %478 %498 = fmul float %494, 5.000000e-01 %499 = fadd float %498, %479 %500 = fmul float %495, 5.000000e-01 %501 = fadd float %500, %480 %502 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %503 = load <16 x i8>, <16 x i8> addrspace(2)* %502, align 16, !invariant.load !0 %504 = call float @llvm.SI.load.const(<16 x i8> %503, i32 232) %505 = fmul float %238, %504 %506 = fmul float %505, 0x3FFB333340000000 %507 = fmul float %506, 0xBFF7154760000000 %508 = call float @llvm.exp2.f32(float %507) %509 = fsub float 0x3FF3333340000000, %508 %510 = fmul float %325, %509 %511 = fmul float %510, 1.250000e+00 %512 = call float @llvm.AMDGPU.clamp.(float %511, float 0.000000e+00, float 1.000000e+00) %513 = fsub float 1.000000e+00, %512 %514 = fmul float %497, %512 %515 = fmul float %463, %513 %516 = fadd float %514, %515 %517 = fsub float 1.000000e+00, %512 %518 = fmul float %499, %512 %519 = fmul float %470, %517 %520 = fadd float %518, %519 %521 = fsub float 1.000000e+00, %512 %522 = fmul float %501, %512 %523 = fmul float %477, %521 %524 = fadd float %522, %523 %525 = call float @llvm.maxnum.f32(float %287, float %512) %526 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %527 = load <16 x i8>, <16 x i8> addrspace(2)* %526, align 16, !invariant.load !0 %528 = call float @llvm.SI.load.const(<16 x i8> %527, i32 180) %529 = fcmp ogt float %528, 0.000000e+00 br i1 %529, label %if144, label %endif182 if144: ; preds = %endif113 %530 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %531 = load <16 x i8>, <16 x i8> addrspace(2)* %530, align 16, !invariant.load !0 %532 = call float @llvm.SI.load.const(<16 x i8> %531, i32 176) %533 = call float @llvm.SI.load.const(<16 x i8> %531, i32 0) %534 = call float @llvm.SI.load.const(<16 x i8> %531, i32 4) %535 = call float @llvm.SI.load.const(<16 x i8> %531, i32 8) %536 = fmul float %533, 0.000000e+00 %537 = fadd float %536, %534 %538 = fmul float %535, 0.000000e+00 %539 = fadd float %537, %538 %540 = fadd float %539, %532 %541 = fcmp ole float %540, 0.000000e+00 %542 = uitofp i1 %541 to float %543 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %544 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %545 = call float @llvm.SI.fs.interp(i32 3, i32 1, i32 %6, <2 x i32> %8) %546 = fmul float %543, 0.000000e+00 %547 = fadd float %546, %544 %548 = fmul float %545, 0.000000e+00 %549 = fadd float %547, %548 %550 = fadd float %549, %532 %551 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %552 = load <16 x i8>, <16 x i8> addrspace(2)* %551, align 16, !invariant.load !0 %553 = call float @llvm.SI.load.const(<16 x i8> %552, i32 0) %554 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %555 = fsub float %553, %554 %556 = call float @llvm.SI.load.const(<16 x i8> %552, i32 4) %557 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %558 = fsub float %556, %557 %559 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %560 = load <16 x i8>, <16 x i8> addrspace(2)* %559, align 16, !invariant.load !0 %561 = call float @llvm.SI.load.const(<16 x i8> %560, i32 8) %562 = call float @llvm.SI.fs.interp(i32 3, i32 1, i32 %6, <2 x i32> %8) %563 = fsub float %561, %562 %564 = fmul float %542, 2.000000e+00 %565 = fsub float 1.000000e+00, %564 %566 = fmul float %565, %550 %567 = call float @llvm.minnum.f32(float %566, float 0.000000e+00) %568 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %569 = load <16 x i8>, <16 x i8> addrspace(2)* %568, align 16, !invariant.load !0 %570 = call float @llvm.SI.load.const(<16 x i8> %569, i32 184) %571 = fmul float %570, %238 %572 = fadd float %550, %540 %573 = fmul float %567, %567 %574 = fmul float %555, 0.000000e+00 %575 = fadd float %574, %558 %576 = fmul float %563, 0.000000e+00 %577 = fadd float %575, %576 %578 = fmul float %532, 0.000000e+00 %579 = fadd float %577, %578 %580 = call float @llvm.fabs.f32(float %579) %581 = fdiv float 1.000000e+00, %580, !fpmath !1 %582 = fmul float %573, %581 %583 = fmul float %542, %572 %584 = fsub float %583, %582 %585 = fmul float %571, %584 %586 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %587 = load <16 x i8>, <16 x i8> addrspace(2)* %586, align 16, !invariant.load !0 %588 = call float @llvm.SI.load.const(<16 x i8> %587, i32 180) %589 = fmul float %585, %588 %590 = fmul float %589, 0x3FF7154760000000 %591 = call float @llvm.exp2.f32(float %590) %592 = call float @llvm.AMDGPU.clamp.(float %591, float 0.000000e+00, float 1.000000e+00) %593 = fsub float 1.000000e+00, %592 %594 = call float @llvm.maxnum.f32(float %525, float %593) br label %endif182 endif182: ; preds = %if144, %endif113 %.010 = phi float [ %594, %if144 ], [ %525, %endif113 ] %595 = call float @llvm.AMDGPU.clamp.(float %.010, float 0.000000e+00, float 1.000000e+00) %596 = fsub float 1.000000e+00, %595 %597 = fmul float %516, %595 %598 = fmul float %217, %596 %599 = fadd float %597, %598 %600 = fsub float 1.000000e+00, %595 %601 = fmul float %520, %595 %602 = fmul float %218, %600 %603 = fadd float %601, %602 %604 = fsub float 1.000000e+00, %595 %605 = fmul float %524, %595 %606 = fmul float %219, %604 %607 = fadd float %605, %606 %608 = call float @llvm.AMDGPU.clamp.(float %.010, float 0.000000e+00, float 1.000000e+00) %609 = fsub float 1.000000e+00, %608 %610 = fmul float %159, %609 %611 = bitcast float %5 to i32 %612 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> undef, i32 %611, 10 %613 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %612, float %599, 11 %614 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %613, float %603, 12 %615 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %614, float %607, 13 %616 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %615, float %610, 14 %617 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %616, float %21, 24 ret <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %617 } ; Function Attrs: nounwind readnone declare float @llvm.SI.fs.interp(i32, i32, i32, <2 x i32>) #1 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.sqrt.f32(float) #1 ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.AMDGPU.clamp.(float, float, float) #1 ; Function Attrs: nounwind declare void @llvm.AMDGPU.kill(float) #2 ; Function Attrs: nounwind readnone declare float @llvm.maxnum.f32(float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.exp2.f32(float) #1 ; Function Attrs: nounwind readnone declare float @llvm.amdgcn.cubetc(float, float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.amdgcn.cubesc(float, float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.amdgcn.cubema(float, float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.amdgcn.cubeid(float, float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.fabs.f32(float) #1 ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.image.sample.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.minnum.f32(float, float) #1 attributes #0 = { "InitialPSInputAddr"="36983" } attributes #1 = { nounwind readnone } attributes #2 = { nounwind } !0 = !{} !1 = !{float 2.500000e+00} FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL IN[1], GENERIC[1], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL SVIEW[0], 2D, FLOAT DCL SVIEW[1], 2D, FLOAT DCL CONST[0..2] DCL CONST[4..11] DCL CONST[13..14] DCL TEMP[0..10], LOCAL IMM[0] FLT32 { 0.0000, 1.0000, 2.0000, 0.0000} IMM[1] FLT32 { 1.4427, 0.0000, 0.0000, 0.0000} IMM[2] INT32 {1, 0, 0, 0} 0: MOV TEMP[0].xy, IN[0].zwzz 1: MOV TEMP[0].z, IN[1].xxxx 2: MOV TEMP[1].xy, IN[0].xyyy 3: TEX TEMP[1], TEMP[1], SAMP[1], 2D 4: MUL TEMP[1], TEMP[1], CONST[13] 5: ADD TEMP[2].xyz, CONST[0].xyzz, -IN[1].yzww 6: DP3 TEMP[3].x, TEMP[2].xyzz, TEMP[2].xyzz 7: RSQ TEMP[3].x, TEMP[3].xxxx 8: MUL TEMP[2].z, TEMP[2].xyzz, TEMP[3].xxxx 9: MAD TEMP[2].x, TEMP[2].zzzz, IMM[0].xxxx, TEMP[1].wwww 10: FSLT TEMP[3].x, TEMP[2].xxxx, CONST[14].xxxx 11: AND TEMP[3].x, TEMP[3].xxxx, IMM[0].yyyy 12: KILL_IF -TEMP[3].xxxx 13: MUL TEMP[3], CONST[4], IN[1].yyyy 14: MAD TEMP[3], CONST[5], IN[1].zzzz, TEMP[3] 15: MAD TEMP[3], CONST[6], IN[1].wwww, TEMP[3] 16: ADD TEMP[3].xyz, TEMP[3], CONST[7] 17: ADD TEMP[4].xyz, CONST[1].xyzz, -IN[1].yzww 18: DP3 TEMP[5].x, TEMP[4].xyzz, TEMP[4].xyzz 19: RSQ TEMP[5].x, TEMP[5].xxxx 20: MUL TEMP[4].xyz, TEMP[4].xyzz, TEMP[5].xxxx 21: MUL TEMP[1].xyz, TEMP[1].xyzz, IMM[0].zzzz 22: DP3 TEMP[3].x, TEMP[3].xyzz, TEMP[3].xyzz 23: MOV TEMP[3].xy, TEMP[3].xxxx 24: TEX TEMP[3].w, TEMP[3], SAMP[0], 2D 25: MUL TEMP[3].xyz, CONST[2].xyzz, TEMP[3].wwww 26: MUL TEMP[1].xyz, TEMP[1].xyzz, TEMP[3].xyzz 27: DP3 TEMP[3].x, TEMP[0].xyzz, TEMP[0].xyzz 28: RSQ TEMP[3].x, TEMP[3].xxxx 29: MUL TEMP[0].xyz, TEMP[0].xyzz, TEMP[3].xxxx 30: DP3 TEMP[3].x, TEMP[4].xyzz, TEMP[4].xyzz 31: RSQ TEMP[3].x, TEMP[3].xxxx 32: MUL TEMP[3].xyz, TEMP[4].xyzz, TEMP[3].xxxx 33: DP3 TEMP[0].x, TEMP[0].xyzz, TEMP[3].xyzz 34: MAX TEMP[0].x, IMM[0].wwww, TEMP[0].xxxx 35: MUL TEMP[0].xyz, TEMP[1].xyzz, TEMP[0].xxxx 36: ADD TEMP[1].xyz, IN[1].yzww, -CONST[0].xyzz 37: DP3 TEMP[1].x, TEMP[1].xyzz, TEMP[1].xyzz 38: SQRT TEMP[1].x, TEMP[1].xxxx 39: MOV TEMP[3].x, -CONST[11].xxxx 40: ADD TEMP[4].x, TEMP[1].xxxx, -CONST[10].xxxx 41: RCP TEMP[5].x, CONST[10].yyyy 42: MUL TEMP[4].x, TEMP[4].xxxx, TEMP[5].xxxx 43: MOV_SAT TEMP[4].x, TEMP[4].xxxx 44: MUL TEMP[4].x, TEMP[4].xxxx, TEMP[3].xxxx 45: MUL TEMP[4].x, TEMP[4].xxxx, IMM[1].xxxx 46: EX2 TEMP[4].x, TEMP[4].xxxx 47: ADD TEMP[4].x, IMM[0].yyyy, -TEMP[4].xxxx 48: MUL TEMP[3].x, TEMP[3].xxxx, IMM[1].xxxx 49: EX2 TEMP[3].x, TEMP[3].xxxx 50: ADD TEMP[3].x, IMM[0].yyyy, -TEMP[3].xxxx 51: RCP TEMP[3].x, TEMP[3].xxxx 52: MUL TEMP[3].x, TEMP[4].xxxx, TEMP[3].xxxx 53: MOV_SAT TEMP[3].x, TEMP[3].xxxx 54: MOV TEMP[4].w, TEMP[3].xxxx 55: FSLT TEMP[5].x, IMM[0].wwww, CONST[8].yyyy 56: UIF TEMP[5].xxxx :0 57: MOV TEMP[5].xyz, IMM[0].wyww 58: MOV TEMP[5].w, CONST[8].xxxx 59: MOV TEMP[6].w, IMM[0].yyyy 60: MOV TEMP[6].xyz, CONST[0].xyzx 61: DP4 TEMP[6].x, TEMP[5], TEMP[6] 62: FSGE TEMP[7].x, IMM[0].wwww, TEMP[6].xxxx 63: UIF TEMP[7].xxxx :0 64: MOV TEMP[7].x, IMM[2].xxxx 65: ELSE :0 66: MOV TEMP[7].x, IMM[2].yyyy 67: ENDIF 68: I2F TEMP[7].x, TEMP[7].xxxx 69: MOV TEMP[8].w, IMM[0].yyyy 70: MOV TEMP[8].xyz, IN[1].yzwy 71: DP4 TEMP[8].x, TEMP[5], TEMP[8] 72: MOV TEMP[9].w, IMM[0].wwww 73: ADD TEMP[9].xyz, CONST[0].xyzz, -IN[1].yzww 74: MUL TEMP[10].x, IMM[0].zzzz, TEMP[7].xxxx 75: ADD TEMP[10].x, IMM[0].yyyy, -TEMP[10].xxxx 76: MUL TEMP[10].x, TEMP[10].xxxx, TEMP[8].xxxx 77: MIN TEMP[10].x, IMM[0].wwww, TEMP[10].xxxx 78: MUL TEMP[1].x, CONST[8].zzzz, TEMP[1].xxxx 79: ADD TEMP[6].x, TEMP[8].xxxx, TEMP[6].xxxx 80: MUL TEMP[8].x, TEMP[10].xxxx, TEMP[10].xxxx 81: DP4 TEMP[5].x, TEMP[5], TEMP[9] 82: ABS TEMP[5].x, TEMP[5].xxxx 83: RCP TEMP[5].x, TEMP[5].xxxx 84: MUL TEMP[5].x, TEMP[8].xxxx, TEMP[5].xxxx 85: MAD TEMP[5].x, TEMP[7].xxxx, TEMP[6].xxxx, -TEMP[5].xxxx 86: MUL TEMP[1].x, -TEMP[1].xxxx, TEMP[5].xxxx 87: MUL TEMP[1].x, -TEMP[1].xxxx, CONST[8].yyyy 88: MUL TEMP[1].x, TEMP[1].xxxx, IMM[1].xxxx 89: EX2 TEMP[1].x, TEMP[1].xxxx 90: MOV_SAT TEMP[1].x, TEMP[1].xxxx 91: ADD TEMP[1].x, IMM[0].yyyy, -TEMP[1].xxxx 92: MAX TEMP[1].x, TEMP[3].xxxx, TEMP[1].xxxx 93: MOV TEMP[4].w, TEMP[1].xxxx 94: ENDIF 95: MOV_SAT TEMP[1].x, TEMP[4].wwww 96: ADD TEMP[1].xyz, IMM[0].yyyy, -TEMP[1].xxxx 97: MUL TEMP[0].xyz, TEMP[0].xyzz, TEMP[1].xyzz 98: MOV_SAT TEMP[1].x, TEMP[4].wwww 99: ADD TEMP[1].x, IMM[0].yyyy, -TEMP[1].xxxx 100: MUL TEMP[1].x, TEMP[2].xxxx, TEMP[1].xxxx 101: MOV TEMP[0].w, TEMP[1].xxxx 102: MOV OUT[0], TEMP[0] 103: END radeonsi: Compiling shader 47 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_ps <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), float inreg, i32 inreg, <2 x i32>, <2 x i32>, <2 x i32>, <3 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, float, float, float, float, float, i32, i32, float, i32) #0 { main_body: %23 = call float @llvm.SI.fs.interp(i32 2, i32 0, i32 %6, <2 x i32> %8) %24 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %6, <2 x i32> %8) %25 = call float @llvm.SI.fs.interp(i32 0, i32 1, i32 %6, <2 x i32> %8) %26 = call float @llvm.SI.fs.interp(i32 0, i32 0, i32 %6, <2 x i32> %8) %27 = call float @llvm.SI.fs.interp(i32 1, i32 0, i32 %6, <2 x i32> %8) %28 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 2, !amdgpu.uniform !0 %29 = load <8 x i32>, <8 x i32> addrspace(2)* %28, align 32, !invariant.load !0 %30 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %31 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %30, i64 0, i64 7, !amdgpu.uniform !0 %32 = load <4 x i32>, <4 x i32> addrspace(2)* %31, align 16, !invariant.load !0 %33 = bitcast float %26 to i32 %34 = bitcast float %27 to i32 %35 = insertelement <2 x i32> undef, i32 %33, i32 0 %36 = insertelement <2 x i32> %35, i32 %34, i32 1 %37 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %36, <8 x i32> %29, <4 x i32> %32, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %38 = extractelement <4 x float> %37, i32 0 %39 = extractelement <4 x float> %37, i32 1 %40 = extractelement <4 x float> %37, i32 2 %41 = extractelement <4 x float> %37, i32 3 %42 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %43 = load <16 x i8>, <16 x i8> addrspace(2)* %42, align 16, !invariant.load !0 %44 = call float @llvm.SI.load.const(<16 x i8> %43, i32 208) %45 = fmul float %38, %44 %46 = call float @llvm.SI.load.const(<16 x i8> %43, i32 212) %47 = fmul float %39, %46 %48 = call float @llvm.SI.load.const(<16 x i8> %43, i32 216) %49 = fmul float %40, %48 %50 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %51 = load <16 x i8>, <16 x i8> addrspace(2)* %50, align 16, !invariant.load !0 %52 = call float @llvm.SI.load.const(<16 x i8> %51, i32 220) %53 = fmul float %41, %52 %54 = call float @llvm.SI.load.const(<16 x i8> %51, i32 0) %55 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %56 = fsub float %54, %55 %57 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %58 = load <16 x i8>, <16 x i8> addrspace(2)* %57, align 16, !invariant.load !0 %59 = call float @llvm.SI.load.const(<16 x i8> %58, i32 4) %60 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %61 = fsub float %59, %60 %62 = call float @llvm.SI.load.const(<16 x i8> %58, i32 8) %63 = call float @llvm.SI.fs.interp(i32 3, i32 1, i32 %6, <2 x i32> %8) %64 = fsub float %62, %63 %65 = fmul float %56, %56 %66 = fmul float %61, %61 %67 = fadd float %66, %65 %68 = fmul float %64, %64 %69 = fadd float %67, %68 %70 = call float @llvm.sqrt.f32(float %69) %71 = fdiv float 1.000000e+00, %70, !fpmath !1 %72 = fmul float %64, %71 %73 = fmul float %72, 0x3EE4F8B580000000 %74 = fadd float %73, %53 %75 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %76 = load <16 x i8>, <16 x i8> addrspace(2)* %75, align 16, !invariant.load !0 %77 = call float @llvm.SI.load.const(<16 x i8> %76, i32 224) %78 = fcmp olt float %74, %77 %79 = select i1 %78, float -1.000000e+00, float 0.000000e+00 call void @llvm.AMDGPU.kill(float %79) %80 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %81 = load <16 x i8>, <16 x i8> addrspace(2)* %80, align 16, !invariant.load !0 %82 = call float @llvm.SI.load.const(<16 x i8> %81, i32 64) %83 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %84 = fmul float %82, %83 %85 = call float @llvm.SI.load.const(<16 x i8> %81, i32 68) %86 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %87 = fmul float %85, %86 %88 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %89 = load <16 x i8>, <16 x i8> addrspace(2)* %88, align 16, !invariant.load !0 %90 = call float @llvm.SI.load.const(<16 x i8> %89, i32 72) %91 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %92 = fmul float %90, %91 %93 = call float @llvm.SI.load.const(<16 x i8> %89, i32 80) %94 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %95 = fmul float %93, %94 %96 = fadd float %95, %84 %97 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %98 = load <16 x i8>, <16 x i8> addrspace(2)* %97, align 16, !invariant.load !0 %99 = call float @llvm.SI.load.const(<16 x i8> %98, i32 84) %100 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %101 = fmul float %99, %100 %102 = fadd float %101, %87 %103 = call float @llvm.SI.load.const(<16 x i8> %98, i32 88) %104 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %105 = fmul float %103, %104 %106 = fadd float %105, %92 %107 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %108 = load <16 x i8>, <16 x i8> addrspace(2)* %107, align 16, !invariant.load !0 %109 = call float @llvm.SI.load.const(<16 x i8> %108, i32 96) %110 = call float @llvm.SI.fs.interp(i32 3, i32 1, i32 %6, <2 x i32> %8) %111 = fmul float %109, %110 %112 = fadd float %111, %96 %113 = call float @llvm.SI.load.const(<16 x i8> %108, i32 100) %114 = call float @llvm.SI.fs.interp(i32 3, i32 1, i32 %6, <2 x i32> %8) %115 = fmul float %113, %114 %116 = fadd float %115, %102 %117 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %118 = load <16 x i8>, <16 x i8> addrspace(2)* %117, align 16, !invariant.load !0 %119 = call float @llvm.SI.load.const(<16 x i8> %118, i32 104) %120 = call float @llvm.SI.fs.interp(i32 3, i32 1, i32 %6, <2 x i32> %8) %121 = fmul float %119, %120 %122 = fadd float %121, %106 %123 = call float @llvm.SI.load.const(<16 x i8> %118, i32 112) %124 = fadd float %112, %123 %125 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %126 = load <16 x i8>, <16 x i8> addrspace(2)* %125, align 16, !invariant.load !0 %127 = call float @llvm.SI.load.const(<16 x i8> %126, i32 116) %128 = fadd float %116, %127 %129 = call float @llvm.SI.load.const(<16 x i8> %126, i32 120) %130 = fadd float %122, %129 %131 = call float @llvm.SI.load.const(<16 x i8> %126, i32 16) %132 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %133 = fsub float %131, %132 %134 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %135 = load <16 x i8>, <16 x i8> addrspace(2)* %134, align 16, !invariant.load !0 %136 = call float @llvm.SI.load.const(<16 x i8> %135, i32 20) %137 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %138 = fsub float %136, %137 %139 = call float @llvm.SI.load.const(<16 x i8> %135, i32 24) %140 = call float @llvm.SI.fs.interp(i32 3, i32 1, i32 %6, <2 x i32> %8) %141 = fsub float %139, %140 %142 = fmul float %133, %133 %143 = fmul float %138, %138 %144 = fadd float %143, %142 %145 = fmul float %141, %141 %146 = fadd float %144, %145 %147 = call float @llvm.sqrt.f32(float %146) %148 = fdiv float 1.000000e+00, %147, !fpmath !1 %149 = fmul float %133, %148 %150 = fmul float %138, %148 %151 = fmul float %141, %148 %152 = fmul float %45, 2.000000e+00 %153 = fmul float %47, 2.000000e+00 %154 = fmul float %49, 2.000000e+00 %155 = fmul float %124, %124 %156 = fmul float %128, %128 %157 = fadd float %156, %155 %158 = fmul float %130, %130 %159 = fadd float %157, %158 %160 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 0, !amdgpu.uniform !0 %161 = load <8 x i32>, <8 x i32> addrspace(2)* %160, align 32, !invariant.load !0 %162 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %163 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %162, i64 0, i64 3, !amdgpu.uniform !0 %164 = load <4 x i32>, <4 x i32> addrspace(2)* %163, align 16, !invariant.load !0 %165 = bitcast float %159 to i32 %166 = bitcast float %159 to i32 %167 = insertelement <2 x i32> undef, i32 %165, i32 0 %168 = insertelement <2 x i32> %167, i32 %166, i32 1 %169 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %168, <8 x i32> %161, <4 x i32> %164, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %170 = extractelement <4 x float> %169, i32 3 %171 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %172 = load <16 x i8>, <16 x i8> addrspace(2)* %171, align 16, !invariant.load !0 %173 = call float @llvm.SI.load.const(<16 x i8> %172, i32 32) %174 = fmul float %173, %170 %175 = call float @llvm.SI.load.const(<16 x i8> %172, i32 36) %176 = fmul float %175, %170 %177 = call float @llvm.SI.load.const(<16 x i8> %172, i32 40) %178 = fmul float %177, %170 %179 = fmul float %152, %174 %180 = fmul float %153, %176 %181 = fmul float %154, %178 %182 = fmul float %23, %23 %183 = fmul float %24, %24 %184 = fadd float %183, %182 %185 = fmul float %25, %25 %186 = fadd float %184, %185 %187 = call float @llvm.sqrt.f32(float %186) %188 = fdiv float 1.000000e+00, %187, !fpmath !1 %189 = fmul float %23, %188 %190 = fmul float %24, %188 %191 = fmul float %25, %188 %192 = fmul float %149, %149 %193 = fmul float %150, %150 %194 = fadd float %193, %192 %195 = fmul float %151, %151 %196 = fadd float %194, %195 %197 = call float @llvm.sqrt.f32(float %196) %198 = fdiv float 1.000000e+00, %197, !fpmath !1 %199 = fmul float %149, %198 %200 = fmul float %150, %198 %201 = fmul float %151, %198 %202 = fmul float %189, %199 %203 = fmul float %190, %200 %204 = fadd float %203, %202 %205 = fmul float %191, %201 %206 = fadd float %204, %205 %207 = call float @llvm.maxnum.f32(float %206, float 0.000000e+00) %208 = fmul float %179, %207 %209 = fmul float %180, %207 %210 = fmul float %181, %207 %211 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %212 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %213 = load <16 x i8>, <16 x i8> addrspace(2)* %212, align 16, !invariant.load !0 %214 = call float @llvm.SI.load.const(<16 x i8> %213, i32 0) %215 = fsub float %211, %214 %216 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %217 = call float @llvm.SI.load.const(<16 x i8> %213, i32 4) %218 = fsub float %216, %217 %219 = call float @llvm.SI.fs.interp(i32 3, i32 1, i32 %6, <2 x i32> %8) %220 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %221 = load <16 x i8>, <16 x i8> addrspace(2)* %220, align 16, !invariant.load !0 %222 = call float @llvm.SI.load.const(<16 x i8> %221, i32 8) %223 = fsub float %219, %222 %224 = fmul float %215, %215 %225 = fmul float %218, %218 %226 = fadd float %225, %224 %227 = fmul float %223, %223 %228 = fadd float %226, %227 %229 = call float @llvm.sqrt.f32(float %228) %230 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %231 = load <16 x i8>, <16 x i8> addrspace(2)* %230, align 16, !invariant.load !0 %232 = call float @llvm.SI.load.const(<16 x i8> %231, i32 176) %233 = call float @llvm.SI.load.const(<16 x i8> %231, i32 160) %234 = fsub float %229, %233 %235 = call float @llvm.SI.load.const(<16 x i8> %231, i32 164) %236 = fdiv float 1.000000e+00, %235, !fpmath !1 %237 = fmul float %234, %236 %238 = call float @llvm.AMDGPU.clamp.(float %237, float 0.000000e+00, float 1.000000e+00) %239 = fmul float %232, %238 %240 = fmul float %239, 0xBFF7154760000000 %241 = call float @llvm.exp2.f32(float %240) %242 = fsub float 1.000000e+00, %241 %243 = fmul float %232, 0xBFF7154760000000 %244 = call float @llvm.exp2.f32(float %243) %245 = fsub float 1.000000e+00, %244 %246 = fdiv float 1.000000e+00, %245, !fpmath !1 %247 = fmul float %242, %246 %248 = call float @llvm.AMDGPU.clamp.(float %247, float 0.000000e+00, float 1.000000e+00) %249 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %250 = load <16 x i8>, <16 x i8> addrspace(2)* %249, align 16, !invariant.load !0 %251 = call float @llvm.SI.load.const(<16 x i8> %250, i32 132) %252 = fcmp ogt float %251, 0.000000e+00 br i1 %252, label %if56, label %endif94 if56: ; preds = %main_body %253 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %254 = load <16 x i8>, <16 x i8> addrspace(2)* %253, align 16, !invariant.load !0 %255 = call float @llvm.SI.load.const(<16 x i8> %254, i32 128) %256 = call float @llvm.SI.load.const(<16 x i8> %254, i32 0) %257 = call float @llvm.SI.load.const(<16 x i8> %254, i32 4) %258 = call float @llvm.SI.load.const(<16 x i8> %254, i32 8) %259 = fmul float %256, 0.000000e+00 %260 = fadd float %259, %257 %261 = fmul float %258, 0.000000e+00 %262 = fadd float %260, %261 %263 = fadd float %262, %255 %264 = fcmp ole float %263, 0.000000e+00 %265 = uitofp i1 %264 to float %266 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %267 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %268 = call float @llvm.SI.fs.interp(i32 3, i32 1, i32 %6, <2 x i32> %8) %269 = fmul float %266, 0.000000e+00 %270 = fadd float %269, %267 %271 = fmul float %268, 0.000000e+00 %272 = fadd float %270, %271 %273 = fadd float %272, %255 %274 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %275 = load <16 x i8>, <16 x i8> addrspace(2)* %274, align 16, !invariant.load !0 %276 = call float @llvm.SI.load.const(<16 x i8> %275, i32 0) %277 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %278 = fsub float %276, %277 %279 = call float @llvm.SI.load.const(<16 x i8> %275, i32 4) %280 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %281 = fsub float %279, %280 %282 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %283 = load <16 x i8>, <16 x i8> addrspace(2)* %282, align 16, !invariant.load !0 %284 = call float @llvm.SI.load.const(<16 x i8> %283, i32 8) %285 = call float @llvm.SI.fs.interp(i32 3, i32 1, i32 %6, <2 x i32> %8) %286 = fsub float %284, %285 %287 = fmul float %265, 2.000000e+00 %288 = fsub float 1.000000e+00, %287 %289 = fmul float %288, %273 %290 = call float @llvm.minnum.f32(float %289, float 0.000000e+00) %291 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %292 = load <16 x i8>, <16 x i8> addrspace(2)* %291, align 16, !invariant.load !0 %293 = call float @llvm.SI.load.const(<16 x i8> %292, i32 136) %294 = fmul float %293, %229 %295 = fadd float %273, %263 %296 = fmul float %290, %290 %297 = fmul float %278, 0.000000e+00 %298 = fadd float %297, %281 %299 = fmul float %286, 0.000000e+00 %300 = fadd float %298, %299 %301 = fmul float %255, 0.000000e+00 %302 = fadd float %300, %301 %303 = call float @llvm.fabs.f32(float %302) %304 = fdiv float 1.000000e+00, %303, !fpmath !1 %305 = fmul float %296, %304 %306 = fmul float %265, %295 %307 = fsub float %306, %305 %308 = fmul float %294, %307 %309 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %310 = load <16 x i8>, <16 x i8> addrspace(2)* %309, align 16, !invariant.load !0 %311 = call float @llvm.SI.load.const(<16 x i8> %310, i32 132) %312 = fmul float %308, %311 %313 = fmul float %312, 0x3FF7154760000000 %314 = call float @llvm.exp2.f32(float %313) %315 = call float @llvm.AMDGPU.clamp.(float %314, float 0.000000e+00, float 1.000000e+00) %316 = fsub float 1.000000e+00, %315 %317 = call float @llvm.maxnum.f32(float %248, float %316) br label %endif94 endif94: ; preds = %if56, %main_body %.0 = phi float [ %317, %if56 ], [ %248, %main_body ] %318 = call float @llvm.AMDGPU.clamp.(float %.0, float 0.000000e+00, float 1.000000e+00) %319 = fsub float 1.000000e+00, %318 %320 = fsub float 1.000000e+00, %318 %321 = fsub float 1.000000e+00, %318 %322 = fmul float %208, %319 %323 = fmul float %209, %320 %324 = fmul float %210, %321 %325 = call float @llvm.AMDGPU.clamp.(float %.0, float 0.000000e+00, float 1.000000e+00) %326 = fsub float 1.000000e+00, %325 %327 = fmul float %74, %326 %328 = bitcast float %5 to i32 %329 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> undef, i32 %328, 10 %330 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %329, float %322, 11 %331 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %330, float %323, 12 %332 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %331, float %324, 13 %333 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %332, float %327, 14 %334 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %333, float %21, 24 ret <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %334 } ; Function Attrs: nounwind readnone declare float @llvm.SI.fs.interp(i32, i32, i32, <2 x i32>) #1 ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.sqrt.f32(float) #1 ; Function Attrs: nounwind declare void @llvm.AMDGPU.kill(float) #2 ; Function Attrs: nounwind readnone declare float @llvm.maxnum.f32(float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.AMDGPU.clamp.(float, float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.exp2.f32(float) #1 ; Function Attrs: nounwind readnone declare float @llvm.minnum.f32(float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.fabs.f32(float) #1 attributes #0 = { "InitialPSInputAddr"="36983" } attributes #1 = { nounwind readnone } attributes #2 = { nounwind } !0 = !{} !1 = !{float 2.500000e+00} VERT PROPERTY NEXT_SHADER FRAG DCL IN[0] DCL IN[1] DCL IN[2] DCL IN[3] DCL IN[4] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] DCL OUT[2], GENERIC[1] DCL CONST[0..11] DCL TEMP[0..4], LOCAL IMM[0] FLT32 { 0.0000, 0.0001, 0.0000, 0.0000} 0: MOV TEMP[0].xyz, IN[0] 1: UIF CONST[6].xxxx :0 2: MAD TEMP[0].xy, IN[3].xyyy, CONST[4].xyyy, CONST[4].zwww 3: FSLT TEMP[1].x, IMM[0].xxxx, IN[0].zzzz 4: UIF TEMP[1].xxxx :0 5: MOV TEMP[1].x, IMM[0].yyyy 6: ELSE :0 7: MOV TEMP[1].x, IMM[0].xxxx 8: ENDIF 9: MOV TEMP[0].z, TEMP[1].xxxx 10: ENDIF 11: UIF CONST[6].yyyy :0 12: MAD TEMP[0].xy, IN[4].xyyy, CONST[5].xyyy, CONST[5].zwww 13: FSLT TEMP[1].x, IMM[0].xxxx, TEMP[0].zzzz 14: UIF TEMP[1].xxxx :0 15: MOV TEMP[1].x, IMM[0].yyyy 16: ELSE :0 17: MOV TEMP[1].x, IMM[0].xxxx 18: ENDIF 19: MOV TEMP[0].z, TEMP[1].xxxx 20: ENDIF 21: MOV TEMP[1].x, CONST[0].xxxx 22: MOV TEMP[1].y, CONST[1].xxxx 23: MOV TEMP[1].z, CONST[2].xxxx 24: MOV TEMP[2].x, CONST[0].yyyy 25: MOV TEMP[2].y, CONST[1].yyyy 26: MOV TEMP[2].z, CONST[2].yyyy 27: MOV TEMP[3].x, CONST[0].zzzz 28: MOV TEMP[3].y, CONST[1].zzzz 29: MOV TEMP[3].z, CONST[2].zzzz 30: MUL TEMP[4], CONST[8], TEMP[0].xxxx 31: MAD TEMP[4], CONST[9], TEMP[0].yyyy, TEMP[4] 32: MAD TEMP[0], CONST[10], TEMP[0].zzzz, TEMP[4] 33: MAD TEMP[0], CONST[11], IN[0].wwww, TEMP[0] 34: MUL TEMP[1].xyz, TEMP[1].xyzz, IN[1].xxxx 35: MAD TEMP[1].xyz, TEMP[2].xyzz, IN[1].yyyy, TEMP[1].xyzz 36: MAD TEMP[1].xyz, TEMP[3].xyzz, IN[1].zzzz, TEMP[1].xyzz 37: DP3 TEMP[2].x, TEMP[1].xyzz, TEMP[1].xyzz 38: RSQ TEMP[2].x, TEMP[2].xxxx 39: MUL TEMP[1].xyz, TEMP[1].xyzz, TEMP[2].xxxx 40: MAD TEMP[2].xy, IN[2].xyyy, CONST[7].xyyy, CONST[7].zwww 41: MOV TEMP[2].zw, TEMP[1].yyxy 42: MOV TEMP[1].x, TEMP[1].zzzz 43: MOV OUT[0], TEMP[0] 44: MOV OUT[1], TEMP[2] 45: MOV OUT[2], TEMP[1] 46: END radeonsi: Compiling shader 48 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_vs <{ float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32, i32, i32, i32, i32, i32, i32, i32, i32) { main_body: %19 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 0, !amdgpu.uniform !0 %20 = load <16 x i8>, <16 x i8> addrspace(2)* %19, align 16, !invariant.load !0 %21 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %20, i32 0, i32 %14) %22 = extractelement <4 x float> %21, i32 0 %23 = extractelement <4 x float> %21, i32 1 %24 = extractelement <4 x float> %21, i32 2 %25 = extractelement <4 x float> %21, i32 3 %26 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 1, !amdgpu.uniform !0 %27 = load <16 x i8>, <16 x i8> addrspace(2)* %26, align 16, !invariant.load !0 %28 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %27, i32 0, i32 %15) %29 = extractelement <4 x float> %28, i32 0 %30 = extractelement <4 x float> %28, i32 1 %31 = extractelement <4 x float> %28, i32 2 %32 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 2, !amdgpu.uniform !0 %33 = load <16 x i8>, <16 x i8> addrspace(2)* %32, align 16, !invariant.load !0 %34 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %33, i32 0, i32 %16) %35 = extractelement <4 x float> %34, i32 0 %36 = extractelement <4 x float> %34, i32 1 %37 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 3, !amdgpu.uniform !0 %38 = load <16 x i8>, <16 x i8> addrspace(2)* %37, align 16, !invariant.load !0 %39 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %38, i32 0, i32 %17) %40 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 4, !amdgpu.uniform !0 %41 = load <16 x i8>, <16 x i8> addrspace(2)* %40, align 16, !invariant.load !0 %42 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %41, i32 0, i32 %18) %43 = extractelement <4 x float> %42, i32 0 %44 = extractelement <4 x float> %42, i32 1 %45 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %46 = load <16 x i8>, <16 x i8> addrspace(2)* %45, align 16, !invariant.load !0 %47 = call float @llvm.SI.load.const(<16 x i8> %46, i32 96) %48 = bitcast float %47 to i32 %49 = icmp eq i32 %48, 0 br i1 %49, label %endif10, label %if1 if1: ; preds = %main_body %50 = extractelement <4 x float> %39, i32 1 %51 = extractelement <4 x float> %39, i32 0 %52 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %53 = load <16 x i8>, <16 x i8> addrspace(2)* %52, align 16, !invariant.load !0 %54 = call float @llvm.SI.load.const(<16 x i8> %53, i32 64) %55 = call float @llvm.SI.load.const(<16 x i8> %53, i32 72) %56 = fmul float %51, %54 %57 = fadd float %56, %55 %58 = call float @llvm.SI.load.const(<16 x i8> %53, i32 68) %59 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %60 = load <16 x i8>, <16 x i8> addrspace(2)* %59, align 16, !invariant.load !0 %61 = call float @llvm.SI.load.const(<16 x i8> %60, i32 76) %62 = fmul float %50, %58 %63 = fadd float %62, %61 %64 = fcmp ogt float %24, 0.000000e+00 %. = select i1 %64, float 0x3F1A36E2E0000000, float 0.000000e+00 br label %endif10 endif10: ; preds = %main_body, %if1 %.05 = phi float [ %., %if1 ], [ %24, %main_body ] %.03 = phi float [ %63, %if1 ], [ %23, %main_body ] %.0 = phi float [ %57, %if1 ], [ %22, %main_body ] %65 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %66 = load <16 x i8>, <16 x i8> addrspace(2)* %65, align 16, !invariant.load !0 %67 = call float @llvm.SI.load.const(<16 x i8> %66, i32 100) %68 = bitcast float %67 to i32 %69 = icmp eq i32 %68, 0 br i1 %69, label %endif20, label %if11 if11: ; preds = %endif10 %70 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %71 = load <16 x i8>, <16 x i8> addrspace(2)* %70, align 16, !invariant.load !0 %72 = call float @llvm.SI.load.const(<16 x i8> %71, i32 80) %73 = call float @llvm.SI.load.const(<16 x i8> %71, i32 88) %74 = fmul float %43, %72 %75 = fadd float %74, %73 %76 = call float @llvm.SI.load.const(<16 x i8> %71, i32 84) %77 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %78 = load <16 x i8>, <16 x i8> addrspace(2)* %77, align 16, !invariant.load !0 %79 = call float @llvm.SI.load.const(<16 x i8> %78, i32 92) %80 = fmul float %44, %76 %81 = fadd float %80, %79 %82 = fcmp ogt float %.05, 0.000000e+00 %.9 = select i1 %82, float 0x3F1A36E2E0000000, float 0.000000e+00 br label %endif20 endif20: ; preds = %endif10, %if11 %.16 = phi float [ %.9, %if11 ], [ %.05, %endif10 ] %.14 = phi float [ %81, %if11 ], [ %.03, %endif10 ] %.1 = phi float [ %75, %if11 ], [ %.0, %endif10 ] %83 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %84 = load <16 x i8>, <16 x i8> addrspace(2)* %83, align 16, !invariant.load !0 %85 = call float @llvm.SI.load.const(<16 x i8> %84, i32 0) %86 = call float @llvm.SI.load.const(<16 x i8> %84, i32 16) %87 = call float @llvm.SI.load.const(<16 x i8> %84, i32 32) %88 = call float @llvm.SI.load.const(<16 x i8> %84, i32 4) %89 = call float @llvm.SI.load.const(<16 x i8> %84, i32 20) %90 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %91 = load <16 x i8>, <16 x i8> addrspace(2)* %90, align 16, !invariant.load !0 %92 = call float @llvm.SI.load.const(<16 x i8> %91, i32 36) %93 = call float @llvm.SI.load.const(<16 x i8> %91, i32 8) %94 = call float @llvm.SI.load.const(<16 x i8> %91, i32 24) %95 = call float @llvm.SI.load.const(<16 x i8> %91, i32 40) %96 = call float @llvm.SI.load.const(<16 x i8> %91, i32 128) %97 = fmul float %96, %.1 %98 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %99 = load <16 x i8>, <16 x i8> addrspace(2)* %98, align 16, !invariant.load !0 %100 = call float @llvm.SI.load.const(<16 x i8> %99, i32 132) %101 = fmul float %100, %.1 %102 = call float @llvm.SI.load.const(<16 x i8> %99, i32 136) %103 = fmul float %102, %.1 %104 = call float @llvm.SI.load.const(<16 x i8> %99, i32 140) %105 = fmul float %104, %.1 %106 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %107 = load <16 x i8>, <16 x i8> addrspace(2)* %106, align 16, !invariant.load !0 %108 = call float @llvm.SI.load.const(<16 x i8> %107, i32 144) %109 = fmul float %108, %.14 %110 = fadd float %109, %97 %111 = call float @llvm.SI.load.const(<16 x i8> %107, i32 148) %112 = fmul float %111, %.14 %113 = fadd float %112, %101 %114 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %115 = load <16 x i8>, <16 x i8> addrspace(2)* %114, align 16, !invariant.load !0 %116 = call float @llvm.SI.load.const(<16 x i8> %115, i32 152) %117 = fmul float %116, %.14 %118 = fadd float %117, %103 %119 = call float @llvm.SI.load.const(<16 x i8> %115, i32 156) %120 = fmul float %119, %.14 %121 = fadd float %120, %105 %122 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %123 = load <16 x i8>, <16 x i8> addrspace(2)* %122, align 16, !invariant.load !0 %124 = call float @llvm.SI.load.const(<16 x i8> %123, i32 160) %125 = fmul float %124, %.16 %126 = fadd float %125, %110 %127 = call float @llvm.SI.load.const(<16 x i8> %123, i32 164) %128 = fmul float %127, %.16 %129 = fadd float %128, %113 %130 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %131 = load <16 x i8>, <16 x i8> addrspace(2)* %130, align 16, !invariant.load !0 %132 = call float @llvm.SI.load.const(<16 x i8> %131, i32 168) %133 = fmul float %132, %.16 %134 = fadd float %133, %118 %135 = call float @llvm.SI.load.const(<16 x i8> %131, i32 172) %136 = fmul float %135, %.16 %137 = fadd float %136, %121 %138 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %139 = load <16 x i8>, <16 x i8> addrspace(2)* %138, align 16, !invariant.load !0 %140 = call float @llvm.SI.load.const(<16 x i8> %139, i32 176) %141 = fmul float %140, %25 %142 = fadd float %141, %126 %143 = call float @llvm.SI.load.const(<16 x i8> %139, i32 180) %144 = fmul float %143, %25 %145 = fadd float %144, %129 %146 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %147 = load <16 x i8>, <16 x i8> addrspace(2)* %146, align 16, !invariant.load !0 %148 = call float @llvm.SI.load.const(<16 x i8> %147, i32 184) %149 = fmul float %148, %25 %150 = fadd float %149, %134 %151 = call float @llvm.SI.load.const(<16 x i8> %147, i32 188) %152 = fmul float %151, %25 %153 = fadd float %152, %137 %154 = fmul float %85, %29 %155 = fmul float %86, %29 %156 = fmul float %87, %29 %157 = fmul float %88, %30 %158 = fadd float %157, %154 %159 = fmul float %89, %30 %160 = fadd float %159, %155 %161 = fmul float %92, %30 %162 = fadd float %161, %156 %163 = fmul float %93, %31 %164 = fadd float %163, %158 %165 = fmul float %94, %31 %166 = fadd float %165, %160 %167 = fmul float %95, %31 %168 = fadd float %167, %162 %169 = fmul float %164, %164 %170 = fmul float %166, %166 %171 = fadd float %170, %169 %172 = fmul float %168, %168 %173 = fadd float %171, %172 %174 = call float @llvm.sqrt.f32(float %173) %175 = fdiv float 1.000000e+00, %174, !fpmath !1 %176 = fmul float %164, %175 %177 = fmul float %166, %175 %178 = fmul float %168, %175 %179 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %180 = load <16 x i8>, <16 x i8> addrspace(2)* %179, align 16, !invariant.load !0 %181 = call float @llvm.SI.load.const(<16 x i8> %180, i32 112) %182 = call float @llvm.SI.load.const(<16 x i8> %180, i32 120) %183 = fmul float %35, %181 %184 = fadd float %183, %182 %185 = call float @llvm.SI.load.const(<16 x i8> %180, i32 116) %186 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %187 = load <16 x i8>, <16 x i8> addrspace(2)* %186, align 16, !invariant.load !0 %188 = call float @llvm.SI.load.const(<16 x i8> %187, i32 124) %189 = fmul float %36, %185 %190 = fadd float %189, %188 %191 = bitcast i32 %12 to float %192 = insertvalue <{ float, float, float }> undef, float %191, 2 call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 32, i32 0, float %184, float %190, float %176, float %177) call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 33, i32 0, float %178, float %177, float %178, float undef) call void @llvm.SI.export(i32 15, i32 0, i32 1, i32 12, i32 0, float %142, float %145, float %150, float %153) ret <{ float, float, float }> %192 } ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.vs.load.input(<16 x i8>, i32, i32) #0 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #0 ; Function Attrs: nounwind readnone declare float @llvm.sqrt.f32(float) #0 ; Function Attrs: nounwind declare void @llvm.SI.export(i32, i32, i32, i32, i32, float, float, float, float) #1 attributes #0 = { nounwind readnone } attributes #1 = { nounwind } !0 = !{} !1 = !{float 2.500000e+00} FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL IN[1], GENERIC[1], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SVIEW[0], 2D, FLOAT DCL CONST[1..6] DCL TEMP[0..5], LOCAL IMM[0] FLT32 { 1.0000, 2.0000, 0.0000, 0.0000} IMM[1] FLT32 { 0.0000, 0.3053, 0.6822, 0.0125} IMM[2] FLT32 { 0.0103, 0.0200, 255.0000, 0.0039} 0: MOV TEMP[0].xy, IN[0].zwzz 1: MOV TEMP[0].z, IN[1].xxxx 2: MOV TEMP[1].xy, IN[0].xyyy 3: TEX TEMP[1], TEMP[1], SAMP[0], 2D 4: MUL TEMP[1], TEMP[1], CONST[1] 5: MUL TEMP[2].xyz, TEMP[1].xyzz, IMM[0].yyyy 6: MOV TEMP[3].x, IMM[0].zzzz 7: MUL TEMP[0].xyz, TEMP[0].xyzz, IMM[0].wwww 8: MOV TEMP[3].yz, TEMP[0].yxyz 9: MAD TEMP[0].x, TEMP[4].zzzz, IMM[1].xxxx, TEMP[1].wwww 10: FSLT TEMP[0].x, TEMP[0].xxxx, CONST[6].xxxx 11: AND TEMP[0].x, TEMP[0].xxxx, IMM[0].xxxx 12: KILL_IF -TEMP[0].xxxx 13: MOV TEMP[0], IMM[0].zzzz 14: UIF CONST[2].xxxx :0 15: MOV TEMP[0].w, IMM[0].xxxx 16: MOV_SAT TEMP[1].x, CONST[3].xxxx 17: POW TEMP[5].x, TEMP[2].xxxx, TEMP[1].xxxx 18: POW TEMP[5].y, TEMP[2].yyyy, TEMP[1].xxxx 19: POW TEMP[5].z, TEMP[2].zzzz, TEMP[1].xxxx 20: MAX TEMP[1].xyz, TEMP[5].xyzz, IMM[0].zzzz 21: MIN TEMP[0].xyz, TEMP[1].xyzz, CONST[4].xxxx 22: ENDIF 23: UIF CONST[2].yyyy :0 24: FSNE TEMP[1].x, CONST[5].xxxx, IMM[0].zzzz 25: UIF TEMP[1].xxxx :0 26: MOV TEMP[1].xyz, TEMP[3].xyzx 27: ELSE :0 28: MAD TEMP[2].xyz, TEMP[3].xyzz, IMM[1].yyyy, IMM[1].zzzz 29: MAD TEMP[2].xyz, TEMP[3].xyzz, TEMP[2].xyzz, IMM[1].wwww 30: MUL TEMP[1].xyz, TEMP[3].xyzz, TEMP[2].xyzz 31: ENDIF 32: MUL TEMP[1].xyz, TEMP[1].xyzz, IMM[2].xxxx 33: MAX TEMP[3].x, TEMP[1].xxxx, TEMP[1].yyyy 34: MAX TEMP[5].x, TEMP[1].zzzz, IMM[2].yyyy 35: MAX TEMP[3].x, TEMP[3].xxxx, TEMP[5].xxxx 36: MUL TEMP[3].x, TEMP[3].xxxx, IMM[2].zzzz 37: CEIL TEMP[3].x, TEMP[3].xxxx 38: MUL TEMP[3].x, TEMP[3].xxxx, IMM[2].wwww 39: MAX TEMP[3].x, TEMP[3].xxxx, IMM[2].yyyy 40: MOV TEMP[2].w, TEMP[3].xxxx 41: RCP TEMP[3].x, TEMP[3].xxxx 42: MUL TEMP[2].xyz, TEMP[1].xyzz, TEMP[3].xxxx 43: MOV TEMP[0], TEMP[2] 44: ENDIF 45: MOV OUT[0], TEMP[0] 46: END radeonsi: Compiling shader 49 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_ps <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), float inreg, i32 inreg, <2 x i32>, <2 x i32>, <2 x i32>, <3 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, float, float, float, float, float, i32, i32, float, i32) #0 { main_body: %23 = call float @llvm.SI.fs.interp(i32 2, i32 0, i32 %6, <2 x i32> %8) %24 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %6, <2 x i32> %8) %25 = call float @llvm.SI.fs.interp(i32 0, i32 0, i32 %6, <2 x i32> %8) %26 = call float @llvm.SI.fs.interp(i32 1, i32 0, i32 %6, <2 x i32> %8) %27 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 0, !amdgpu.uniform !0 %28 = load <8 x i32>, <8 x i32> addrspace(2)* %27, align 32, !invariant.load !0 %29 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %30 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %29, i64 0, i64 3, !amdgpu.uniform !0 %31 = load <4 x i32>, <4 x i32> addrspace(2)* %30, align 16, !invariant.load !0 %32 = bitcast float %25 to i32 %33 = bitcast float %26 to i32 %34 = insertelement <2 x i32> undef, i32 %32, i32 0 %35 = insertelement <2 x i32> %34, i32 %33, i32 1 %36 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %35, <8 x i32> %28, <4 x i32> %31, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %37 = extractelement <4 x float> %36, i32 3 %38 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %39 = load <16 x i8>, <16 x i8> addrspace(2)* %38, align 16, !invariant.load !0 %40 = call float @llvm.SI.load.const(<16 x i8> %39, i32 28) %41 = fmul float %37, %40 %42 = fmul float %23, 0x3EB0C6F7A0000000 %43 = fmul float %24, 0x3EB0C6F7A0000000 %44 = fadd float %41, fmul (float undef, float 0x3EE4F8B580000000) %45 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %46 = load <16 x i8>, <16 x i8> addrspace(2)* %45, align 16, !invariant.load !0 %47 = call float @llvm.SI.load.const(<16 x i8> %46, i32 96) %48 = fcmp olt float %44, %47 %49 = select i1 %48, float -1.000000e+00, float 0.000000e+00 call void @llvm.AMDGPU.kill(float %49) %50 = call float @llvm.SI.load.const(<16 x i8> %46, i32 32) %51 = bitcast float %50 to i32 %52 = icmp eq i32 %51, 0 br i1 %52, label %endif22, label %if14 if14: ; preds = %main_body %53 = extractelement <4 x float> %36, i32 2 %54 = call float @llvm.SI.load.const(<16 x i8> %39, i32 24) %55 = fmul float %53, %54 %56 = fmul float %55, 2.000000e+00 %57 = extractelement <4 x float> %36, i32 1 %58 = call float @llvm.SI.load.const(<16 x i8> %39, i32 20) %59 = fmul float %57, %58 %60 = fmul float %59, 2.000000e+00 %61 = extractelement <4 x float> %36, i32 0 %62 = call float @llvm.SI.load.const(<16 x i8> %39, i32 16) %63 = fmul float %61, %62 %64 = fmul float %63, 2.000000e+00 %65 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %66 = load <16 x i8>, <16 x i8> addrspace(2)* %65, align 16, !invariant.load !0 %67 = call float @llvm.SI.load.const(<16 x i8> %66, i32 48) %68 = call float @llvm.AMDGPU.clamp.(float %67, float 0.000000e+00, float 1.000000e+00) %69 = call float @llvm.pow.f32(float %64, float %68) %70 = call float @llvm.pow.f32(float %60, float %68) %71 = call float @llvm.pow.f32(float %56, float %68) %72 = call float @llvm.maxnum.f32(float %69, float 0.000000e+00) %73 = call float @llvm.maxnum.f32(float %70, float 0.000000e+00) %74 = call float @llvm.maxnum.f32(float %71, float 0.000000e+00) %75 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %76 = load <16 x i8>, <16 x i8> addrspace(2)* %75, align 16, !invariant.load !0 %77 = call float @llvm.SI.load.const(<16 x i8> %76, i32 64) %78 = call float @llvm.minnum.f32(float %72, float %77) %79 = call float @llvm.SI.load.const(<16 x i8> %76, i32 64) %80 = call float @llvm.minnum.f32(float %73, float %79) %81 = call float @llvm.SI.load.const(<16 x i8> %76, i32 64) %82 = call float @llvm.minnum.f32(float %74, float %81) br label %endif22 endif22: ; preds = %main_body, %if14 %.06 = phi float [ 1.000000e+00, %if14 ], [ 0.000000e+00, %main_body ] %.04 = phi float [ %82, %if14 ], [ 0.000000e+00, %main_body ] %.02 = phi float [ %80, %if14 ], [ 0.000000e+00, %main_body ] %.0 = phi float [ %78, %if14 ], [ 0.000000e+00, %main_body ] %83 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %84 = load <16 x i8>, <16 x i8> addrspace(2)* %83, align 16, !invariant.load !0 %85 = call float @llvm.SI.load.const(<16 x i8> %84, i32 36) %86 = bitcast float %85 to i32 %87 = icmp eq i32 %86, 0 br i1 %87, label %endif44, label %if23 if23: ; preds = %endif22 %88 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %89 = load <16 x i8>, <16 x i8> addrspace(2)* %88, align 16, !invariant.load !0 %90 = call float @llvm.SI.load.const(<16 x i8> %89, i32 80) %91 = fcmp une float %90, 0.000000e+00 br i1 %91, label %endif31, label %else27 else27: ; preds = %if23 %92 = fmul float %42, 0x3FD38A2220000000 %93 = fadd float %92, 0x3FE5D45880000000 %94 = fmul float %43, 0x3FD38A2220000000 %95 = fadd float %94, 0x3FE5D45880000000 %96 = fmul float %42, %93 %97 = fadd float %96, 0x3F89A59880000000 %98 = fmul float %43, %95 %99 = fadd float %98, 0x3F89A59880000000 %100 = fmul float %42, %97 %101 = fmul float %43, %99 br label %endif31 endif31: ; preds = %if23, %else27 %.010 = phi float [ %101, %else27 ], [ %43, %if23 ] %.09 = phi float [ %100, %else27 ], [ %42, %if23 ] %102 = fmul float %.09, 0x3F851D0820000000 %103 = fmul float %.010, 0x3F851D0820000000 %104 = call float @llvm.maxnum.f32(float %102, float 0.000000e+00) %105 = call float @llvm.maxnum.f32(float %103, float 0x3F947AE140000000) %106 = call float @llvm.maxnum.f32(float %104, float %105) %107 = fmul float %106, 2.550000e+02 %108 = call float @llvm.ceil.f32(float %107) %109 = fmul float %108, 0x3F70101020000000 %110 = call float @llvm.maxnum.f32(float %109, float 0x3F947AE140000000) %111 = fdiv float 1.000000e+00, %110, !fpmath !1 %112 = fmul float %111, 0.000000e+00 %113 = fmul float %102, %111 %114 = fmul float %103, %111 br label %endif44 endif44: ; preds = %endif22, %endif31 %.17 = phi float [ %110, %endif31 ], [ %.06, %endif22 ] %.15 = phi float [ %114, %endif31 ], [ %.04, %endif22 ] %.13 = phi float [ %113, %endif31 ], [ %.02, %endif22 ] %.1 = phi float [ %112, %endif31 ], [ %.0, %endif22 ] %115 = bitcast float %5 to i32 %116 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> undef, i32 %115, 10 %117 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %116, float %.1, 11 %118 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %117, float %.13, 12 %119 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %118, float %.15, 13 %120 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %119, float %.17, 14 %121 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %120, float %21, 24 ret <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %121 } ; Function Attrs: nounwind readnone declare float @llvm.SI.fs.interp(i32, i32, i32, <2 x i32>) #1 ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #1 ; Function Attrs: nounwind declare void @llvm.AMDGPU.kill(float) #2 ; Function Attrs: nounwind readnone declare float @llvm.AMDGPU.clamp.(float, float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.pow.f32(float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.maxnum.f32(float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.minnum.f32(float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.ceil.f32(float) #1 attributes #0 = { "InitialPSInputAddr"="36983" } attributes #1 = { nounwind readnone } attributes #2 = { nounwind } !0 = !{} !1 = !{float 2.500000e+00} FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL IN[1], GENERIC[1], PERSPECTIVE DCL IN[2], GENERIC[2], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SVIEW[0], 2D, FLOAT DCL CONST[1] DCL TEMP[0..3], LOCAL IMM[0] FLT32 { 2.0000, 1.0000, 0.0000, 0.0000} 0: MOV TEMP[0].xy, IN[1].zwzz 1: MOV TEMP[0].z, IN[2].xxxx 2: MOV TEMP[1].xy, IN[1].xyyy 3: TEX TEMP[1], TEMP[1], SAMP[0], 2D 4: MUL TEMP[2].xyz, TEMP[1], IN[0] 5: MOV TEMP[2].xyz, TEMP[2].xyzx 6: MUL TEMP[3].xyz, TEMP[2], IMM[0].xxxx 7: MUL TEMP[1].x, TEMP[1].wwww, IN[0].wwww 8: MOV TEMP[2].w, TEMP[1].xxxx 9: FSGE TEMP[1].x, CONST[1].xxxx, TEMP[1].xxxx 10: AND TEMP[1].x, TEMP[1].xxxx, IMM[0].yyyy 11: KILL_IF -TEMP[1].xxxx 12: ADD TEMP[2].xyz, TEMP[3].xyzz, TEMP[0].xyzz 13: MOV OUT[0], TEMP[2] 14: END radeonsi: Compiling shader 50 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_ps <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), float inreg, i32 inreg, <2 x i32>, <2 x i32>, <2 x i32>, <3 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, float, float, float, float, float, i32, i32, float, i32) #0 { main_body: %23 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %24 = call float @llvm.SI.fs.interp(i32 3, i32 1, i32 %6, <2 x i32> %8) %25 = call float @llvm.SI.fs.interp(i32 0, i32 2, i32 %6, <2 x i32> %8) %26 = call float @llvm.SI.fs.interp(i32 0, i32 1, i32 %6, <2 x i32> %8) %27 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %28 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 0, !amdgpu.uniform !0 %29 = load <8 x i32>, <8 x i32> addrspace(2)* %28, align 32, !invariant.load !0 %30 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %31 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %30, i64 0, i64 3, !amdgpu.uniform !0 %32 = load <4 x i32>, <4 x i32> addrspace(2)* %31, align 16, !invariant.load !0 %33 = bitcast float %26 to i32 %34 = bitcast float %27 to i32 %35 = insertelement <2 x i32> undef, i32 %33, i32 0 %36 = insertelement <2 x i32> %35, i32 %34, i32 1 %37 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %36, <8 x i32> %29, <4 x i32> %32, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %38 = extractelement <4 x float> %37, i32 0 %39 = extractelement <4 x float> %37, i32 1 %40 = extractelement <4 x float> %37, i32 2 %41 = extractelement <4 x float> %37, i32 3 %42 = call float @llvm.SI.fs.interp(i32 0, i32 0, i32 %6, <2 x i32> %8) %43 = fmul float %38, %42 %44 = call float @llvm.SI.fs.interp(i32 1, i32 0, i32 %6, <2 x i32> %8) %45 = fmul float %39, %44 %46 = call float @llvm.SI.fs.interp(i32 2, i32 0, i32 %6, <2 x i32> %8) %47 = fmul float %40, %46 %48 = fmul float %43, 2.000000e+00 %49 = fmul float %45, 2.000000e+00 %50 = fmul float %47, 2.000000e+00 %51 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %6, <2 x i32> %8) %52 = fmul float %41, %51 %53 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %54 = load <16 x i8>, <16 x i8> addrspace(2)* %53, align 16, !invariant.load !0 %55 = call float @llvm.SI.load.const(<16 x i8> %54, i32 16) %56 = fcmp oge float %55, %52 %57 = select i1 %56, float -1.000000e+00, float 0.000000e+00 call void @llvm.AMDGPU.kill(float %57) %58 = fadd float %48, %23 %59 = fadd float %49, %24 %60 = fadd float %50, %25 %61 = bitcast float %5 to i32 %62 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> undef, i32 %61, 10 %63 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %62, float %58, 11 %64 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %63, float %59, 12 %65 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %64, float %60, 13 %66 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %65, float %52, 14 %67 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %66, float %21, 24 ret <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %67 } ; Function Attrs: nounwind readnone declare float @llvm.SI.fs.interp(i32, i32, i32, <2 x i32>) #1 ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #1 ; Function Attrs: nounwind declare void @llvm.AMDGPU.kill(float) #2 attributes #0 = { "InitialPSInputAddr"="36983" } attributes #1 = { nounwind readnone } attributes #2 = { nounwind } !0 = !{} VERT PROPERTY NEXT_SHADER FRAG DCL IN[0] DCL IN[1] DCL IN[2] DCL IN[3] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] DCL OUT[2], GENERIC[1] DCL CONST[0..5] DCL TEMP[0..3], LOCAL 0: MOV_SAT TEMP[0], IN[1] 1: MUL TEMP[1], CONST[2], IN[0].xxxx 2: MAD TEMP[1], CONST[3], IN[0].yyyy, TEMP[1] 3: MAD TEMP[1], CONST[4], IN[0].zzzz, TEMP[1] 4: ADD TEMP[1], TEMP[1], CONST[5] 5: MAD TEMP[2].xy, IN[3].xyyy, CONST[0].xyyy, CONST[0].zwww 6: MAD TEMP[3].xy, IN[2].xyyy, CONST[1].xyyy, CONST[1].zwww 7: MOV TEMP[2].zw, TEMP[3].yyxy 8: MOV OUT[2], TEMP[2] 9: MOV OUT[0], TEMP[1] 10: MOV OUT[1], TEMP[0] 11: END radeonsi: Compiling shader 51 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_vs <{ float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32, i32, i32, i32, i32, i32, i32, i32) { main_body: %18 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 0, !amdgpu.uniform !0 %19 = load <16 x i8>, <16 x i8> addrspace(2)* %18, align 16, !invariant.load !0 %20 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %19, i32 0, i32 %14) %21 = extractelement <4 x float> %20, i32 0 %22 = extractelement <4 x float> %20, i32 1 %23 = extractelement <4 x float> %20, i32 2 %24 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 1, !amdgpu.uniform !0 %25 = load <16 x i8>, <16 x i8> addrspace(2)* %24, align 16, !invariant.load !0 %26 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %25, i32 0, i32 %15) %27 = extractelement <4 x float> %26, i32 0 %28 = extractelement <4 x float> %26, i32 1 %29 = extractelement <4 x float> %26, i32 2 %30 = extractelement <4 x float> %26, i32 3 %31 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 2, !amdgpu.uniform !0 %32 = load <16 x i8>, <16 x i8> addrspace(2)* %31, align 16, !invariant.load !0 %33 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %32, i32 0, i32 %16) %34 = extractelement <4 x float> %33, i32 0 %35 = extractelement <4 x float> %33, i32 1 %36 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 3, !amdgpu.uniform !0 %37 = load <16 x i8>, <16 x i8> addrspace(2)* %36, align 16, !invariant.load !0 %38 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %37, i32 0, i32 %17) %39 = extractelement <4 x float> %38, i32 0 %40 = extractelement <4 x float> %38, i32 1 %41 = call float @llvm.AMDGPU.clamp.(float %27, float 0.000000e+00, float 1.000000e+00) %42 = call float @llvm.AMDGPU.clamp.(float %28, float 0.000000e+00, float 1.000000e+00) %43 = call float @llvm.AMDGPU.clamp.(float %29, float 0.000000e+00, float 1.000000e+00) %44 = call float @llvm.AMDGPU.clamp.(float %30, float 0.000000e+00, float 1.000000e+00) %45 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %46 = load <16 x i8>, <16 x i8> addrspace(2)* %45, align 16, !invariant.load !0 %47 = call float @llvm.SI.load.const(<16 x i8> %46, i32 32) %48 = fmul float %47, %21 %49 = call float @llvm.SI.load.const(<16 x i8> %46, i32 36) %50 = fmul float %49, %21 %51 = call float @llvm.SI.load.const(<16 x i8> %46, i32 40) %52 = fmul float %51, %21 %53 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %54 = load <16 x i8>, <16 x i8> addrspace(2)* %53, align 16, !invariant.load !0 %55 = call float @llvm.SI.load.const(<16 x i8> %54, i32 44) %56 = fmul float %55, %21 %57 = call float @llvm.SI.load.const(<16 x i8> %54, i32 48) %58 = fmul float %57, %22 %59 = fadd float %58, %48 %60 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %61 = load <16 x i8>, <16 x i8> addrspace(2)* %60, align 16, !invariant.load !0 %62 = call float @llvm.SI.load.const(<16 x i8> %61, i32 52) %63 = fmul float %62, %22 %64 = fadd float %63, %50 %65 = call float @llvm.SI.load.const(<16 x i8> %61, i32 56) %66 = fmul float %65, %22 %67 = fadd float %66, %52 %68 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %69 = load <16 x i8>, <16 x i8> addrspace(2)* %68, align 16, !invariant.load !0 %70 = call float @llvm.SI.load.const(<16 x i8> %69, i32 60) %71 = fmul float %70, %22 %72 = fadd float %71, %56 %73 = call float @llvm.SI.load.const(<16 x i8> %69, i32 64) %74 = fmul float %73, %23 %75 = fadd float %74, %59 %76 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %77 = load <16 x i8>, <16 x i8> addrspace(2)* %76, align 16, !invariant.load !0 %78 = call float @llvm.SI.load.const(<16 x i8> %77, i32 68) %79 = fmul float %78, %23 %80 = fadd float %79, %64 %81 = call float @llvm.SI.load.const(<16 x i8> %77, i32 72) %82 = fmul float %81, %23 %83 = fadd float %82, %67 %84 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %85 = load <16 x i8>, <16 x i8> addrspace(2)* %84, align 16, !invariant.load !0 %86 = call float @llvm.SI.load.const(<16 x i8> %85, i32 76) %87 = fmul float %86, %23 %88 = fadd float %87, %72 %89 = call float @llvm.SI.load.const(<16 x i8> %85, i32 80) %90 = fadd float %75, %89 %91 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %92 = load <16 x i8>, <16 x i8> addrspace(2)* %91, align 16, !invariant.load !0 %93 = call float @llvm.SI.load.const(<16 x i8> %92, i32 84) %94 = fadd float %80, %93 %95 = call float @llvm.SI.load.const(<16 x i8> %92, i32 88) %96 = fadd float %83, %95 %97 = call float @llvm.SI.load.const(<16 x i8> %92, i32 92) %98 = fadd float %88, %97 %99 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %100 = load <16 x i8>, <16 x i8> addrspace(2)* %99, align 16, !invariant.load !0 %101 = call float @llvm.SI.load.const(<16 x i8> %100, i32 0) %102 = call float @llvm.SI.load.const(<16 x i8> %100, i32 8) %103 = fmul float %39, %101 %104 = fadd float %103, %102 %105 = call float @llvm.SI.load.const(<16 x i8> %100, i32 4) %106 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %107 = load <16 x i8>, <16 x i8> addrspace(2)* %106, align 16, !invariant.load !0 %108 = call float @llvm.SI.load.const(<16 x i8> %107, i32 12) %109 = fmul float %40, %105 %110 = fadd float %109, %108 %111 = call float @llvm.SI.load.const(<16 x i8> %107, i32 16) %112 = call float @llvm.SI.load.const(<16 x i8> %107, i32 24) %113 = fmul float %34, %111 %114 = fadd float %113, %112 %115 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %116 = load <16 x i8>, <16 x i8> addrspace(2)* %115, align 16, !invariant.load !0 %117 = call float @llvm.SI.load.const(<16 x i8> %116, i32 20) %118 = call float @llvm.SI.load.const(<16 x i8> %116, i32 28) %119 = fmul float %35, %117 %120 = fadd float %119, %118 %121 = bitcast i32 %12 to float %122 = insertvalue <{ float, float, float }> undef, float %121, 2 call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 32, i32 0, float %41, float %42, float %43, float %44) call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 33, i32 0, float %104, float %110, float %114, float %120) call void @llvm.SI.export(i32 15, i32 0, i32 1, i32 12, i32 0, float %90, float %94, float %96, float %98) ret <{ float, float, float }> %122 } ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.vs.load.input(<16 x i8>, i32, i32) #0 ; Function Attrs: nounwind readnone declare float @llvm.AMDGPU.clamp.(float, float, float) #0 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #0 ; Function Attrs: nounwind declare void @llvm.SI.export(i32, i32, i32, i32, i32, float, float, float, float) #1 attributes #0 = { nounwind readnone } attributes #1 = { nounwind } !0 = !{} FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL IN[1], GENERIC[1], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL SVIEW[0], 2D, FLOAT DCL SVIEW[1], 2D, FLOAT DCL CONST[2..3] DCL TEMP[0..2], LOCAL IMM[0] FLT32 { 2.0000, 1.0000, 0.0000, 0.0000} 0: MOV TEMP[0].xy, IN[1].xyyy 1: TEX TEMP[0], TEMP[0], SAMP[0], 2D 2: MUL TEMP[0], TEMP[0], CONST[2] 3: MOV TEMP[1].xy, IN[1].zwww 4: TEX TEMP[1], TEMP[1], SAMP[1], 2D 5: MUL TEMP[2].xyz, TEMP[1], TEMP[0] 6: MOV TEMP[0].xyz, TEMP[2].xyzx 7: MUL TEMP[2].xyz, TEMP[0], IMM[0].xxxx 8: MOV TEMP[0].xyz, TEMP[2].xyzx 9: MUL TEMP[1].x, TEMP[1].wwww, IN[0].wwww 10: MOV TEMP[0].w, TEMP[1].xxxx 11: FSGE TEMP[1].x, CONST[3].xxxx, TEMP[1].xxxx 12: AND TEMP[1].x, TEMP[1].xxxx, IMM[0].yyyy 13: KILL_IF -TEMP[1].xxxx 14: MOV OUT[0], TEMP[0] 15: END radeonsi: Compiling shader 52 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_ps <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), float inreg, i32 inreg, <2 x i32>, <2 x i32>, <2 x i32>, <3 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, float, float, float, float, float, i32, i32, float, i32) #0 { main_body: %23 = call float @llvm.SI.fs.interp(i32 0, i32 1, i32 %6, <2 x i32> %8) %24 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %25 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 0, !amdgpu.uniform !0 %26 = load <8 x i32>, <8 x i32> addrspace(2)* %25, align 32, !invariant.load !0 %27 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %28 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %27, i64 0, i64 3, !amdgpu.uniform !0 %29 = load <4 x i32>, <4 x i32> addrspace(2)* %28, align 16, !invariant.load !0 %30 = bitcast float %23 to i32 %31 = bitcast float %24 to i32 %32 = insertelement <2 x i32> undef, i32 %30, i32 0 %33 = insertelement <2 x i32> %32, i32 %31, i32 1 %34 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %33, <8 x i32> %26, <4 x i32> %29, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %35 = extractelement <4 x float> %34, i32 0 %36 = extractelement <4 x float> %34, i32 1 %37 = extractelement <4 x float> %34, i32 2 %38 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %39 = load <16 x i8>, <16 x i8> addrspace(2)* %38, align 16, !invariant.load !0 %40 = call float @llvm.SI.load.const(<16 x i8> %39, i32 32) %41 = fmul float %35, %40 %42 = call float @llvm.SI.load.const(<16 x i8> %39, i32 36) %43 = fmul float %36, %42 %44 = call float @llvm.SI.load.const(<16 x i8> %39, i32 40) %45 = fmul float %37, %44 %46 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %47 = call float @llvm.SI.fs.interp(i32 3, i32 1, i32 %6, <2 x i32> %8) %48 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 2, !amdgpu.uniform !0 %49 = load <8 x i32>, <8 x i32> addrspace(2)* %48, align 32, !invariant.load !0 %50 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %51 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %50, i64 0, i64 7, !amdgpu.uniform !0 %52 = load <4 x i32>, <4 x i32> addrspace(2)* %51, align 16, !invariant.load !0 %53 = bitcast float %46 to i32 %54 = bitcast float %47 to i32 %55 = insertelement <2 x i32> undef, i32 %53, i32 0 %56 = insertelement <2 x i32> %55, i32 %54, i32 1 %57 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %56, <8 x i32> %49, <4 x i32> %52, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %58 = extractelement <4 x float> %57, i32 0 %59 = extractelement <4 x float> %57, i32 1 %60 = extractelement <4 x float> %57, i32 2 %61 = extractelement <4 x float> %57, i32 3 %62 = fmul float %58, %41 %63 = fmul float %59, %43 %64 = fmul float %60, %45 %65 = fmul float %62, 2.000000e+00 %66 = fmul float %63, 2.000000e+00 %67 = fmul float %64, 2.000000e+00 %68 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %6, <2 x i32> %8) %69 = fmul float %61, %68 %70 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %71 = load <16 x i8>, <16 x i8> addrspace(2)* %70, align 16, !invariant.load !0 %72 = call float @llvm.SI.load.const(<16 x i8> %71, i32 48) %73 = fcmp oge float %72, %69 %74 = select i1 %73, float -1.000000e+00, float 0.000000e+00 call void @llvm.AMDGPU.kill(float %74) %75 = bitcast float %5 to i32 %76 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> undef, i32 %75, 10 %77 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %76, float %65, 11 %78 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %77, float %66, 12 %79 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %78, float %67, 13 %80 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %79, float %69, 14 %81 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %80, float %21, 24 ret <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %81 } ; Function Attrs: nounwind readnone declare float @llvm.SI.fs.interp(i32, i32, i32, <2 x i32>) #1 ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #1 ; Function Attrs: nounwind declare void @llvm.AMDGPU.kill(float) #2 attributes #0 = { "InitialPSInputAddr"="36983" } attributes #1 = { nounwind readnone } attributes #2 = { nounwind } !0 = !{} VERT PROPERTY NEXT_SHADER FRAG DCL IN[0] DCL IN[1] DCL IN[2] DCL IN[3] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] DCL OUT[2], GENERIC[1] DCL CONST[0..5] DCL TEMP[0..3], LOCAL 0: MOV_SAT TEMP[0], IN[1] 1: MUL TEMP[1], CONST[2], IN[0].xxxx 2: MAD TEMP[1], CONST[3], IN[0].yyyy, TEMP[1] 3: MAD TEMP[1], CONST[4], IN[0].zzzz, TEMP[1] 4: ADD TEMP[1], TEMP[1], CONST[5] 5: MAD TEMP[2].xy, IN[3].xyyy, CONST[0].xyyy, CONST[0].zwww 6: MAD TEMP[3].xy, IN[2].xyyy, CONST[1].xyyy, CONST[1].zwww 7: MOV TEMP[2].zw, TEMP[3].yyxy 8: MOV OUT[0], TEMP[1] 9: MOV OUT[1], TEMP[0] 10: MOV OUT[2], TEMP[2] 11: END radeonsi: Compiling shader 53 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_vs <{ float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32, i32, i32, i32, i32, i32, i32, i32) { main_body: %18 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 0, !amdgpu.uniform !0 %19 = load <16 x i8>, <16 x i8> addrspace(2)* %18, align 16, !invariant.load !0 %20 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %19, i32 0, i32 %14) %21 = extractelement <4 x float> %20, i32 0 %22 = extractelement <4 x float> %20, i32 1 %23 = extractelement <4 x float> %20, i32 2 %24 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 1, !amdgpu.uniform !0 %25 = load <16 x i8>, <16 x i8> addrspace(2)* %24, align 16, !invariant.load !0 %26 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %25, i32 0, i32 %15) %27 = extractelement <4 x float> %26, i32 0 %28 = extractelement <4 x float> %26, i32 1 %29 = extractelement <4 x float> %26, i32 2 %30 = extractelement <4 x float> %26, i32 3 %31 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 2, !amdgpu.uniform !0 %32 = load <16 x i8>, <16 x i8> addrspace(2)* %31, align 16, !invariant.load !0 %33 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %32, i32 0, i32 %16) %34 = extractelement <4 x float> %33, i32 0 %35 = extractelement <4 x float> %33, i32 1 %36 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 3, !amdgpu.uniform !0 %37 = load <16 x i8>, <16 x i8> addrspace(2)* %36, align 16, !invariant.load !0 %38 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %37, i32 0, i32 %17) %39 = extractelement <4 x float> %38, i32 0 %40 = extractelement <4 x float> %38, i32 1 %41 = call float @llvm.AMDGPU.clamp.(float %27, float 0.000000e+00, float 1.000000e+00) %42 = call float @llvm.AMDGPU.clamp.(float %28, float 0.000000e+00, float 1.000000e+00) %43 = call float @llvm.AMDGPU.clamp.(float %29, float 0.000000e+00, float 1.000000e+00) %44 = call float @llvm.AMDGPU.clamp.(float %30, float 0.000000e+00, float 1.000000e+00) %45 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %46 = load <16 x i8>, <16 x i8> addrspace(2)* %45, align 16, !invariant.load !0 %47 = call float @llvm.SI.load.const(<16 x i8> %46, i32 32) %48 = fmul float %47, %21 %49 = call float @llvm.SI.load.const(<16 x i8> %46, i32 36) %50 = fmul float %49, %21 %51 = call float @llvm.SI.load.const(<16 x i8> %46, i32 40) %52 = fmul float %51, %21 %53 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %54 = load <16 x i8>, <16 x i8> addrspace(2)* %53, align 16, !invariant.load !0 %55 = call float @llvm.SI.load.const(<16 x i8> %54, i32 44) %56 = fmul float %55, %21 %57 = call float @llvm.SI.load.const(<16 x i8> %54, i32 48) %58 = fmul float %57, %22 %59 = fadd float %58, %48 %60 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %61 = load <16 x i8>, <16 x i8> addrspace(2)* %60, align 16, !invariant.load !0 %62 = call float @llvm.SI.load.const(<16 x i8> %61, i32 52) %63 = fmul float %62, %22 %64 = fadd float %63, %50 %65 = call float @llvm.SI.load.const(<16 x i8> %61, i32 56) %66 = fmul float %65, %22 %67 = fadd float %66, %52 %68 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %69 = load <16 x i8>, <16 x i8> addrspace(2)* %68, align 16, !invariant.load !0 %70 = call float @llvm.SI.load.const(<16 x i8> %69, i32 60) %71 = fmul float %70, %22 %72 = fadd float %71, %56 %73 = call float @llvm.SI.load.const(<16 x i8> %69, i32 64) %74 = fmul float %73, %23 %75 = fadd float %74, %59 %76 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %77 = load <16 x i8>, <16 x i8> addrspace(2)* %76, align 16, !invariant.load !0 %78 = call float @llvm.SI.load.const(<16 x i8> %77, i32 68) %79 = fmul float %78, %23 %80 = fadd float %79, %64 %81 = call float @llvm.SI.load.const(<16 x i8> %77, i32 72) %82 = fmul float %81, %23 %83 = fadd float %82, %67 %84 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %85 = load <16 x i8>, <16 x i8> addrspace(2)* %84, align 16, !invariant.load !0 %86 = call float @llvm.SI.load.const(<16 x i8> %85, i32 76) %87 = fmul float %86, %23 %88 = fadd float %87, %72 %89 = call float @llvm.SI.load.const(<16 x i8> %85, i32 80) %90 = fadd float %75, %89 %91 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %92 = load <16 x i8>, <16 x i8> addrspace(2)* %91, align 16, !invariant.load !0 %93 = call float @llvm.SI.load.const(<16 x i8> %92, i32 84) %94 = fadd float %80, %93 %95 = call float @llvm.SI.load.const(<16 x i8> %92, i32 88) %96 = fadd float %83, %95 %97 = call float @llvm.SI.load.const(<16 x i8> %92, i32 92) %98 = fadd float %88, %97 %99 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %100 = load <16 x i8>, <16 x i8> addrspace(2)* %99, align 16, !invariant.load !0 %101 = call float @llvm.SI.load.const(<16 x i8> %100, i32 0) %102 = call float @llvm.SI.load.const(<16 x i8> %100, i32 8) %103 = fmul float %39, %101 %104 = fadd float %103, %102 %105 = call float @llvm.SI.load.const(<16 x i8> %100, i32 4) %106 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %107 = load <16 x i8>, <16 x i8> addrspace(2)* %106, align 16, !invariant.load !0 %108 = call float @llvm.SI.load.const(<16 x i8> %107, i32 12) %109 = fmul float %40, %105 %110 = fadd float %109, %108 %111 = call float @llvm.SI.load.const(<16 x i8> %107, i32 16) %112 = call float @llvm.SI.load.const(<16 x i8> %107, i32 24) %113 = fmul float %34, %111 %114 = fadd float %113, %112 %115 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %116 = load <16 x i8>, <16 x i8> addrspace(2)* %115, align 16, !invariant.load !0 %117 = call float @llvm.SI.load.const(<16 x i8> %116, i32 20) %118 = call float @llvm.SI.load.const(<16 x i8> %116, i32 28) %119 = fmul float %35, %117 %120 = fadd float %119, %118 %121 = bitcast i32 %12 to float %122 = insertvalue <{ float, float, float }> undef, float %121, 2 call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 32, i32 0, float %41, float %42, float %43, float %44) call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 33, i32 0, float %104, float %110, float %114, float %120) call void @llvm.SI.export(i32 15, i32 0, i32 1, i32 12, i32 0, float %90, float %94, float %96, float %98) ret <{ float, float, float }> %122 } ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.vs.load.input(<16 x i8>, i32, i32) #0 ; Function Attrs: nounwind readnone declare float @llvm.AMDGPU.clamp.(float, float, float) #0 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #0 ; Function Attrs: nounwind declare void @llvm.SI.export(i32, i32, i32, i32, i32, float, float, float, float) #1 attributes #0 = { nounwind readnone } attributes #1 = { nounwind } !0 = !{} FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL IN[1], GENERIC[1], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL SVIEW[0], 2D, FLOAT DCL SVIEW[1], 2D, FLOAT DCL CONST[2..3] DCL TEMP[0..2], LOCAL IMM[0] FLT32 { 2.0000, 4.0000, 1.0000, 0.0000} 0: MOV TEMP[0].xy, IN[1].xyyy 1: TEX TEMP[0], TEMP[0], SAMP[0], 2D 2: MUL TEMP[0], TEMP[0], TEMP[0].wwww 3: MUL TEMP[0], TEMP[0], IMM[0].xxxx 4: MUL TEMP[0], TEMP[0], CONST[2] 5: MOV TEMP[1].xy, IN[1].zwww 6: TEX TEMP[1], TEMP[1], SAMP[1], 2D 7: MUL TEMP[2].xyz, TEMP[1], TEMP[0] 8: MOV TEMP[0].xyz, TEMP[2].xyzx 9: MUL TEMP[2].xyz, TEMP[0], IMM[0].yyyy 10: MOV TEMP[0].xyz, TEMP[2].xyzx 11: MUL TEMP[1].x, TEMP[1].wwww, IN[0].wwww 12: MOV TEMP[0].w, TEMP[1].xxxx 13: FSGE TEMP[1].x, CONST[3].xxxx, TEMP[1].xxxx 14: AND TEMP[1].x, TEMP[1].xxxx, IMM[0].zzzz 15: KILL_IF -TEMP[1].xxxx 16: MOV OUT[0], TEMP[0] 17: END radeonsi: Compiling shader 54 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_ps <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), float inreg, i32 inreg, <2 x i32>, <2 x i32>, <2 x i32>, <3 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, float, float, float, float, float, i32, i32, float, i32) #0 { main_body: %23 = call float @llvm.SI.fs.interp(i32 0, i32 1, i32 %6, <2 x i32> %8) %24 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %25 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 0, !amdgpu.uniform !0 %26 = load <8 x i32>, <8 x i32> addrspace(2)* %25, align 32, !invariant.load !0 %27 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %28 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %27, i64 0, i64 3, !amdgpu.uniform !0 %29 = load <4 x i32>, <4 x i32> addrspace(2)* %28, align 16, !invariant.load !0 %30 = bitcast float %23 to i32 %31 = bitcast float %24 to i32 %32 = insertelement <2 x i32> undef, i32 %30, i32 0 %33 = insertelement <2 x i32> %32, i32 %31, i32 1 %34 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %33, <8 x i32> %26, <4 x i32> %29, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %35 = extractelement <4 x float> %34, i32 0 %36 = extractelement <4 x float> %34, i32 1 %37 = extractelement <4 x float> %34, i32 2 %38 = extractelement <4 x float> %34, i32 3 %39 = fmul float %35, %38 %40 = fmul float %36, %38 %41 = fmul float %37, %38 %42 = fmul float %39, 2.000000e+00 %43 = fmul float %40, 2.000000e+00 %44 = fmul float %41, 2.000000e+00 %45 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %46 = load <16 x i8>, <16 x i8> addrspace(2)* %45, align 16, !invariant.load !0 %47 = call float @llvm.SI.load.const(<16 x i8> %46, i32 32) %48 = fmul float %42, %47 %49 = call float @llvm.SI.load.const(<16 x i8> %46, i32 36) %50 = fmul float %43, %49 %51 = call float @llvm.SI.load.const(<16 x i8> %46, i32 40) %52 = fmul float %44, %51 %53 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %54 = call float @llvm.SI.fs.interp(i32 3, i32 1, i32 %6, <2 x i32> %8) %55 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 2, !amdgpu.uniform !0 %56 = load <8 x i32>, <8 x i32> addrspace(2)* %55, align 32, !invariant.load !0 %57 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %58 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %57, i64 0, i64 7, !amdgpu.uniform !0 %59 = load <4 x i32>, <4 x i32> addrspace(2)* %58, align 16, !invariant.load !0 %60 = bitcast float %53 to i32 %61 = bitcast float %54 to i32 %62 = insertelement <2 x i32> undef, i32 %60, i32 0 %63 = insertelement <2 x i32> %62, i32 %61, i32 1 %64 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %63, <8 x i32> %56, <4 x i32> %59, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %65 = extractelement <4 x float> %64, i32 0 %66 = extractelement <4 x float> %64, i32 1 %67 = extractelement <4 x float> %64, i32 2 %68 = extractelement <4 x float> %64, i32 3 %69 = fmul float %65, %48 %70 = fmul float %66, %50 %71 = fmul float %67, %52 %72 = fmul float %69, 4.000000e+00 %73 = fmul float %70, 4.000000e+00 %74 = fmul float %71, 4.000000e+00 %75 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %6, <2 x i32> %8) %76 = fmul float %68, %75 %77 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %78 = load <16 x i8>, <16 x i8> addrspace(2)* %77, align 16, !invariant.load !0 %79 = call float @llvm.SI.load.const(<16 x i8> %78, i32 48) %80 = fcmp oge float %79, %76 %81 = select i1 %80, float -1.000000e+00, float 0.000000e+00 call void @llvm.AMDGPU.kill(float %81) %82 = bitcast float %5 to i32 %83 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> undef, i32 %82, 10 %84 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %83, float %72, 11 %85 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %84, float %73, 12 %86 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %85, float %74, 13 %87 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %86, float %76, 14 %88 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %87, float %21, 24 ret <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %88 } ; Function Attrs: nounwind readnone declare float @llvm.SI.fs.interp(i32, i32, i32, <2 x i32>) #1 ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #1 ; Function Attrs: nounwind declare void @llvm.AMDGPU.kill(float) #2 attributes #0 = { "InitialPSInputAddr"="36983" } attributes #1 = { nounwind readnone } attributes #2 = { nounwind } !0 = !{} VERT PROPERTY NEXT_SHADER FRAG DCL IN[0] DCL IN[1] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] DCL CONST[0..5] DCL TEMP[0..2], LOCAL 0: MUL TEMP[0], CONST[2], IN[0].xxxx 1: MAD TEMP[0], CONST[3], IN[0].yyyy, TEMP[0] 2: MAD TEMP[0], CONST[4], IN[0].zzzz, TEMP[0] 3: ADD TEMP[0], TEMP[0], CONST[5] 4: MOV TEMP[1].xyw, TEMP[0].xyxw 5: RCP TEMP[2].x, TEMP[0].wwww 6: MUL TEMP[2].x, CONST[0].xxxx, TEMP[2].xxxx 7: MOV_SAT TEMP[2].x, TEMP[2].xxxx 8: ADD TEMP[2].x, TEMP[0].zzzz, TEMP[2].xxxx 9: MAX TEMP[0].x, TEMP[2].xxxx, -TEMP[0].wwww 10: LRP TEMP[0].x, CONST[0].yyyy, TEMP[0].xxxx, TEMP[2].xxxx 11: MOV TEMP[1].z, TEMP[0].xxxx 12: MAD TEMP[0].xy, IN[1].xyyy, CONST[1].xyyy, CONST[1].zwww 13: MOV OUT[0], TEMP[1] 14: MOV OUT[1], TEMP[0] 15: END radeonsi: Compiling shader 55 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_vs <{ float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32, i32, i32, i32, i32, i32) { main_body: %16 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 0, !amdgpu.uniform !0 %17 = load <16 x i8>, <16 x i8> addrspace(2)* %16, align 16, !invariant.load !0 %18 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %17, i32 0, i32 %14) %19 = extractelement <4 x float> %18, i32 0 %20 = extractelement <4 x float> %18, i32 1 %21 = extractelement <4 x float> %18, i32 2 %22 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 1, !amdgpu.uniform !0 %23 = load <16 x i8>, <16 x i8> addrspace(2)* %22, align 16, !invariant.load !0 %24 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %23, i32 0, i32 %15) %25 = extractelement <4 x float> %24, i32 0 %26 = extractelement <4 x float> %24, i32 1 %27 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %28 = load <16 x i8>, <16 x i8> addrspace(2)* %27, align 16, !invariant.load !0 %29 = call float @llvm.SI.load.const(<16 x i8> %28, i32 32) %30 = fmul float %29, %19 %31 = call float @llvm.SI.load.const(<16 x i8> %28, i32 36) %32 = fmul float %31, %19 %33 = call float @llvm.SI.load.const(<16 x i8> %28, i32 40) %34 = fmul float %33, %19 %35 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %36 = load <16 x i8>, <16 x i8> addrspace(2)* %35, align 16, !invariant.load !0 %37 = call float @llvm.SI.load.const(<16 x i8> %36, i32 44) %38 = fmul float %37, %19 %39 = call float @llvm.SI.load.const(<16 x i8> %36, i32 48) %40 = fmul float %39, %20 %41 = fadd float %40, %30 %42 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %43 = load <16 x i8>, <16 x i8> addrspace(2)* %42, align 16, !invariant.load !0 %44 = call float @llvm.SI.load.const(<16 x i8> %43, i32 52) %45 = fmul float %44, %20 %46 = fadd float %45, %32 %47 = call float @llvm.SI.load.const(<16 x i8> %43, i32 56) %48 = fmul float %47, %20 %49 = fadd float %48, %34 %50 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %51 = load <16 x i8>, <16 x i8> addrspace(2)* %50, align 16, !invariant.load !0 %52 = call float @llvm.SI.load.const(<16 x i8> %51, i32 60) %53 = fmul float %52, %20 %54 = fadd float %53, %38 %55 = call float @llvm.SI.load.const(<16 x i8> %51, i32 64) %56 = fmul float %55, %21 %57 = fadd float %56, %41 %58 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %59 = load <16 x i8>, <16 x i8> addrspace(2)* %58, align 16, !invariant.load !0 %60 = call float @llvm.SI.load.const(<16 x i8> %59, i32 68) %61 = fmul float %60, %21 %62 = fadd float %61, %46 %63 = call float @llvm.SI.load.const(<16 x i8> %59, i32 72) %64 = fmul float %63, %21 %65 = fadd float %64, %49 %66 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %67 = load <16 x i8>, <16 x i8> addrspace(2)* %66, align 16, !invariant.load !0 %68 = call float @llvm.SI.load.const(<16 x i8> %67, i32 76) %69 = fmul float %68, %21 %70 = fadd float %69, %54 %71 = call float @llvm.SI.load.const(<16 x i8> %67, i32 80) %72 = fadd float %57, %71 %73 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %74 = load <16 x i8>, <16 x i8> addrspace(2)* %73, align 16, !invariant.load !0 %75 = call float @llvm.SI.load.const(<16 x i8> %74, i32 84) %76 = fadd float %62, %75 %77 = call float @llvm.SI.load.const(<16 x i8> %74, i32 88) %78 = fadd float %65, %77 %79 = call float @llvm.SI.load.const(<16 x i8> %74, i32 92) %80 = fadd float %70, %79 %81 = fdiv float 1.000000e+00, %80, !fpmath !1 %82 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %83 = load <16 x i8>, <16 x i8> addrspace(2)* %82, align 16, !invariant.load !0 %84 = call float @llvm.SI.load.const(<16 x i8> %83, i32 0) %85 = fmul float %84, %81 %86 = call float @llvm.AMDGPU.clamp.(float %85, float 0.000000e+00, float 1.000000e+00) %87 = fadd float %78, %86 %88 = fsub float -0.000000e+00, %80 %89 = call float @llvm.maxnum.f32(float %87, float %88) %90 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %91 = load <16 x i8>, <16 x i8> addrspace(2)* %90, align 16, !invariant.load !0 %92 = call float @llvm.SI.load.const(<16 x i8> %91, i32 4) %93 = fsub float 1.000000e+00, %92 %94 = fmul float %89, %92 %95 = fmul float %87, %93 %96 = fadd float %94, %95 %97 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %98 = load <16 x i8>, <16 x i8> addrspace(2)* %97, align 16, !invariant.load !0 %99 = call float @llvm.SI.load.const(<16 x i8> %98, i32 16) %100 = call float @llvm.SI.load.const(<16 x i8> %98, i32 24) %101 = fmul float %25, %99 %102 = fadd float %101, %100 %103 = call float @llvm.SI.load.const(<16 x i8> %98, i32 20) %104 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %105 = load <16 x i8>, <16 x i8> addrspace(2)* %104, align 16, !invariant.load !0 %106 = call float @llvm.SI.load.const(<16 x i8> %105, i32 28) %107 = fmul float %26, %103 %108 = fadd float %107, %106 %109 = bitcast i32 %12 to float %110 = insertvalue <{ float, float, float }> undef, float %109, 2 call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 32, i32 0, float %102, float %108, float %78, float %80) call void @llvm.SI.export(i32 15, i32 0, i32 1, i32 12, i32 0, float %72, float %76, float %96, float %80) ret <{ float, float, float }> %110 } ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.vs.load.input(<16 x i8>, i32, i32) #0 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #0 ; Function Attrs: nounwind readnone declare float @llvm.AMDGPU.clamp.(float, float, float) #0 ; Function Attrs: nounwind readnone declare float @llvm.maxnum.f32(float, float) #0 ; Function Attrs: nounwind declare void @llvm.SI.export(i32, i32, i32, i32, i32, float, float, float, float) #1 attributes #0 = { nounwind readnone } attributes #1 = { nounwind } !0 = !{} !1 = !{float 2.500000e+00} FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SVIEW[0], 2D, FLOAT DCL CONST[1..2] DCL TEMP[0], LOCAL IMM[0] FLT32 { 1.0000, 0.0000, 0.0000, 0.0000} 0: MOV TEMP[0].xy, IN[0].xyyy 1: TEX TEMP[0].w, TEMP[0], SAMP[0], 2D 2: MUL TEMP[0].x, TEMP[0].wwww, CONST[2].wwww 3: FSLT TEMP[0].x, TEMP[0].xxxx, CONST[1].xxxx 4: AND TEMP[0].x, TEMP[0].xxxx, IMM[0].xxxx 5: KILL_IF -TEMP[0].xxxx 6: MOV OUT[0], IMM[0].yyyy 7: END radeonsi: Compiling shader 56 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_ps <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), float inreg, i32 inreg, <2 x i32>, <2 x i32>, <2 x i32>, <3 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, float, float, float, float, float, i32, i32, float, i32) #0 { main_body: %23 = call float @llvm.SI.fs.interp(i32 0, i32 0, i32 %6, <2 x i32> %8) %24 = call float @llvm.SI.fs.interp(i32 1, i32 0, i32 %6, <2 x i32> %8) %25 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 0, !amdgpu.uniform !0 %26 = load <8 x i32>, <8 x i32> addrspace(2)* %25, align 32, !invariant.load !0 %27 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %28 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %27, i64 0, i64 3, !amdgpu.uniform !0 %29 = load <4 x i32>, <4 x i32> addrspace(2)* %28, align 16, !invariant.load !0 %30 = bitcast float %23 to i32 %31 = bitcast float %24 to i32 %32 = insertelement <2 x i32> undef, i32 %30, i32 0 %33 = insertelement <2 x i32> %32, i32 %31, i32 1 %34 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %33, <8 x i32> %26, <4 x i32> %29, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %35 = extractelement <4 x float> %34, i32 3 %36 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %37 = load <16 x i8>, <16 x i8> addrspace(2)* %36, align 16, !invariant.load !0 %38 = call float @llvm.SI.load.const(<16 x i8> %37, i32 44) %39 = fmul float %35, %38 %40 = call float @llvm.SI.load.const(<16 x i8> %37, i32 16) %41 = fcmp olt float %39, %40 %42 = select i1 %41, float -1.000000e+00, float 0.000000e+00 call void @llvm.AMDGPU.kill(float %42) %43 = bitcast float %5 to i32 %44 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> undef, i32 %43, 10 %45 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %44, float 0.000000e+00, 11 %46 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %45, float 0.000000e+00, 12 %47 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %46, float 0.000000e+00, 13 %48 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %47, float 0.000000e+00, 14 %49 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %48, float %21, 24 ret <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %49 } ; Function Attrs: nounwind readnone declare float @llvm.SI.fs.interp(i32, i32, i32, <2 x i32>) #1 ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #1 ; Function Attrs: nounwind declare void @llvm.AMDGPU.kill(float) #2 attributes #0 = { "InitialPSInputAddr"="36983" } attributes #1 = { nounwind readnone } attributes #2 = { nounwind } !0 = !{} VERT PROPERTY NEXT_SHADER FRAG DCL IN[0] DCL IN[1] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] DCL OUT[2], GENERIC[1] DCL OUT[3], GENERIC[2] DCL OUT[4], GENERIC[3] DCL OUT[5], GENERIC[4] DCL CONST[0..28] DCL TEMP[0..6], LOCAL 0: MUL TEMP[0], CONST[16], IN[0].xxxx 1: MAD TEMP[0], CONST[17], IN[0].yyyy, TEMP[0] 2: MAD TEMP[0], CONST[18], IN[0].zzzz, TEMP[0] 3: MAD TEMP[0], CONST[19], IN[0].wwww, TEMP[0] 4: MOV TEMP[1].xyz, TEMP[0].xyzx 5: MUL TEMP[2], CONST[25], IN[0].xxxx 6: MAD TEMP[2], CONST[26], IN[0].yyyy, TEMP[2] 7: MAD TEMP[2], CONST[27], IN[0].zzzz, TEMP[2] 8: MAD TEMP[2].z, CONST[28], IN[0].wwww, TEMP[2] 9: MOV TEMP[1].w, -TEMP[2].zzzz 10: MUL TEMP[2], CONST[21], IN[0].xxxx 11: MAD TEMP[2], CONST[22], IN[0].yyyy, TEMP[2] 12: MAD TEMP[2], CONST[23], IN[0].zzzz, TEMP[2] 13: MAD TEMP[2], CONST[24], IN[0].wwww, TEMP[2] 14: MUL TEMP[3], CONST[0], TEMP[0].xxxx 15: MAD TEMP[3], CONST[1], TEMP[0].yyyy, TEMP[3] 16: MAD TEMP[3], CONST[2], TEMP[0].zzzz, TEMP[3] 17: MAD TEMP[3].xyz, CONST[3], TEMP[0].wwww, TEMP[3] 18: MUL TEMP[4], CONST[12], TEMP[0].xxxx 19: MAD TEMP[4], CONST[13], TEMP[0].yyyy, TEMP[4] 20: MAD TEMP[4], CONST[14], TEMP[0].zzzz, TEMP[4] 21: MAD TEMP[4].xyz, CONST[15], TEMP[0].wwww, TEMP[4] 22: MOV TEMP[5].zw, TEMP[3].yyxy 23: MOV TEMP[3].x, TEMP[3].zzzz 24: MUL TEMP[6], CONST[4], TEMP[0].xxxx 25: MAD TEMP[6], CONST[5], TEMP[0].yyyy, TEMP[6] 26: MAD TEMP[6], CONST[6], TEMP[0].zzzz, TEMP[6] 27: MAD TEMP[6].xyz, CONST[7], TEMP[0].wwww, TEMP[6] 28: MOV TEMP[3].yzw, TEMP[6].yxyz 29: MUL TEMP[6], CONST[8], TEMP[0].xxxx 30: MAD TEMP[6], CONST[9], TEMP[0].yyyy, TEMP[6] 31: MAD TEMP[6], CONST[10], TEMP[0].zzzz, TEMP[6] 32: MAD TEMP[0].xyz, CONST[11], TEMP[0].wwww, TEMP[6] 33: MOV TEMP[0].xyz, TEMP[0].xyzx 34: MOV TEMP[0].w, TEMP[4].xxxx 35: MOV TEMP[4].xy, TEMP[4].yzyy 36: MAD TEMP[5].xy, IN[1].xyyy, CONST[20].xyyy, CONST[20].zwww 37: MOV OUT[3], TEMP[3] 38: MOV OUT[1], TEMP[1] 39: MOV OUT[0], TEMP[2] 40: MOV OUT[5], TEMP[4] 41: MOV OUT[4], TEMP[0] 42: MOV OUT[2], TEMP[5] 43: END radeonsi: Compiling shader 57 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_vs <{ float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32, i32, i32, i32, i32, i32) { main_body: %16 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 0, !amdgpu.uniform !0 %17 = load <16 x i8>, <16 x i8> addrspace(2)* %16, align 16, !invariant.load !0 %18 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %17, i32 0, i32 %14) %19 = extractelement <4 x float> %18, i32 0 %20 = extractelement <4 x float> %18, i32 1 %21 = extractelement <4 x float> %18, i32 2 %22 = extractelement <4 x float> %18, i32 3 %23 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 1, !amdgpu.uniform !0 %24 = load <16 x i8>, <16 x i8> addrspace(2)* %23, align 16, !invariant.load !0 %25 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %24, i32 0, i32 %15) %26 = extractelement <4 x float> %25, i32 0 %27 = extractelement <4 x float> %25, i32 1 %28 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %29 = load <16 x i8>, <16 x i8> addrspace(2)* %28, align 16, !invariant.load !0 %30 = call float @llvm.SI.load.const(<16 x i8> %29, i32 256) %31 = fmul float %30, %19 %32 = call float @llvm.SI.load.const(<16 x i8> %29, i32 260) %33 = fmul float %32, %19 %34 = call float @llvm.SI.load.const(<16 x i8> %29, i32 264) %35 = fmul float %34, %19 %36 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %37 = load <16 x i8>, <16 x i8> addrspace(2)* %36, align 16, !invariant.load !0 %38 = call float @llvm.SI.load.const(<16 x i8> %37, i32 268) %39 = fmul float %38, %19 %40 = call float @llvm.SI.load.const(<16 x i8> %37, i32 272) %41 = fmul float %40, %20 %42 = fadd float %41, %31 %43 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %44 = load <16 x i8>, <16 x i8> addrspace(2)* %43, align 16, !invariant.load !0 %45 = call float @llvm.SI.load.const(<16 x i8> %44, i32 276) %46 = fmul float %45, %20 %47 = fadd float %46, %33 %48 = call float @llvm.SI.load.const(<16 x i8> %44, i32 280) %49 = fmul float %48, %20 %50 = fadd float %49, %35 %51 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %52 = load <16 x i8>, <16 x i8> addrspace(2)* %51, align 16, !invariant.load !0 %53 = call float @llvm.SI.load.const(<16 x i8> %52, i32 284) %54 = fmul float %53, %20 %55 = fadd float %54, %39 %56 = call float @llvm.SI.load.const(<16 x i8> %52, i32 288) %57 = fmul float %56, %21 %58 = fadd float %57, %42 %59 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %60 = load <16 x i8>, <16 x i8> addrspace(2)* %59, align 16, !invariant.load !0 %61 = call float @llvm.SI.load.const(<16 x i8> %60, i32 292) %62 = fmul float %61, %21 %63 = fadd float %62, %47 %64 = call float @llvm.SI.load.const(<16 x i8> %60, i32 296) %65 = fmul float %64, %21 %66 = fadd float %65, %50 %67 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %68 = load <16 x i8>, <16 x i8> addrspace(2)* %67, align 16, !invariant.load !0 %69 = call float @llvm.SI.load.const(<16 x i8> %68, i32 300) %70 = fmul float %69, %21 %71 = fadd float %70, %55 %72 = call float @llvm.SI.load.const(<16 x i8> %68, i32 304) %73 = fmul float %72, %22 %74 = fadd float %73, %58 %75 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %76 = load <16 x i8>, <16 x i8> addrspace(2)* %75, align 16, !invariant.load !0 %77 = call float @llvm.SI.load.const(<16 x i8> %76, i32 308) %78 = fmul float %77, %22 %79 = fadd float %78, %63 %80 = call float @llvm.SI.load.const(<16 x i8> %76, i32 312) %81 = fmul float %80, %22 %82 = fadd float %81, %66 %83 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %84 = load <16 x i8>, <16 x i8> addrspace(2)* %83, align 16, !invariant.load !0 %85 = call float @llvm.SI.load.const(<16 x i8> %84, i32 316) %86 = fmul float %85, %22 %87 = fadd float %86, %71 %88 = call float @llvm.SI.load.const(<16 x i8> %84, i32 408) %89 = fmul float %88, %19 %90 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %91 = load <16 x i8>, <16 x i8> addrspace(2)* %90, align 16, !invariant.load !0 %92 = call float @llvm.SI.load.const(<16 x i8> %91, i32 424) %93 = fmul float %92, %20 %94 = fadd float %93, %89 %95 = call float @llvm.SI.load.const(<16 x i8> %91, i32 440) %96 = fmul float %95, %21 %97 = fadd float %96, %94 %98 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %99 = load <16 x i8>, <16 x i8> addrspace(2)* %98, align 16, !invariant.load !0 %100 = call float @llvm.SI.load.const(<16 x i8> %99, i32 456) %101 = fmul float %100, %22 %102 = fadd float %101, %97 %103 = fsub float -0.000000e+00, %102 %104 = call float @llvm.SI.load.const(<16 x i8> %99, i32 336) %105 = fmul float %104, %19 %106 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %107 = load <16 x i8>, <16 x i8> addrspace(2)* %106, align 16, !invariant.load !0 %108 = call float @llvm.SI.load.const(<16 x i8> %107, i32 340) %109 = fmul float %108, %19 %110 = call float @llvm.SI.load.const(<16 x i8> %107, i32 344) %111 = fmul float %110, %19 %112 = call float @llvm.SI.load.const(<16 x i8> %107, i32 348) %113 = fmul float %112, %19 %114 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %115 = load <16 x i8>, <16 x i8> addrspace(2)* %114, align 16, !invariant.load !0 %116 = call float @llvm.SI.load.const(<16 x i8> %115, i32 352) %117 = fmul float %116, %20 %118 = fadd float %117, %105 %119 = call float @llvm.SI.load.const(<16 x i8> %115, i32 356) %120 = fmul float %119, %20 %121 = fadd float %120, %109 %122 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %123 = load <16 x i8>, <16 x i8> addrspace(2)* %122, align 16, !invariant.load !0 %124 = call float @llvm.SI.load.const(<16 x i8> %123, i32 360) %125 = fmul float %124, %20 %126 = fadd float %125, %111 %127 = call float @llvm.SI.load.const(<16 x i8> %123, i32 364) %128 = fmul float %127, %20 %129 = fadd float %128, %113 %130 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %131 = load <16 x i8>, <16 x i8> addrspace(2)* %130, align 16, !invariant.load !0 %132 = call float @llvm.SI.load.const(<16 x i8> %131, i32 368) %133 = fmul float %132, %21 %134 = fadd float %133, %118 %135 = call float @llvm.SI.load.const(<16 x i8> %131, i32 372) %136 = fmul float %135, %21 %137 = fadd float %136, %121 %138 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %139 = load <16 x i8>, <16 x i8> addrspace(2)* %138, align 16, !invariant.load !0 %140 = call float @llvm.SI.load.const(<16 x i8> %139, i32 376) %141 = fmul float %140, %21 %142 = fadd float %141, %126 %143 = call float @llvm.SI.load.const(<16 x i8> %139, i32 380) %144 = fmul float %143, %21 %145 = fadd float %144, %129 %146 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %147 = load <16 x i8>, <16 x i8> addrspace(2)* %146, align 16, !invariant.load !0 %148 = call float @llvm.SI.load.const(<16 x i8> %147, i32 384) %149 = fmul float %148, %22 %150 = fadd float %149, %134 %151 = call float @llvm.SI.load.const(<16 x i8> %147, i32 388) %152 = fmul float %151, %22 %153 = fadd float %152, %137 %154 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %155 = load <16 x i8>, <16 x i8> addrspace(2)* %154, align 16, !invariant.load !0 %156 = call float @llvm.SI.load.const(<16 x i8> %155, i32 392) %157 = fmul float %156, %22 %158 = fadd float %157, %142 %159 = call float @llvm.SI.load.const(<16 x i8> %155, i32 396) %160 = fmul float %159, %22 %161 = fadd float %160, %145 %162 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %163 = load <16 x i8>, <16 x i8> addrspace(2)* %162, align 16, !invariant.load !0 %164 = call float @llvm.SI.load.const(<16 x i8> %163, i32 0) %165 = fmul float %164, %74 %166 = call float @llvm.SI.load.const(<16 x i8> %163, i32 4) %167 = fmul float %166, %74 %168 = call float @llvm.SI.load.const(<16 x i8> %163, i32 8) %169 = fmul float %168, %74 %170 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %171 = load <16 x i8>, <16 x i8> addrspace(2)* %170, align 16, !invariant.load !0 %172 = call float @llvm.SI.load.const(<16 x i8> %171, i32 16) %173 = fmul float %172, %79 %174 = fadd float %173, %165 %175 = call float @llvm.SI.load.const(<16 x i8> %171, i32 20) %176 = fmul float %175, %79 %177 = fadd float %176, %167 %178 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %179 = load <16 x i8>, <16 x i8> addrspace(2)* %178, align 16, !invariant.load !0 %180 = call float @llvm.SI.load.const(<16 x i8> %179, i32 24) %181 = fmul float %180, %79 %182 = fadd float %181, %169 %183 = call float @llvm.SI.load.const(<16 x i8> %179, i32 32) %184 = fmul float %183, %82 %185 = fadd float %184, %174 %186 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %187 = load <16 x i8>, <16 x i8> addrspace(2)* %186, align 16, !invariant.load !0 %188 = call float @llvm.SI.load.const(<16 x i8> %187, i32 36) %189 = fmul float %188, %82 %190 = fadd float %189, %177 %191 = call float @llvm.SI.load.const(<16 x i8> %187, i32 40) %192 = fmul float %191, %82 %193 = fadd float %192, %182 %194 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %195 = load <16 x i8>, <16 x i8> addrspace(2)* %194, align 16, !invariant.load !0 %196 = call float @llvm.SI.load.const(<16 x i8> %195, i32 48) %197 = fmul float %196, %87 %198 = fadd float %197, %185 %199 = call float @llvm.SI.load.const(<16 x i8> %195, i32 52) %200 = fmul float %199, %87 %201 = fadd float %200, %190 %202 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %203 = load <16 x i8>, <16 x i8> addrspace(2)* %202, align 16, !invariant.load !0 %204 = call float @llvm.SI.load.const(<16 x i8> %203, i32 56) %205 = fmul float %204, %87 %206 = fadd float %205, %193 %207 = call float @llvm.SI.load.const(<16 x i8> %203, i32 192) %208 = fmul float %207, %74 %209 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %210 = load <16 x i8>, <16 x i8> addrspace(2)* %209, align 16, !invariant.load !0 %211 = call float @llvm.SI.load.const(<16 x i8> %210, i32 196) %212 = fmul float %211, %74 %213 = call float @llvm.SI.load.const(<16 x i8> %210, i32 200) %214 = fmul float %213, %74 %215 = call float @llvm.SI.load.const(<16 x i8> %210, i32 204) %216 = fmul float %215, %74 %217 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %218 = load <16 x i8>, <16 x i8> addrspace(2)* %217, align 16, !invariant.load !0 %219 = call float @llvm.SI.load.const(<16 x i8> %218, i32 208) %220 = fmul float %219, %79 %221 = fadd float %220, %208 %222 = call float @llvm.SI.load.const(<16 x i8> %218, i32 212) %223 = fmul float %222, %79 %224 = fadd float %223, %212 %225 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %226 = load <16 x i8>, <16 x i8> addrspace(2)* %225, align 16, !invariant.load !0 %227 = call float @llvm.SI.load.const(<16 x i8> %226, i32 216) %228 = fmul float %227, %79 %229 = fadd float %228, %214 %230 = call float @llvm.SI.load.const(<16 x i8> %226, i32 220) %231 = fmul float %230, %79 %232 = fadd float %231, %216 %233 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %234 = load <16 x i8>, <16 x i8> addrspace(2)* %233, align 16, !invariant.load !0 %235 = call float @llvm.SI.load.const(<16 x i8> %234, i32 224) %236 = fmul float %235, %82 %237 = fadd float %236, %221 %238 = call float @llvm.SI.load.const(<16 x i8> %234, i32 228) %239 = fmul float %238, %82 %240 = fadd float %239, %224 %241 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %242 = load <16 x i8>, <16 x i8> addrspace(2)* %241, align 16, !invariant.load !0 %243 = call float @llvm.SI.load.const(<16 x i8> %242, i32 232) %244 = fmul float %243, %82 %245 = fadd float %244, %229 %246 = call float @llvm.SI.load.const(<16 x i8> %242, i32 236) %247 = fmul float %246, %82 %248 = fadd float %247, %232 %249 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %250 = load <16 x i8>, <16 x i8> addrspace(2)* %249, align 16, !invariant.load !0 %251 = call float @llvm.SI.load.const(<16 x i8> %250, i32 240) %252 = fmul float %251, %87 %253 = fadd float %252, %237 %254 = call float @llvm.SI.load.const(<16 x i8> %250, i32 244) %255 = fmul float %254, %87 %256 = fadd float %255, %240 %257 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %258 = load <16 x i8>, <16 x i8> addrspace(2)* %257, align 16, !invariant.load !0 %259 = call float @llvm.SI.load.const(<16 x i8> %258, i32 248) %260 = fmul float %259, %87 %261 = fadd float %260, %245 %262 = call float @llvm.SI.load.const(<16 x i8> %258, i32 64) %263 = fmul float %262, %74 %264 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %265 = load <16 x i8>, <16 x i8> addrspace(2)* %264, align 16, !invariant.load !0 %266 = call float @llvm.SI.load.const(<16 x i8> %265, i32 68) %267 = fmul float %266, %74 %268 = call float @llvm.SI.load.const(<16 x i8> %265, i32 72) %269 = fmul float %268, %74 %270 = call float @llvm.SI.load.const(<16 x i8> %265, i32 80) %271 = fmul float %270, %79 %272 = fadd float %271, %263 %273 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %274 = load <16 x i8>, <16 x i8> addrspace(2)* %273, align 16, !invariant.load !0 %275 = call float @llvm.SI.load.const(<16 x i8> %274, i32 84) %276 = fmul float %275, %79 %277 = fadd float %276, %267 %278 = call float @llvm.SI.load.const(<16 x i8> %274, i32 88) %279 = fmul float %278, %79 %280 = fadd float %279, %269 %281 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %282 = load <16 x i8>, <16 x i8> addrspace(2)* %281, align 16, !invariant.load !0 %283 = call float @llvm.SI.load.const(<16 x i8> %282, i32 96) %284 = fmul float %283, %82 %285 = fadd float %284, %272 %286 = call float @llvm.SI.load.const(<16 x i8> %282, i32 100) %287 = fmul float %286, %82 %288 = fadd float %287, %277 %289 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %290 = load <16 x i8>, <16 x i8> addrspace(2)* %289, align 16, !invariant.load !0 %291 = call float @llvm.SI.load.const(<16 x i8> %290, i32 104) %292 = fmul float %291, %82 %293 = fadd float %292, %280 %294 = call float @llvm.SI.load.const(<16 x i8> %290, i32 112) %295 = fmul float %294, %87 %296 = fadd float %295, %285 %297 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %298 = load <16 x i8>, <16 x i8> addrspace(2)* %297, align 16, !invariant.load !0 %299 = call float @llvm.SI.load.const(<16 x i8> %298, i32 116) %300 = fmul float %299, %87 %301 = fadd float %300, %288 %302 = call float @llvm.SI.load.const(<16 x i8> %298, i32 120) %303 = fmul float %302, %87 %304 = fadd float %303, %293 %305 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %306 = load <16 x i8>, <16 x i8> addrspace(2)* %305, align 16, !invariant.load !0 %307 = call float @llvm.SI.load.const(<16 x i8> %306, i32 128) %308 = fmul float %307, %74 %309 = call float @llvm.SI.load.const(<16 x i8> %306, i32 132) %310 = fmul float %309, %74 %311 = call float @llvm.SI.load.const(<16 x i8> %306, i32 136) %312 = fmul float %311, %74 %313 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %314 = load <16 x i8>, <16 x i8> addrspace(2)* %313, align 16, !invariant.load !0 %315 = call float @llvm.SI.load.const(<16 x i8> %314, i32 144) %316 = fmul float %315, %79 %317 = fadd float %316, %308 %318 = call float @llvm.SI.load.const(<16 x i8> %314, i32 148) %319 = fmul float %318, %79 %320 = fadd float %319, %310 %321 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %322 = load <16 x i8>, <16 x i8> addrspace(2)* %321, align 16, !invariant.load !0 %323 = call float @llvm.SI.load.const(<16 x i8> %322, i32 152) %324 = fmul float %323, %79 %325 = fadd float %324, %312 %326 = call float @llvm.SI.load.const(<16 x i8> %322, i32 160) %327 = fmul float %326, %82 %328 = fadd float %327, %317 %329 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %330 = load <16 x i8>, <16 x i8> addrspace(2)* %329, align 16, !invariant.load !0 %331 = call float @llvm.SI.load.const(<16 x i8> %330, i32 164) %332 = fmul float %331, %82 %333 = fadd float %332, %320 %334 = call float @llvm.SI.load.const(<16 x i8> %330, i32 168) %335 = fmul float %334, %82 %336 = fadd float %335, %325 %337 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %338 = load <16 x i8>, <16 x i8> addrspace(2)* %337, align 16, !invariant.load !0 %339 = call float @llvm.SI.load.const(<16 x i8> %338, i32 176) %340 = fmul float %339, %87 %341 = fadd float %340, %328 %342 = call float @llvm.SI.load.const(<16 x i8> %338, i32 180) %343 = fmul float %342, %87 %344 = fadd float %343, %333 %345 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %346 = load <16 x i8>, <16 x i8> addrspace(2)* %345, align 16, !invariant.load !0 %347 = call float @llvm.SI.load.const(<16 x i8> %346, i32 184) %348 = fmul float %347, %87 %349 = fadd float %348, %336 %350 = call float @llvm.SI.load.const(<16 x i8> %346, i32 320) %351 = call float @llvm.SI.load.const(<16 x i8> %346, i32 328) %352 = fmul float %26, %350 %353 = fadd float %352, %351 %354 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %355 = load <16 x i8>, <16 x i8> addrspace(2)* %354, align 16, !invariant.load !0 %356 = call float @llvm.SI.load.const(<16 x i8> %355, i32 324) %357 = call float @llvm.SI.load.const(<16 x i8> %355, i32 332) %358 = fmul float %27, %356 %359 = fadd float %358, %357 %360 = bitcast i32 %12 to float %361 = insertvalue <{ float, float, float }> undef, float %360, 2 call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 32, i32 0, float %74, float %79, float %82, float %103) call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 33, i32 0, float %353, float %359, float %198, float %201) call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 34, i32 0, float %206, float %296, float %301, float %304) call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 35, i32 0, float %341, float %344, float %349, float %253) call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 36, i32 0, float %256, float %261, float %261, float %248) call void @llvm.SI.export(i32 15, i32 0, i32 1, i32 12, i32 0, float %150, float %153, float %158, float %161) ret <{ float, float, float }> %361 } ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.vs.load.input(<16 x i8>, i32, i32) #0 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #0 ; Function Attrs: nounwind declare void @llvm.SI.export(i32, i32, i32, i32, i32, float, float, float, float) #1 attributes #0 = { nounwind readnone } attributes #1 = { nounwind } !0 = !{} FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL IN[1], GENERIC[1], PERSPECTIVE DCL IN[2], GENERIC[2], PERSPECTIVE DCL IN[3], GENERIC[3], PERSPECTIVE DCL IN[4], GENERIC[4], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL SVIEW[0], SHADOW2D, FLOAT DCL SVIEW[1], 2D, FLOAT DCL CONST[0..3] DCL CONST[6..7] DCL TEMP[0..3], LOCAL IMM[0] FLT32 { 1.0000, 255.0000, 0.0039, 0.0000} 0: MOV TEMP[0].xy, IN[1].zwzz 1: MOV TEMP[0].z, IN[2].xxxx 2: MOV TEMP[1].x, IN[3].wwww 3: MOV TEMP[1].yz, IN[4].yxyy 4: MOV TEMP[2].xy, IN[1].xyyy 5: TEX TEMP[2].w, TEMP[2], SAMP[1], 2D 6: MUL TEMP[2].x, TEMP[2].wwww, CONST[7].wwww 7: FSLT TEMP[2].x, TEMP[2].xxxx, CONST[6].xxxx 8: AND TEMP[2].x, TEMP[2].xxxx, IMM[0].xxxx 9: KILL_IF -TEMP[2].xxxx 10: FSGE TEMP[2], IN[0].wwww, CONST[1] 11: FSLT TEMP[3], IN[0].wwww, CONST[2] 12: AND TEMP[2], TEMP[2], TEMP[3] 13: AND TEMP[2], TEMP[2], IMM[0].xxxx 14: MUL TEMP[3].xyz, TEMP[0].xyzz, TEMP[2].xxxx 15: MAD TEMP[3].xyz, IN[2].yzww, TEMP[2].yyyy, TEMP[3].xyzz 16: MAD TEMP[3].xyz, IN[3].xyzz, TEMP[2].zzzz, TEMP[3].xyzz 17: MAD TEMP[0].xyz, TEMP[1].xyzz, TEMP[2].wwww, TEMP[3].xyzz 18: MOV TEMP[1].xy, TEMP[0].xyyy 19: MOV TEMP[1].z, TEMP[0].zzzz 20: TEX TEMP[0].x, TEMP[1], SAMP[0], SHADOW2D 21: LRP TEMP[0].x, TEMP[0].xxxx, IMM[0].xxxx, CONST[3].xxxx 22: MAD TEMP[1].x, IN[0].wwww, CONST[3].zzzz, CONST[3].wwww 23: MOV_SAT TEMP[1].x, TEMP[1].xxxx 24: ADD TEMP[0].x, TEMP[0].xxxx, TEMP[1].xxxx 25: MOV_SAT TEMP[0].x, TEMP[0].xxxx 26: MOV TEMP[0].y, IMM[0].xxxx 27: MUL TEMP[1].x, IN[0].wwww, CONST[0].wwww 28: ADD TEMP[1].x, IMM[0].xxxx, -TEMP[1].xxxx 29: MUL TEMP[1].xy, IMM[0].xyyy, TEMP[1].xxxx 30: FRC TEMP[1].xy, TEMP[1].xyyy 31: MOV TEMP[2].y, TEMP[1].yyyy 32: MUL TEMP[3].x, TEMP[1].yyyy, IMM[0].zzzz 33: ADD TEMP[2].x, TEMP[1].xxxx, -TEMP[3].xxxx 34: MOV TEMP[0].zw, TEMP[2].yyxy 35: MOV OUT[0], TEMP[0] 36: END radeonsi: Compiling shader 58 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_ps <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), float inreg, i32 inreg, <2 x i32>, <2 x i32>, <2 x i32>, <3 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, float, float, float, float, float, i32, i32, float, i32) #0 { main_body: %23 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %24 = call float @llvm.SI.fs.interp(i32 3, i32 1, i32 %6, <2 x i32> %8) %25 = call float @llvm.SI.fs.interp(i32 0, i32 2, i32 %6, <2 x i32> %8) %26 = call float @llvm.SI.fs.interp(i32 3, i32 3, i32 %6, <2 x i32> %8) %27 = call float @llvm.SI.fs.interp(i32 0, i32 4, i32 %6, <2 x i32> %8) %28 = call float @llvm.SI.fs.interp(i32 1, i32 4, i32 %6, <2 x i32> %8) %29 = call float @llvm.SI.fs.interp(i32 0, i32 1, i32 %6, <2 x i32> %8) %30 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %31 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 2, !amdgpu.uniform !0 %32 = load <8 x i32>, <8 x i32> addrspace(2)* %31, align 32, !invariant.load !0 %33 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %34 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %33, i64 0, i64 7, !amdgpu.uniform !0 %35 = load <4 x i32>, <4 x i32> addrspace(2)* %34, align 16, !invariant.load !0 %36 = bitcast float %29 to i32 %37 = bitcast float %30 to i32 %38 = insertelement <2 x i32> undef, i32 %36, i32 0 %39 = insertelement <2 x i32> %38, i32 %37, i32 1 %40 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %39, <8 x i32> %32, <4 x i32> %35, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %41 = extractelement <4 x float> %40, i32 3 %42 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %43 = load <16 x i8>, <16 x i8> addrspace(2)* %42, align 16, !invariant.load !0 %44 = call float @llvm.SI.load.const(<16 x i8> %43, i32 124) %45 = fmul float %41, %44 %46 = call float @llvm.SI.load.const(<16 x i8> %43, i32 96) %47 = fcmp olt float %45, %46 %48 = select i1 %47, float -1.000000e+00, float 0.000000e+00 call void @llvm.AMDGPU.kill(float %48) %49 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %6, <2 x i32> %8) %50 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %51 = load <16 x i8>, <16 x i8> addrspace(2)* %50, align 16, !invariant.load !0 %52 = call float @llvm.SI.load.const(<16 x i8> %51, i32 16) %53 = fcmp oge float %49, %52 %54 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %6, <2 x i32> %8) %55 = call float @llvm.SI.load.const(<16 x i8> %51, i32 20) %56 = fcmp oge float %54, %55 %57 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %6, <2 x i32> %8) %58 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %59 = load <16 x i8>, <16 x i8> addrspace(2)* %58, align 16, !invariant.load !0 %60 = call float @llvm.SI.load.const(<16 x i8> %59, i32 24) %61 = fcmp oge float %57, %60 %62 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %6, <2 x i32> %8) %63 = call float @llvm.SI.load.const(<16 x i8> %59, i32 28) %64 = fcmp oge float %62, %63 %65 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %6, <2 x i32> %8) %66 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %67 = load <16 x i8>, <16 x i8> addrspace(2)* %66, align 16, !invariant.load !0 %68 = call float @llvm.SI.load.const(<16 x i8> %67, i32 32) %69 = fcmp olt float %65, %68 %70 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %6, <2 x i32> %8) %71 = call float @llvm.SI.load.const(<16 x i8> %67, i32 36) %72 = fcmp olt float %70, %71 %73 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %6, <2 x i32> %8) %74 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %75 = load <16 x i8>, <16 x i8> addrspace(2)* %74, align 16, !invariant.load !0 %76 = call float @llvm.SI.load.const(<16 x i8> %75, i32 40) %77 = fcmp olt float %73, %76 %78 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %6, <2 x i32> %8) %79 = call float @llvm.SI.load.const(<16 x i8> %75, i32 44) %80 = fcmp olt float %78, %79 %81 = and i1 %53, %69 %82 = and i1 %56, %72 %83 = and i1 %61, %77 %84 = and i1 %64, %80 %85 = select i1 %81, float 1.000000e+00, float 0.000000e+00 %86 = select i1 %82, float 1.000000e+00, float 0.000000e+00 %87 = select i1 %83, float 1.000000e+00, float 0.000000e+00 %88 = select i1 %84, float 1.000000e+00, float 0.000000e+00 %89 = fmul float %23, %85 %90 = fmul float %24, %85 %91 = fmul float %25, %85 %92 = call float @llvm.SI.fs.interp(i32 1, i32 2, i32 %6, <2 x i32> %8) %93 = fmul float %92, %86 %94 = fadd float %93, %89 %95 = call float @llvm.SI.fs.interp(i32 2, i32 2, i32 %6, <2 x i32> %8) %96 = fmul float %95, %86 %97 = fadd float %96, %90 %98 = call float @llvm.SI.fs.interp(i32 3, i32 2, i32 %6, <2 x i32> %8) %99 = fmul float %98, %86 %100 = fadd float %99, %91 %101 = call float @llvm.SI.fs.interp(i32 0, i32 3, i32 %6, <2 x i32> %8) %102 = fmul float %101, %87 %103 = fadd float %102, %94 %104 = call float @llvm.SI.fs.interp(i32 1, i32 3, i32 %6, <2 x i32> %8) %105 = fmul float %104, %87 %106 = fadd float %105, %97 %107 = call float @llvm.SI.fs.interp(i32 2, i32 3, i32 %6, <2 x i32> %8) %108 = fmul float %107, %87 %109 = fadd float %108, %100 %110 = fmul float %26, %88 %111 = fadd float %110, %103 %112 = fmul float %27, %88 %113 = fadd float %112, %106 %114 = fmul float %28, %88 %115 = fadd float %114, %109 %116 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 0, !amdgpu.uniform !0 %117 = load <8 x i32>, <8 x i32> addrspace(2)* %116, align 32, !invariant.load !0 %118 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %119 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %118, i64 0, i64 3, !amdgpu.uniform !0 %120 = load <4 x i32>, <4 x i32> addrspace(2)* %119, align 16, !invariant.load !0 %121 = bitcast float %115 to i32 %122 = bitcast float %111 to i32 %123 = bitcast float %113 to i32 %124 = insertelement <4 x i32> undef, i32 %121, i32 0 %125 = insertelement <4 x i32> %124, i32 %122, i32 1 %126 = insertelement <4 x i32> %125, i32 %123, i32 2 %127 = call <4 x float> @llvm.SI.image.sample.c.v4i32(<4 x i32> %126, <8 x i32> %117, <4 x i32> %120, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %128 = extractelement <4 x float> %127, i32 0 %129 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %130 = load <16 x i8>, <16 x i8> addrspace(2)* %129, align 16, !invariant.load !0 %131 = call float @llvm.SI.load.const(<16 x i8> %130, i32 48) %132 = fsub float 1.000000e+00, %128 %133 = fmul float %131, %132 %134 = fadd float %128, %133 %135 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %6, <2 x i32> %8) %136 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %137 = load <16 x i8>, <16 x i8> addrspace(2)* %136, align 16, !invariant.load !0 %138 = call float @llvm.SI.load.const(<16 x i8> %137, i32 56) %139 = call float @llvm.SI.load.const(<16 x i8> %137, i32 60) %140 = fmul float %135, %138 %141 = fadd float %140, %139 %142 = call float @llvm.AMDGPU.clamp.(float %141, float 0.000000e+00, float 1.000000e+00) %143 = fadd float %134, %142 %144 = call float @llvm.AMDGPU.clamp.(float %143, float 0.000000e+00, float 1.000000e+00) %145 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %6, <2 x i32> %8) %146 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %147 = load <16 x i8>, <16 x i8> addrspace(2)* %146, align 16, !invariant.load !0 %148 = call float @llvm.SI.load.const(<16 x i8> %147, i32 12) %149 = fmul float %145, %148 %150 = fsub float 1.000000e+00, %149 %151 = fmul float %150, 2.550000e+02 %152 = call float @llvm.floor.f32(float %150) %153 = fsub float %150, %152 %154 = call float @llvm.floor.f32(float %151) %155 = fsub float %151, %154 %156 = fmul float %155, 0x3F70101020000000 %157 = fsub float %153, %156 %158 = bitcast float %5 to i32 %159 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> undef, i32 %158, 10 %160 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %159, float %144, 11 %161 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %160, float 1.000000e+00, 12 %162 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %161, float %157, 13 %163 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %162, float %155, 14 %164 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %163, float %21, 24 ret <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %164 } ; Function Attrs: nounwind readnone declare float @llvm.SI.fs.interp(i32, i32, i32, <2 x i32>) #1 ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #1 ; Function Attrs: nounwind declare void @llvm.AMDGPU.kill(float) #2 ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.image.sample.c.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.AMDGPU.clamp.(float, float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.floor.f32(float) #1 attributes #0 = { "InitialPSInputAddr"="36983" } attributes #1 = { nounwind readnone } attributes #2 = { nounwind } !0 = !{} radeonsi: Compiling shader 59 Vertex Shader Prolog LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_vs <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float }> @main(i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32, i32, i32, i32) { main_body: %20 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float }> undef, i32 %0, 0 %21 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float }> %20, i32 %1, 1 %22 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float }> %21, i32 %2, 2 %23 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float }> %22, i32 %3, 3 %24 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float }> %23, i32 %4, 4 %25 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float }> %24, i32 %5, 5 %26 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float }> %25, i32 %6, 6 %27 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float }> %26, i32 %7, 7 %28 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float }> %27, i32 %8, 8 %29 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float }> %28, i32 %9, 9 %30 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float }> %29, i32 %10, 10 %31 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float }> %30, i32 %11, 11 %32 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float }> %31, i32 %12, 12 %33 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float }> %32, i32 %13, 13 %34 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float }> %33, i32 %14, 14 %35 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float }> %34, i32 %15, 15 %36 = bitcast i32 %16 to float %37 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float }> %35, float %36, 16 %38 = bitcast i32 %17 to float %39 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float }> %37, float %38, 17 %40 = bitcast i32 %18 to float %41 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float }> %39, float %40, 18 %42 = bitcast i32 %19 to float %43 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float }> %41, float %42, 19 %44 = add i32 %16, %12 %45 = bitcast i32 %44 to float %46 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float }> %43, float %45, 20 %47 = add i32 %16, %12 %48 = bitcast i32 %47 to float %49 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float }> %46, float %48, 21 %50 = add i32 %16, %12 %51 = bitcast i32 %50 to float %52 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float }> %49, float %51, 22 %53 = add i32 %16, %12 %54 = bitcast i32 %53 to float %55 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float }> %52, float %54, 23 %56 = add i32 %16, %12 %57 = bitcast i32 %56 to float %58 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float }> %55, float %57, 24 ret <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float }> %58 } SHADER KEY instance_divisors = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} as_es = 0 as_ls = 0 export_prim_id = 0 Vertex Shader as VS: Shader prolog disassembly: v_add_i32_e32 v4, vcc, s12, v0 ; 3208000C v_mov_b32_e32 v5, v4 ; 7E0A0304 v_mov_b32_e32 v6, v4 ; 7E0C0304 v_mov_b32_e32 v7, v4 ; 7E0E0304 v_mov_b32_e32 v8, v4 ; 7E100304 Shader main disassembly: s_load_dwordx4 s[4:7], s[10:11], 0x0 ; C00A0105 00000000 s_load_dwordx4 s[12:15], s[10:11], 0x10 ; C00A0305 00000010 s_load_dwordx4 s[16:19], s[10:11], 0x20 ; C00A0405 00000020 s_load_dwordx4 s[20:23], s[10:11], 0x30 ; C00A0505 00000030 s_load_dwordx4 s[0:3], s[2:3], 0x0 ; C00A0001 00000000 s_waitcnt lgkmcnt(0) ; BF8C007F buffer_load_format_xyzw v[9:12], v4, s[4:7], 0 idxen ; E00C2000 80010904 s_nop 0 ; BF800000 buffer_load_format_xyzw v[13:16], v5, s[12:15], 0 idxen ; E00C2000 80030D05 s_nop 0 ; BF800000 buffer_load_format_xyzw v[3:6], v6, s[16:19], 0 idxen ; E00C2000 80040306 s_waitcnt vmcnt(1) ; BF8C0F71 buffer_load_format_xyzw v[16:19], v7, s[20:23], 0 idxen ; E00C2000 80051007 s_buffer_load_dword s12, s[0:3], 0x98 ; C0220300 00000098 s_load_dwordx4 s[4:7], s[10:11], 0x40 ; C00A0105 00000040 s_buffer_load_dword s16, s[0:3], 0xa8 ; C0220400 000000A8 s_buffer_load_dword s10, s[0:3], 0x90 ; C0220280 00000090 s_buffer_load_dword s17, s[0:3], 0xac ; C0220440 000000AC s_buffer_load_dword s14, s[0:3], 0xa0 ; C0220380 000000A0 s_buffer_load_dword s15, s[0:3], 0xa4 ; C02203C0 000000A4 s_waitcnt lgkmcnt(0) ; BF8C007F v_mov_b32_e32 v0, s12 ; 7E00020C v_mov_b32_e32 v7, s16 ; 7E0E0210 s_buffer_load_dword s13, s[0:3], 0x9c ; C0220340 0000009C s_buffer_load_dword s11, s[0:3], 0x94 ; C02202C0 00000094 s_buffer_load_dword s35, s[0:3], 0x40 ; C02208C0 00000040 s_buffer_load_dword s18, s[0:3], 0x0 ; C0220480 00000000 s_buffer_load_dword s19, s[0:3], 0x4 ; C02204C0 00000004 s_buffer_load_dword s28, s[0:3], 0x50 ; C0220700 00000050 s_buffer_load_dword s21, s[0:3], 0x10 ; C0220540 00000010 s_buffer_load_dword s31, s[0:3], 0x60 ; C02207C0 00000060 s_buffer_load_dword s36, s[0:3], 0x44 ; C0220900 00000044 s_buffer_load_dword s20, s[0:3], 0x8 ; C0220500 00000008 s_buffer_load_dword s22, s[0:3], 0x14 ; C0220580 00000014 s_buffer_load_dword s24, s[0:3], 0x20 ; C0220600 00000020 s_buffer_load_dword s29, s[0:3], 0x54 ; C0220740 00000054 s_buffer_load_dword s32, s[0:3], 0x64 ; C0220800 00000064 s_buffer_load_dword s37, s[0:3], 0x48 ; C0220940 00000048 s_waitcnt lgkmcnt(0) ; BF8C007F v_mov_b32_e32 v1, s13 ; 7E02020D s_buffer_load_dword s8, s[0:3], 0x68 ; C0220200 00000068 s_buffer_load_dword s23, s[0:3], 0x18 ; C02205C0 00000018 s_buffer_load_dword s25, s[0:3], 0x24 ; C0220640 00000024 s_buffer_load_dword s30, s[0:3], 0x58 ; C0220780 00000058 s_buffer_load_dword s26, s[0:3], 0x28 ; C0220680 00000028 s_buffer_load_dword s40, s[0:3], 0xb8 ; C0220A00 000000B8 s_buffer_load_dword s39, s[0:3], 0xb4 ; C02209C0 000000B4 s_buffer_load_dword s38, s[0:3], 0xb0 ; C0220980 000000B0 s_buffer_load_dword s41, s[0:3], 0xbc ; C0220A40 000000BC s_buffer_load_dword s42, s[0:3], 0xc0 ; C0220A80 000000C0 s_buffer_load_dword s12, s[0:3], 0xd0 ; C0220300 000000D0 s_buffer_load_dword s13, s[0:3], 0xd4 ; C0220340 000000D4 s_buffer_load_dword s9, s[0:3], 0x8c ; C0220240 0000008C s_buffer_load_dword s27, s[0:3], 0x30 ; C02206C0 00000030 s_buffer_load_dword s33, s[0:3], 0x34 ; C0220840 00000034 s_buffer_load_dword s34, s[0:3], 0x38 ; C0220880 00000038 s_waitcnt lgkmcnt(0) ; BF8C007F v_mul_f32_e32 v22, s40, v9 ; 0A2C1228 v_mul_f32_e32 v20, s35, v13 ; 0A281A23 s_waitcnt vmcnt(1) ; BF8C0F71 v_mac_f32_e32 v7, s14, v3 ; 2C0E060E s_waitcnt vmcnt(0) ; BF8C0F70 v_mac_f32_e32 v0, s10, v16 ; 2C00200A v_mov_b32_e32 v16, s17 ; 7E200211 v_mac_f32_e32 v16, s15, v4 ; 2C20080F buffer_load_format_xyzw v[3:6], v8, s[4:7], 0 idxen ; E00C2000 80010308 v_mac_f32_e32 v1, s11, v17 ; 2C02220B exp 15, 32, 0, 0, 0, v0, v1, v7, v16 ; C400020F 10070100 v_mul_f32_e32 v21, s28, v13 ; 0A2A1A1C v_mul_f32_e32 v13, s31, v13 ; 0A1A1A1F v_mac_f32_e32 v20, s36, v14 ; 2C281C24 v_mac_f32_e32 v21, s29, v14 ; 2C2A1C1D v_mac_f32_e32 v13, s32, v14 ; 2C1A1C20 v_mac_f32_e32 v20, s37, v15 ; 2C281E25 v_mac_f32_e32 v13, s8, v15 ; 2C1A1E08 v_mac_f32_e32 v21, s30, v15 ; 2C2A1E1E v_mul_f32_e32 v8, v20, v20 ; 0A102914 s_buffer_load_dword s10, s[0:3], 0xc8 ; C0220280 000000C8 s_buffer_load_dword s8, s[0:3], 0xc4 ; C0220200 000000C4 v_mac_f32_e32 v8, v21, v21 ; 2C102B15 v_mac_f32_e32 v8, v13, v13 ; 2C101B0D v_rsq_f32_e32 v8, v8 ; 7E104908 s_buffer_load_dword s11, s[0:3], 0xcc ; C02202C0 000000CC v_mul_f32_e32 v15, s39, v9 ; 0A1E1227 s_waitcnt lgkmcnt(0) ; BF8C007F v_mac_f32_e32 v15, s8, v10 ; 2C1E1408 v_mac_f32_e32 v22, s10, v10 ; 2C2C140A s_buffer_load_dword s8, s[0:3], 0xd8 ; C0220200 000000D8 s_buffer_load_dword s10, s[0:3], 0xdc ; C0220280 000000DC v_mul_f32_e32 v14, s38, v9 ; 0A1C1226 v_mul_f32_e32 v17, s18, v9 ; 0A221212 v_mul_f32_e32 v18, s19, v9 ; 0A241213 v_mul_f32_e32 v19, s20, v9 ; 0A261214 v_mul_f32_e32 v9, s41, v9 ; 0A121229 v_mac_f32_e32 v14, s42, v10 ; 2C1C142A s_waitcnt expcnt(0) ; BF8C0F0F v_mul_f32_e32 v7, v8, v21 ; 0A0E2B08 v_mac_f32_e32 v9, s11, v10 ; 2C12140B v_mac_f32_e32 v17, s21, v10 ; 2C221415 v_mac_f32_e32 v14, s12, v11 ; 2C1C160C v_mac_f32_e32 v15, s13, v11 ; 2C1E160D s_buffer_load_dword s11, s[0:3], 0xe0 ; C02202C0 000000E0 s_buffer_load_dword s12, s[0:3], 0xe4 ; C0220300 000000E4 s_buffer_load_dword s13, s[0:3], 0xe8 ; C0220340 000000E8 s_buffer_load_dword s0, s[0:3], 0xec ; C0220000 000000EC v_mac_f32_e32 v18, s22, v10 ; 2C241416 v_mac_f32_e32 v19, s23, v10 ; 2C261417 v_mac_f32_e32 v17, s24, v11 ; 2C221618 v_mac_f32_e32 v18, s25, v11 ; 2C241619 v_mac_f32_e32 v19, s26, v11 ; 2C26161A s_waitcnt lgkmcnt(0) ; BF8C007F v_mac_f32_e32 v22, s8, v11 ; 2C2C1608 v_mac_f32_e32 v9, s10, v11 ; 2C12160A v_mac_f32_e32 v17, s27, v12 ; 2C22181B v_mac_f32_e32 v18, s33, v12 ; 2C241821 v_mac_f32_e32 v19, s34, v12 ; 2C261822 v_mac_f32_e32 v14, s11, v12 ; 2C1C180B v_mac_f32_e32 v15, s12, v12 ; 2C1E180C v_mac_f32_e32 v22, s13, v12 ; 2C2C180D v_mac_f32_e32 v9, s0, v12 ; 2C121800 s_waitcnt vmcnt(0) ; BF8C0F70 v_mul_f32_e32 v0, s18, v3 ; 0A000612 v_mul_f32_e32 v1, s19, v3 ; 0A020613 v_mac_f32_e32 v0, s21, v4 ; 2C000815 v_mul_f32_e32 v3, s20, v3 ; 0A060614 v_mac_f32_e32 v1, s22, v4 ; 2C020816 v_mac_f32_e32 v0, s24, v5 ; 2C000A18 v_mac_f32_e32 v3, s23, v4 ; 2C060817 v_mac_f32_e32 v1, s25, v5 ; 2C020A19 v_mul_f32_e32 v4, v0, v0 ; 0A080100 v_mac_f32_e32 v3, s26, v5 ; 2C060A1A v_mac_f32_e32 v4, v1, v1 ; 2C080301 v_mac_f32_e32 v4, v3, v3 ; 2C080703 v_rsq_f32_e32 v4, v4 ; 7E084904 v_mul_f32_e32 v5, v8, v20 ; 0A0A2908 v_mul_f32_e32 v8, v8, v13 ; 0A101B08 v_mul_f32_e32 v6, s9, v6 ; 0A0C0C09 v_mul_f32_e32 v1, v4, v1 ; 0A020304 v_mul_f32_e32 v0, v4, v0 ; 0A000104 v_mul_f32_e32 v3, v4, v3 ; 0A060704 v_mul_f32_e32 v4, v1, v8 ; 0A081101 v_mul_f32_e32 v10, v3, v5 ; 0A140B03 v_mad_f32 v4, v7, v3, -v4 ; D1C10004 84120707 v_mul_f32_e32 v11, v0, v7 ; 0A160F00 v_mad_f32 v10, v8, v0, -v10 ; D1C1000A 842A0108 v_mul_f32_e32 v4, v6, v4 ; 0A080906 v_mad_f32 v11, v5, v1, -v11 ; D1C1000B 842E0305 v_mul_f32_e32 v10, v6, v10 ; 0A141506 exp 15, 33, 0, 0, 0, v0, v4, v5, v17 ; C400021F 11050400 v_mul_f32_e32 v6, v6, v11 ; 0A0C1706 exp 15, 34, 0, 0, 0, v1, v10, v7, v18 ; C400022F 12070A01 exp 15, 35, 0, 0, 0, v3, v6, v8, v19 ; C400023F 13080603 exp 15, 12, 0, 1, 0, v14, v15, v22, v9 ; C40008CF 09160F0E s_waitcnt expcnt(0) ; BF8C0F0F Shader epilog disassembly: s_endpgm ; BF810000 *** SHADER STATS *** SGPRS: 96 VGPRS: 24 Spilled SGPRs: 0 Spilled VGPRs: 0 Code Size: 900 bytes LDS: 0 blocks Scratch: 0 bytes per wave Max Waves: 8 ******************** SHADER KEY prolog.color_two_side = 0 prolog.flatshade_colors = 0 prolog.poly_stipple = 0 prolog.force_persp_sample_interp = 0 prolog.force_linear_sample_interp = 0 prolog.force_persp_center_interp = 0 prolog.force_linear_center_interp = 0 prolog.bc_optimize_for_persp = 0 prolog.bc_optimize_for_linear = 0 epilog.spi_shader_col_format = 0x4 epilog.color_is_int8 = 0x0 epilog.last_cbuf = 0 epilog.alpha_func = 7 epilog.alpha_to_one = 0 epilog.poly_line_smoothing = 0 epilog.clamp_color = 0 Pixel Shader: Shader main disassembly: s_mov_b64 s[6:7], exec ; BE86017E s_wqm_b64 exec, exec ; BEFE077E s_mov_b32 m0, s11 ; BEFC000B v_interp_p1_f32 v0, v2, 3, 1, [m0] ; D4000702 v_interp_p2_f32 v0, [v0], v3, 3, 1, [m0] ; D4010703 v_interp_p1_f32 v1, v2, 3, 2, [m0] ; D4040B02 v_interp_p2_f32 v1, [v1], v3, 3, 2, [m0] ; D4050B03 v_interp_p1_f32 v8, v2, 3, 3, [m0] ; D4200F02 v_interp_p2_f32 v8, [v8], v3, 3, 3, [m0] ; D4210F03 v_interp_p1_f32 v20, v2, 0, 1, [m0] ; D4500402 v_interp_p2_f32 v20, [v20], v3, 0, 1, [m0] ; D4510403 v_interp_p1_f32 v21, v2, 1, 1, [m0] ; D4540502 v_interp_p2_f32 v21, [v21], v3, 1, 1, [m0] ; D4550503 v_interp_p1_f32 v22, v2, 2, 1, [m0] ; D4580602 v_interp_p2_f32 v22, [v22], v3, 2, 1, [m0] ; D4590603 v_interp_p1_f32 v23, v2, 0, 2, [m0] ; D45C0802 v_interp_p2_f32 v23, [v23], v3, 0, 2, [m0] ; D45D0803 v_interp_p1_f32 v24, v2, 1, 2, [m0] ; D4600902 v_interp_p2_f32 v24, [v24], v3, 1, 2, [m0] ; D4610903 v_interp_p1_f32 v25, v2, 2, 2, [m0] ; D4640A02 v_interp_p2_f32 v25, [v25], v3, 2, 2, [m0] ; D4650A03 v_interp_p1_f32 v26, v2, 0, 3, [m0] ; D4680C02 v_interp_p2_f32 v26, [v26], v3, 0, 3, [m0] ; D4690C03 v_interp_p1_f32 v27, v2, 1, 3, [m0] ; D46C0D02 s_load_dwordx4 s[64:67], s[4:5], 0x130 ; C00A1002 00000130 s_load_dwordx8 s[56:63], s[4:5], 0x100 ; C00E0E02 00000100 s_load_dwordx4 s[12:15], s[2:3], 0x0 ; C00A0301 00000000 v_interp_p2_f32 v27, [v27], v3, 1, 3, [m0] ; D46D0D03 v_interp_p1_f32 v28, v2, 2, 3, [m0] ; D4700E02 v_interp_p2_f32 v28, [v28], v3, 2, 3, [m0] ; D4710E03 v_interp_p1_f32 v18, v2, 2, 0, [m0] ; D4480202 v_interp_p2_f32 v18, [v18], v3, 2, 0, [m0] ; D4490203 v_interp_p1_f32 v19, v2, 3, 0, [m0] ; D44C0302 s_load_dwordx4 s[68:71], s[4:5], 0x1f0 ; C00A1102 000001F0 s_load_dwordx8 s[48:55], s[4:5], 0x1c0 ; C00E0C02 000001C0 v_interp_p2_f32 v19, [v19], v3, 3, 0, [m0] ; D44D0303 s_waitcnt lgkmcnt(0) ; BF8C007F image_sample v[4:7], v[18:19], s[56:63], s[64:67] dmask:0xf ; F0800F00 020E0412 v_interp_p1_f32 v11, v2, 0, 0, [m0] ; D42C0002 v_interp_p2_f32 v11, [v11], v3, 0, 0, [m0] ; D42D0003 v_interp_p1_f32 v12, v2, 1, 0, [m0] ; D4300102 s_buffer_load_dword s9, s[12:15], 0x1d0 ; C0220246 000001D0 v_interp_p2_f32 v12, [v12], v3, 1, 0, [m0] ; D4310103 s_buffer_load_dword s11, s[12:15], 0x1d4 ; C02202C6 000001D4 image_sample v[14:17], v[11:12], s[48:55], s[68:71] dmask:0xf ; F0800F00 022C0E0B s_buffer_load_dword s76, s[12:15], 0x1d8 ; C0221306 000001D8 s_waitcnt vmcnt(0) ; BF8C0F70 v_mad_f32 v2, -v17, v4, v4 ; D1C10002 24120911 v_mad_f32 v3, -v17, v5, v5 ; D1C10003 24160B11 v_mac_f32_e32 v2, v17, v14 ; 2C041D11 s_buffer_load_dword s77, s[12:15], 0x128 ; C0221346 00000128 v_mad_f32 v4, -v17, v6, v6 ; D1C10004 241A0D11 s_buffer_load_dword s0, s[12:15], 0x120 ; C0220006 00000120 s_waitcnt lgkmcnt(0) ; BF8C007F v_mul_f32_e32 v5, s9, v2 ; 0A0A0409 s_load_dwordx8 s[40:47], s[4:5], 0x140 ; C00E0A02 00000140 s_load_dwordx4 s[72:75], s[4:5], 0x170 ; C00A1202 00000170 v_mac_f32_e32 v3, v17, v15 ; 2C061F11 v_mad_f32 v14, s9, v2, v5 ; D1C1000E 04160409 v_mad_f32 v2, -2.0, v5, 1.0 ; D1C10002 03CA0AF5 v_mul_f32_e32 v5, s11, v3 ; 0A0A060B v_mac_f32_e32 v4, v17, v16 ; 2C082111 v_mad_f32 v15, s11, v3, v5 ; D1C1000F 0416060B v_mad_f32 v3, -2.0, v5, 1.0 ; D1C10003 03CA0AF5 v_mul_f32_e32 v5, s76, v4 ; 0A0A084C s_buffer_load_dword s1, s[12:15], 0x124 ; C0220046 00000124 v_mad_f32 v16, s76, v4, v5 ; D1C10010 0416084C v_mad_f32 v4, -2.0, v5, 1.0 ; D1C10004 03CA0AF5 v_add_f32_e32 v4, v4, v4 ; 02080904 v_sub_f32_e64 v5, 1.0, s77 ; D1020005 00009AF2 s_waitcnt lgkmcnt(0) ; BF8C007F image_sample v[29:32], v[18:19], s[40:47], s[72:75] dmask:0xf ; F0800F00 024A1D12 v_mad_f32 v4, -v4, v5, 1.0 ; D1C10004 23CA0B04 v_mul_f32_e32 v5, s0, v14 ; 0A0A1C00 v_cmp_le_f32_e32 vcc, 0.5, v14 ; 7C861CF0 s_waitcnt vmcnt(0) ; BF8C0F70 v_mad_f32 v6, -v17, v32, v32 ; D1C10006 24824111 v_sub_f32_e64 v33, 1.0, s0 ; D1020021 000000F2 v_add_f32_e32 v2, v2, v2 ; 02040502 v_mac_f32_e32 v5, s0, v14 ; 2C0A1C00 v_cndmask_b32_e64 v17, 0, 1.0, vcc ; D1000011 01A9E480 v_mad_f32 v2, -v2, v33, 1.0 ; D1C10002 23CA4302 v_mad_f32 v32, -v17, v5, v5 ; D1C10020 24160B11 v_mac_f32_e32 v32, v17, v2 ; 2C400511 v_mul_f32_e32 v2, s1, v15 ; 0A041E01 s_load_dwordx8 s[28:35], s[4:5], 0x180 ; C00E0702 00000180 s_load_dwordx4 s[36:39], s[4:5], 0x1b0 ; C00A0902 000001B0 v_mac_f32_e32 v2, s1, v15 ; 2C041E01 s_buffer_load_dword s9, s[12:15], 0x12c ; C0220246 0000012C v_mad_f32 v33, -v17, v2, v2 ; D1C10021 240A0511 v_mul_f32_e32 v2, s77, v16 ; 0A04204D v_sub_f32_e64 v34, 1.0, s1 ; D1020022 000002F2 v_add_f32_e32 v3, v3, v3 ; 02060703 v_mac_f32_e32 v2, s77, v16 ; 2C04204D v_mad_f32 v3, -v3, v34, 1.0 ; D1C10003 23CA4503 v_mad_f32 v34, -v17, v2, v2 ; D1C10022 240A0511 s_buffer_load_dword s11, s[12:15], 0x130 ; C02202C6 00000130 s_buffer_load_dword s40, s[12:15], 0x134 ; C0220A06 00000134 v_mac_f32_e32 v33, v17, v3 ; 2C420711 v_mac_f32_e32 v34, v17, v4 ; 2C440911 s_waitcnt lgkmcnt(0) ; BF8C007F image_sample v[2:5], v[11:12], s[28:35], s[36:39] dmask:0xf ; F0800F00 0127020B s_waitcnt vmcnt(0) ; BF8C0F70 v_mul_f32_e32 v11, s9, v2 ; 0A160409 v_mad_f32 v2, -v2, s9, 1.0 ; D1C10002 23C81302 s_buffer_load_dword s41, s[12:15], 0x138 ; C0220A46 00000138 v_mad_f32 v12, -v11, v14, v14 ; D1C1000C 243A1D0B v_mad_f32 v14, -v14, v2, 1.0 ; D1C1000E 23CA050E v_mad_f32 v17, -v11, v15, v15 ; D1C10011 243E1F0B v_mad_f32 v15, -v15, v2, 1.0 ; D1C1000F 23CA050F v_mad_f32 v2, -v16, v2, 1.0 ; D1C10002 23CA0510 v_mad_f32 v16, -v11, v16, v16 ; D1C10010 2442210B v_mad_f32 v14, -v32, v11, v14 ; D1C1000E 243A1720 v_mad_f32 v2, -v34, v11, v2 ; D1C10002 240A1722 v_mac_f32_e32 v12, v11, v32 ; 2C18410B v_mac_f32_e32 v17, v11, v33 ; 2C22430B v_mad_f32 v15, -v33, v11, v15 ; D1C1000F 243E1721 v_mac_f32_e32 v16, v11, v34 ; 2C20450B v_add_f32_e32 v11, v14, v14 ; 02161D0E v_sub_f32_e64 v14, 1.0, s11 ; D102000E 000016F2 v_mad_f32 v11, -v11, v14, 1.0 ; D1C1000B 23CA1D0B v_add_f32_e32 v14, v15, v15 ; 021C1F0F v_sub_f32_e64 v15, 1.0, s40 ; D102000F 000050F2 v_mad_f32 v14, -v14, v15, 1.0 ; D1C1000E 23CA1F0E v_add_f32_e32 v2, v2, v2 ; 02040502 s_waitcnt lgkmcnt(0) ; BF8C007F v_sub_f32_e64 v15, 1.0, s41 ; D102000F 000052F2 v_mad_f32 v2, -v2, v15, 1.0 ; D1C10002 23CA1F02 v_mul_f32_e32 v15, s11, v12 ; 0A1E180B v_cmp_le_f32_e32 vcc, 0.5, v12 ; 7C8618F0 v_mac_f32_e32 v15, s11, v12 ; 2C1E180B v_cndmask_b32_e64 v32, 0, 1.0, vcc ; D1000020 01A9E480 v_mad_f32 v15, -v32, v15, v15 ; D1C1000F 243E1F20 v_mac_f32_e32 v15, v32, v11 ; 2C1E1720 v_mul_f32_e32 v11, s40, v17 ; 0A162228 v_mac_f32_e32 v11, s40, v17 ; 2C162228 s_buffer_load_dword s0, s[12:15], 0x13c ; C0220006 0000013C v_mad_f32 v11, -v32, v11, v11 ; D1C1000B 242E1720 v_mac_f32_e32 v11, v32, v14 ; 2C161D20 v_mul_f32_e32 v14, s41, v16 ; 0A1C2029 v_mac_f32_e32 v14, s41, v16 ; 2C1C2029 s_buffer_load_dword s1, s[12:15], 0x140 ; C0220046 00000140 v_mad_f32 v14, -v32, v14, v14 ; D1C1000E 243A1D20 s_buffer_load_dword s9, s[12:15], 0x144 ; C0220246 00000144 v_mac_f32_e32 v14, v32, v2 ; 2C1C0520 s_waitcnt lgkmcnt(0) ; BF8C007F v_mul_f32_e32 v2, s0, v3 ; 0A040600 s_buffer_load_dword s11, s[12:15], 0x148 ; C02202C6 00000148 v_mad_f32 v3, -v3, s0, 1.0 ; D1C10003 23C80103 v_mad_f32 v32, -v2, v12, v12 ; D1C10020 24321902 v_mad_f32 v12, -v12, v3, 1.0 ; D1C1000C 23CA070C v_mac_f32_e32 v32, v2, v15 ; 2C401F02 v_mad_f32 v12, -v15, v2, v12 ; D1C1000C 2432050F v_mad_f32 v15, -v2, v17, v17 ; D1C1000F 24462302 v_mad_f32 v17, -v17, v3, 1.0 ; D1C10011 23CA0711 v_mad_f32 v3, -v16, v3, 1.0 ; D1C10003 23CA0710 v_mad_f32 v16, -v2, v16, v16 ; D1C10010 24422102 v_mac_f32_e32 v15, v2, v11 ; 2C1E1702 v_mad_f32 v11, -v11, v2, v17 ; D1C1000B 2446050B v_mac_f32_e32 v16, v2, v14 ; 2C201D02 v_mad_f32 v2, -v14, v2, v3 ; D1C10002 240E050E v_add_f32_e32 v3, v12, v12 ; 0206190C v_sub_f32_e64 v12, 1.0, s1 ; D102000C 000002F2 v_mad_f32 v3, -v3, v12, 1.0 ; D1C10003 23CA1903 v_add_f32_e32 v11, v11, v11 ; 0216170B v_sub_f32_e64 v12, 1.0, s9 ; D102000C 000012F2 v_mad_f32 v11, -v11, v12, 1.0 ; D1C1000B 23CA190B v_add_f32_e32 v2, v2, v2 ; 02040502 s_waitcnt lgkmcnt(0) ; BF8C007F v_sub_f32_e64 v12, 1.0, s11 ; D102000C 000016F2 v_mad_f32 v2, -v2, v12, 1.0 ; D1C10002 23CA1902 v_mul_f32_e32 v12, s1, v32 ; 0A184001 v_cmp_le_f32_e32 vcc, 0.5, v32 ; 7C8640F0 v_mac_f32_e32 v12, s1, v32 ; 2C184001 v_cndmask_b32_e64 v14, 0, 1.0, vcc ; D100000E 01A9E480 v_mad_f32 v12, -v14, v12, v12 ; D1C1000C 2432190E v_mac_f32_e32 v12, v14, v3 ; 2C18070E v_mul_f32_e32 v3, s9, v15 ; 0A061E09 s_buffer_load_dword s28, s[12:15], 0x14c ; C0220706 0000014C v_mac_f32_e32 v3, s9, v15 ; 2C061E09 v_mad_f32 v17, -v14, v3, v3 ; D1C10011 240E070E v_mul_f32_e32 v3, s11, v16 ; 0A06200B s_buffer_load_dword s8, s[12:15], 0x4 ; C0220206 00000004 s_load_dwordx8 s[16:23], s[4:5], 0xc0 ; C00E0402 000000C0 s_load_dwordx4 s[24:27], s[4:5], 0xf0 ; C00A0602 000000F0 v_mac_f32_e32 v3, s11, v16 ; 2C06200B v_mac_f32_e32 v17, v14, v11 ; 2C22170E v_mad_f32 v11, -v14, v3, v3 ; D1C1000B 240E070E s_buffer_load_dword s3, s[12:15], 0x0 ; C02200C6 00000000 s_buffer_load_dword s2, s[12:15], 0x8 ; C0220086 00000008 v_mac_f32_e32 v11, v14, v2 ; 2C16050E s_waitcnt lgkmcnt(0) ; BF8C007F v_mul_f32_e32 v14, s28, v4 ; 0A1C081C v_mad_f32 v2, -v14, v32, v32 ; D1C10002 2482410E v_mad_f32 v3, -v14, v15, v15 ; D1C10003 243E1F0E v_mad_f32 v4, -v14, v16, v16 ; D1C10004 2442210E v_mac_f32_e32 v4, v14, v11 ; 2C08170E v_mac_f32_e32 v2, v14, v12 ; 2C04190E v_mac_f32_e32 v3, v14, v17 ; 2C06230E v_add_f32_e64 v37, v6, 0 clamp ; D1018025 00010106 v_mov_b32_e32 v9, s8 ; 7E120208 v_mov_b32_e32 v10, 1.0 ; 7E1402F2 v_mov_b32_e32 v35, 0x3c23d70a ; 7E4602FF 3C23D70A v_max3_f32 v12, v2, v3, v4 ; D1D3000C 04120702 v_mov_b32_e32 v6, 1.0 ; 7E0C02F2 image_sample v[14:17], v[18:19], s[16:23], s[24:27] dmask:0xf ; F0800F00 00C40E12 v_mov_b32_e32 v11, 1.0 ; 7E1602F2 v_cmp_lt_f32_e32 vcc, v35, v12 ; 7C821923 s_and_saveexec_b64 s[0:1], vcc ; BE80206A s_xor_b64 s[0:1], exec, s[0:1] ; 8880007E s_waitcnt vmcnt(0) ; BF8C0F70 v_rcp_f32_e32 v6, v12 ; 7E0C450C v_mul_f32_e32 v10, v6, v2 ; 0A140506 v_mul_f32_e32 v11, v6, v3 ; 0A160706 v_mul_f32_e32 v12, v6, v4 ; 0A180906 v_add_f32_e64 v6, v11, 0 clamp ; D1018006 0001010B v_add_f32_e64 v10, v10, 0 clamp ; D101800A 0001010A v_add_f32_e64 v11, v12, 0 clamp ; D101800B 0001010C s_or_b64 exec, exec, s[0:1] ; 87FE007E v_add_f32_e32 v12, v29, v29 ; 02183B1D v_mad_f32 v18, 2.0, v29, -1.0 ; D1C10012 03CE3AF4 v_mad_f32 v29, 2.0, v30, -1.0 ; D1C1001D 03CE3CF4 v_mad_f32 v18, v12, v18, -v18 ; D1C10012 844A250C v_add_f32_e32 v19, v30, v30 ; 02263D1E v_add_f32_e32 v30, v31, v31 ; 023C3F1F v_mad_f32 v31, 2.0, v31, -1.0 ; D1C1001F 03CE3EF4 v_mac_f32_e32 v18, v29, v29 ; 2C243B1D v_mac_f32_e32 v18, v31, v31 ; 2C243F1F v_rsq_f32_e32 v18, v18 ; 7E244912 s_load_dwordx8 s[16:23], s[4:5], 0x40 ; C00E0402 00000040 s_load_dwordx4 s[24:27], s[4:5], 0x70 ; C00A0602 00000070 v_mad_f32 v32, v19, v18, -v18 ; D1C10020 844A2513 v_sub_f32_e32 v19, s3, v0 ; 04260003 v_mad_f32 v33, v12, v18, -v18 ; D1C10021 844A250C v_sub_f32_e32 v12, s8, v1 ; 04180208 v_mul_f32_e32 v29, v19, v19 ; 0A3A2713 v_mad_f32 v31, v30, v18, -v18 ; D1C1001F 844A251E v_mac_f32_e32 v29, v12, v12 ; 2C3A190C v_sub_f32_e32 v18, s2, v8 ; 04241002 v_mac_f32_e32 v29, v18, v18 ; 2C3A2512 v_rsq_f32_e32 v29, v29 ; 7E3A491D v_mul_f32_e32 v41, v33, v20 ; 0A522921 v_mac_f32_e32 v41, v32, v21 ; 2C522B20 v_mul_f32_e32 v42, v33, v26 ; 0A543521 v_mul_f32_e32 v36, v29, v19 ; 0A48271D v_mul_f32_e32 v39, v29, v12 ; 0A4E191D v_mul_f32_e32 v40, v29, v18 ; 0A50251D v_mul_f32_e32 v29, v36, v20 ; 0A3A2924 v_mac_f32_e32 v29, v39, v23 ; 2C3A2F27 v_mul_f32_e32 v30, v36, v21 ; 0A3C2B24 v_mac_f32_e32 v30, v39, v24 ; 2C3C3127 v_mul_f32_e32 v34, v36, v22 ; 0A442D24 v_mac_f32_e32 v29, v40, v26 ; 2C3A3528 v_mac_f32_e32 v34, v39, v25 ; 2C443327 v_mac_f32_e32 v30, v40, v27 ; 2C3C3728 v_mul_f32_e32 v35, v29, v29 ; 0A463B1D v_mac_f32_e32 v34, v40, v28 ; 2C443928 v_mac_f32_e32 v35, v30, v30 ; 2C463D1E v_mac_f32_e32 v35, v34, v34 ; 2C464522 v_rsq_f32_e32 v38, v35 ; 7E4C4923 v_mac_f32_e32 v41, v31, v22 ; 2C522D1F v_mac_f32_e32 v42, v32, v27 ; 2C543720 v_mac_f32_e32 v42, v31, v28 ; 2C54391F v_mul_f32_e32 v43, v38, v29 ; 0A563B26 v_mul_f32_e32 v35, v38, v30 ; 0A463D26 v_mul_f32_e32 v20, v43, v20 ; 0A28292B v_mul_f32_e32 v29, v33, v23 ; 0A3A2F21 v_mac_f32_e32 v20, v35, v21 ; 2C282B23 v_mul_f32_e32 v21, v43, v23 ; 0A2A2F2B v_mul_f32_e32 v44, v38, v34 ; 0A584526 v_mac_f32_e32 v20, v44, v22 ; 2C282D2C v_mac_f32_e32 v29, v32, v24 ; 2C3A3120 v_mac_f32_e32 v21, v35, v24 ; 2C2A3123 v_mul_f32_e32 v22, v43, v26 ; 0A2C352B v_mac_f32_e32 v22, v35, v27 ; 2C2C3723 v_mac_f32_e32 v29, v31, v25 ; 2C3A331F v_mac_f32_e32 v21, v44, v25 ; 2C2A332C v_mul_f32_e32 v23, v41, v20 ; 0A2E2929 v_mac_f32_e32 v22, v44, v28 ; 2C2C392C v_mad_f32 v23, -v21, v29, -v23 ; D1C10017 A45E3B15 v_mad_f32 v23, -v22, v42, v23 ; D1C10017 245E5516 v_mul_f32_e32 v24, v41, v23 ; 0A302F29 v_mul_f32_e32 v25, v29, v23 ; 0A322F1D v_mul_f32_e32 v26, v42, v23 ; 0A342F2A v_mac_f32_e32 v24, v41, v23 ; 2C302F29 v_mac_f32_e32 v25, v29, v23 ; 2C322F1D v_mac_f32_e32 v26, v42, v23 ; 2C342F2A v_sub_f32_e64 v20, -v24, v20 ; D1020014 20022918 v_sub_f32_e64 v21, -v25, v21 ; D1020015 20022B19 v_sub_f32_e64 v22, -v26, v22 ; D1020016 20022D1A v_cubema_f32 v23, v20, v21, v22 ; D1C70017 045A2B14 v_rcp_f32_e64 v23, |v23| ; D1620117 00000117 v_cubetc_f32 v25, v20, v21, v22 ; D1C60019 045A2B14 v_mov_b32_e32 v24, 0x3fc00000 ; 7E3002FF 3FC00000 v_cubesc_f32 v27, v20, v21, v22 ; D1C5001B 045A2B14 v_cubeid_f32 v26, v20, v21, v22 ; D1C4001A 045A2B14 v_mov_b32_e32 v20, 0x40c00000 ; 7E2802FF 40C00000 v_mad_f32 v25, v23, v25, v24 ; D1C10019 04623317 v_mac_f32_e32 v24, v23, v27 ; 2C303717 v_mad_f32 v23, -v15, v20, v20 ; D1C10017 2452290F v_sqrt_f32_e32 v20, v2 ; 7E284F02 v_bfrev_b32_e32 v27, -2 ; 7E3658C2 v_and_b32_e32 v22, v27, v20 ; 262C291B v_sqrt_f32_e32 v20, v3 ; 7E284F03 v_and_b32_e32 v21, v27, v20 ; 262A291B v_sqrt_f32_e32 v20, v4 ; 7E284F04 v_and_b32_e32 v20, v27, v20 ; 2628291B v_mul_f32_e32 v27, v41, v41 ; 0A365329 v_mac_f32_e32 v27, v29, v29 ; 2C363B1D v_mac_f32_e32 v27, v42, v42 ; 2C36552A v_rsq_f32_e32 v45, v27 ; 7E5A491B s_waitcnt lgkmcnt(0) ; BF8C007F image_sample_b v[23:26], v[23:26], s[16:23], s[24:27] dmask:0xf ; F0940F00 00C41717 s_waitcnt vmcnt(0) ; BF8C0F70 v_mul_f32_e32 v38, v45, v29 ; 0A4C3B2D v_cmp_nlt_f32_e32 vcc, 0, v38 ; 7C9C4C80 s_and_saveexec_b64 s[0:1], vcc ; BE80206A s_xor_b64 s[0:1], exec, s[0:1] ; 8880007E s_cbranch_execz BB0_4 ; BF880000 v_add_f32_e64 v26, -v38, 0 clamp ; D101801A 20010126 v_mul_f32_e32 v26, 0x3fa00000, v26 ; 0A3434FF 3FA00000 s_buffer_load_dword s9, s[12:15], 0x50 ; C0220246 00000050 v_add_f32_e64 v26, v26, 0 clamp ; D101801A 0001011A v_madak_f32_e32 v27, -2.0, v26, 0x40400000 ; 303634F5 40400000 v_mul_f32_e32 v27, v27, v26 ; 0A36351B v_mul_f32_e32 v29, v27, v26 ; 0A3A351B s_buffer_load_dword s11, s[12:15], 0x54 ; C02202C6 00000054 s_buffer_load_dword s16, s[12:15], 0x58 ; C0220406 00000058 s_waitcnt lgkmcnt(0) ; BF8C007F v_mad_f32 v26, -v29, s9, s9 ; D1C1001A 2024131D s_buffer_load_dword s17, s[12:15], 0x60 ; C0220446 00000060 s_buffer_load_dword s9, s[12:15], 0x68 ; C0220246 00000068 s_buffer_load_dword s18, s[12:15], 0x64 ; C0220486 00000064 v_mad_f32 v27, -v29, s11, s11 ; D1C1001B 202C171D v_mov_b32_e32 v30, s16 ; 7E3C0210 s_waitcnt lgkmcnt(0) ; BF8C007F v_mac_f32_e32 v26, s17, v29 ; 2C343A11 v_mul_f32_e32 v28, s9, v29 ; 0A383A09 v_mac_f32_e32 v27, s18, v29 ; 2C363A12 s_or_saveexec_b64 s[0:1], s[0:1] ; BE802100 s_buffer_load_dword s17, s[12:15], 0x30 ; C0220446 00000030 s_buffer_load_dword s18, s[12:15], 0x34 ; C0220486 00000034 s_buffer_load_dword s19, s[12:15], 0x38 ; C02204C6 00000038 s_buffer_load_dword s20, s[12:15], 0x90 ; C0220506 00000090 s_buffer_load_dword s11, s[12:15], 0x94 ; C02202C6 00000094 s_buffer_load_dword s16, s[12:15], 0x98 ; C0220406 00000098 s_xor_b64 exec, exec, s[0:1] ; 88FE007E s_waitcnt lgkmcnt(0) ; BF8C007F s_cbranch_execz BB0_6 ; BF880000 v_add_f32_e64 v26, v38, 0 clamp ; D101801A 00010126 v_mul_f32_e32 v26, 0x3fa00000, v26 ; 0A3434FF 3FA00000 s_buffer_load_dword s23, s[12:15], 0x50 ; C02205C6 00000050 v_add_f32_e64 v26, v26, 0 clamp ; D101801A 0001011A s_buffer_load_dword s9, s[12:15], 0x40 ; C0220246 00000040 v_madak_f32_e32 v27, -2.0, v26, 0x40400000 ; 303634F5 40400000 v_mul_f32_e32 v27, v27, v26 ; 0A36351B v_mul_f32_e32 v29, v27, v26 ; 0A3A351B s_waitcnt lgkmcnt(0) ; BF8C007F v_mad_f32 v26, -v29, s23, s23 ; D1C1001A 205C2F1D s_buffer_load_dword s24, s[12:15], 0x54 ; C0220606 00000054 s_buffer_load_dword s22, s[12:15], 0x48 ; C0220586 00000048 v_mac_f32_e32 v26, s9, v29 ; 2C343A09 s_buffer_load_dword s9, s[12:15], 0x58 ; C0220246 00000058 s_buffer_load_dword s21, s[12:15], 0x44 ; C0220546 00000044 s_waitcnt lgkmcnt(0) ; BF8C007F v_mad_f32 v27, -v29, s24, s24 ; D1C1001B 2060311D v_mul_f32_e32 v28, s22, v29 ; 0A383A16 v_mov_b32_e32 v30, s9 ; 7E3C0209 v_mac_f32_e32 v27, s21, v29 ; 2C363A15 s_or_b64 exec, exec, s[0:1] ; 87FE007E v_mul_f32_e32 v15, v15, v15 ; 0A1E1F0F v_mul_f32_e32 v46, 0x41800000, v15 ; 0A5C1EFF 41800000 v_mul_f32_e32 v15, v33, v43 ; 0A1E5721 v_mac_f32_e32 v15, v32, v35 ; 2C1E4720 v_mac_f32_e32 v15, v31, v44 ; 2C1E591F v_mov_b32_e32 v47, 0x3727c5ac ; 7E5E02FF 3727C5AC v_sub_f32_e32 v15, 1.0, v15 ; 041E1EF2 v_max_f32_e32 v15, v47, v15 ; 161E1F2F s_buffer_load_dword s21, s[12:15], 0x170 ; C0220546 00000170 v_log_f32_e32 v15, v15 ; 7E1E430F s_buffer_load_dword s0, s[12:15], 0x164 ; C0220006 00000164 s_buffer_load_dword s24, s[12:15], 0x1e0 ; C0220606 000001E0 s_buffer_load_dword s25, s[12:15], 0x160 ; C0220646 00000160 s_buffer_load_dword s1, s[12:15], 0x168 ; C0220046 00000168 s_waitcnt lgkmcnt(0) ; BF8C007F v_mul_legacy_f32_e32 v15, s21, v15 ; 081E1E15 s_buffer_load_dword s9, s[12:15], 0x70 ; C0220246 00000070 s_buffer_load_dword s21, s[12:15], 0x150 ; C0220546 00000150 s_buffer_load_dword s22, s[12:15], 0x154 ; C0220586 00000154 s_buffer_load_dword s23, s[12:15], 0x158 ; C02205C6 00000158 v_sub_f32_e32 v31, 1.0, v5 ; 043E0AF2 v_mac_f32_e32 v37, v47, v34 ; 2C4A452F v_exp_f32_e32 v34, v15 ; 7E44410F v_cmp_gt_f32_e32 vcc, s24, v7 ; 7C880E18 v_mov_b32_e32 v33, s25 ; 7E420219 v_mov_b32_e32 v32, s0 ; 7E400200 v_mov_b32_e32 v15, s1 ; 7E1E0201 v_add_f32_e64 v31, v31, 0 clamp ; D101801F 0001011F v_mov_b32_e32 v35, 0 ; 7E460280 v_cndmask_b32_e64 v43, 0, -1.0, vcc ; D100002B 01A9E680 s_waitcnt lgkmcnt(0) ; BF8C007F v_cmpx_le_f32_e32 vcc, 0, v43 ; 7CA65680 s_cbranch_execnz BB0_7 ; BF890000 exp 0, 9, 0, 1, 1, v0, v0, v0, v0 ; C4001890 00000000 s_endpgm ; BF810000 s_buffer_load_dword s0, s[12:15], 0x10 ; C0220006 00000010 s_buffer_load_dword s1, s[12:15], 0x14 ; C0220046 00000014 s_buffer_load_dword s24, s[12:15], 0x18 ; C0220606 00000018 v_mul_f32_e32 v43, v45, v41 ; 0A56532D v_mul_f32_e32 v41, v45, v42 ; 0A52552D s_waitcnt lgkmcnt(0) ; BF8C007F v_mul_f32_e64 v42, s0, s0 ; D105002A 00000000 v_mac_f32_e64 v42, s1, s1 ; D116002A 00000201 v_mul_f32_e32 v44, v36, v36 ; 0A584924 v_mac_f32_e64 v42, s24, s24 ; D116002A 00003018 v_mac_f32_e32 v44, v39, v39 ; 2C584F27 v_rsq_f32_e32 v42, v42 ; 7E54492A v_mac_f32_e32 v44, v40, v40 ; 2C585128 v_rsq_f32_e32 v49, v44 ; 7E62492C v_cmp_lt_f32_e32 vcc, 0, v37 ; 7C824A80 v_mul_f32_e32 v48, s0, v42 ; 0A605400 v_mul_f32_e32 v47, s1, v42 ; 0A5E5401 v_mul_f32_e32 v45, s24, v42 ; 0A5A5418 v_mul_f32_e32 v42, v49, v39 ; 0A544F31 v_mul_f32_e32 v44, v49, v36 ; 0A584931 v_mul_f32_e32 v39, v49, v40 ; 0A4E5131 v_mul_f32_e32 v49, v48, v43 ; 0A625730 v_mad_f32 v40, v47, v38, v49 ; D1C10028 04C64D2F v_mac_f32_e32 v40, v45, v41 ; 2C50532D v_cmp_lt_f32_e64 s[0:1], 0, v46 ; D0410000 00025C80 v_mul_f32_e32 v50, v47, v38 ; 0A644D2F v_mul_f32_e32 v51, v45, v41 ; 0A66532D v_max_f32_e32 v36, 0, v40 ; 16485080 s_and_b64 s[24:25], vcc, s[0:1] ; 8698006A s_and_saveexec_b64 s[0:1], s[24:25] ; BE802018 s_xor_b64 s[0:1], exec, s[0:1] ; 8880007E s_cbranch_execz BB0_9 ; BF880000 v_sub_f32_e64 v35, -v49, v50 ; D1020023 20026531 v_subrev_f32_e32 v35, v51, v35 ; 06464733 v_mul_f32_e32 v49, v43, v35 ; 0A62472B v_mul_f32_e32 v50, v38, v35 ; 0A644726 v_mul_f32_e32 v51, v41, v35 ; 0A664729 v_mac_f32_e32 v49, v43, v35 ; 2C62472B v_mac_f32_e32 v50, v38, v35 ; 2C644726 v_mac_f32_e32 v51, v41, v35 ; 2C664729 v_sub_f32_e64 v35, -v49, v48 ; D1020023 20026131 v_sub_f32_e64 v47, -v50, v47 ; D102002F 20025F32 v_mul_f32_e32 v35, v35, v44 ; 0A465923 v_sub_f32_e64 v45, -v51, v45 ; D102002D 20025B33 v_mac_f32_e32 v35, v47, v42 ; 2C46552F v_mac_f32_e32 v35, v45, v39 ; 2C464F2D v_add_f32_e32 v45, v36, v36 ; 025A4924 v_sqrt_f32_e32 v45, v45 ; 7E5A4F2D v_max_f32_e32 v35, 0x3727c5ac, v35 ; 164646FF 3727C5AC v_add_f32_e64 v45, v45, 0 clamp ; D101802D 0001012D v_mul_f32_e32 v35, v45, v35 ; 0A46472D v_log_f32_e32 v35, v35 ; 7E464323 v_add_f32_e32 v45, 0x3c23d70a, v46 ; 025A5CFF 3C23D70A v_mul_f32_e32 v45, 0x42800000, v45 ; 0A5A5AFF 42800000 v_max_f32_e32 v45, 0x38d1b717, v45 ; 165A5AFF 38D1B717 v_mul_legacy_f32_e32 v35, v45, v35 ; 0846472D v_exp_f32_e32 v35, v35 ; 7E464123 v_mul_f32_e32 v35, v37, v35 ; 0A464725 s_or_b64 exec, exec, s[0:1] ; 87FE007E v_sub_f32_e32 v37, 0x3eaa7efa, v40 ; 044A50FF 3EAA7EFA v_mul_f32_e32 v40, v44, v43 ; 0A50572C v_mac_f32_e32 v40, v42, v38 ; 2C504D2A v_mac_f32_e32 v40, v39, v41 ; 2C505327 v_add_f32_e64 v38, v40, 0 clamp ; D1018026 00010128 v_subrev_f32_e32 v40, s3, v0 ; 06500003 v_subrev_f32_e32 v41, s8, v1 ; 06520208 v_mul_f32_e32 v43, v40, v40 ; 0A565128 v_subrev_f32_e32 v42, s2, v8 ; 06541002 v_mac_f32_e32 v43, v41, v41 ; 2C565329 v_mac_f32_e32 v43, v42, v42 ; 2C56552A s_buffer_load_dword s25, s[12:15], 0x108 ; C0220646 00000108 v_rsq_f32_e32 v44, v43 ; 7E58492B v_sub_f32_e32 v38, 1.0, v38 ; 044C4CF2 s_buffer_load_dword s28, s[12:15], 0x10c ; C0220706 0000010C v_add_f32_e64 v38, v38, 0 clamp ; D1018026 00010126 v_log_f32_e32 v38, v38 ; 7E4C4326 s_buffer_load_dword s0, s[12:15], 0x110 ; C0220006 00000110 v_mad_f32 v45, v46, 0.5, 2.0 ; D1C1002D 03D1E12E v_mul_f32_e32 v50, v44, v40 ; 0A64512C s_waitcnt lgkmcnt(0) ; BF8C007F v_rcp_f32_e32 v40, s25 ; 7E504419 v_max_f32_e32 v39, 0x38d1b717, v45 ; 164E5AFF 38D1B717 v_mul_f32_e32 v45, v44, v41 ; 0A5A532C v_mov_b32_e32 v41, s25 ; 7E520219 v_sqrt_f32_e32 v49, v43 ; 7E624F2B v_sub_f32_e32 v41, s28, v41 ; 0452521C s_buffer_load_dword s24, s[12:15], 0x104 ; C0220606 00000104 v_mul_legacy_f32_e32 v38, v39, v38 ; 084C4D27 v_mov_b32_e32 v39, 0xbfb8aa3b ; 7E4E02FF BFB8AA3B v_subrev_f32_e32 v41, v41, v49 ; 06526329 v_mul_f32_e32 v40, v40, v41 ; 0A505328 v_mul_f32_e32 v39, s0, v39 ; 0A4E4E00 v_exp_f32_e32 v39, v39 ; 7E4E4127 v_add_f32_e64 v40, v40, 0 clamp ; D1018028 00010128 s_buffer_load_dword s1, s[12:15], 0x100 ; C0220046 00000100 v_sub_f32_e32 v39, 1.0, v39 ; 044E4EF2 v_mul_f32_e64 v40, v40, -s0 ; D1050028 40000128 v_mov_b32_e32 v41, 0x3fb8aa3b ; 7E5202FF 3FB8AA3B v_mul_f32_e32 v51, v44, v42 ; 0A66552C v_rcp_f32_e32 v42, v39 ; 7E544527 v_mul_f32_e32 v39, v41, v40 ; 0A4E5129 s_waitcnt lgkmcnt(0) ; BF8C007F v_rcp_f32_e32 v40, s24 ; 7E504418 v_subrev_f32_e32 v43, s1, v49 ; 06566201 v_mul_f32_e32 v46, v50, v50 ; 0A5C6532 v_mac_f32_e32 v46, v45, v45 ; 2C5C5B2D v_mul_f32_e32 v40, v40, v43 ; 0A505728 v_add_f32_e64 v40, v40, 0 clamp ; D1018028 00010128 v_mul_f32_e64 v40, v40, -s0 ; D1050028 40000128 v_mul_f32_e32 v40, v41, v40 ; 0A505129 v_exp_f32_e32 v40, v40 ; 7E504128 v_mad_f32 v40, -v40, v42, v42 ; D1C10028 24AA5528 v_add_f32_e64 v55, v40, 0 clamp ; D1018037 00010128 v_cubema_f32 v40, v50, v45, v51 ; D1C70028 04CE5B32 v_rcp_f32_e64 v44, |v40| ; D162012C 00000128 v_mac_f32_e32 v46, v51, v51 ; 2C5C6733 s_load_dwordx8 s[32:39], s[4:5], 0x80 ; C00E0802 00000080 s_load_dwordx4 s[24:27], s[4:5], 0xb0 ; C00A0602 000000B0 v_rsq_f32_e32 v52, v46 ; 7E68492E s_buffer_load_dword s29, s[12:15], 0xcc ; C0220746 000000CC v_exp_f32_e32 v39, v39 ; 7E4E4127 v_cubetc_f32 v41, v50, v45, v51 ; D1C60029 04CE5B32 v_mov_b32_e32 v40, 0x3fc00000 ; 7E5002FF 3FC00000 v_cubesc_f32 v43, v50, v45, v51 ; D1C5002B 04CE5B32 v_mad_f32 v39, -v39, v42, v42 ; D1C10027 24AA5527 v_mad_f32 v41, v44, v41, v40 ; D1C10029 04A2532C v_mac_f32_e32 v40, v44, v43 ; 2C50572C v_cubeid_f32 v42, v50, v45, v51 ; D1C4002A 04CE5B32 v_mul_f32_e32 v53, v52, v45 ; 0A6A5B34 v_add_f32_e64 v37, v37, 0 clamp ; D1018025 00010125 v_exp_f32_e32 v38, v38 ; 7E4C4126 v_add_f32_e64 v39, v39, 0 clamp ; D1018027 00010127 s_waitcnt lgkmcnt(0) ; BF8C007F image_sample v[40:43], v[40:43], s[32:39], s[24:27] dmask:0xf ; F0800F00 00C82828 v_cmp_nlt_f32_e32 vcc, 0, v53 ; 7C9C6A80 s_and_saveexec_b64 s[30:31], vcc ; BE9E206A s_xor_b64 s[30:31], exec, s[30:31] ; 889E1E7E s_waitcnt vmcnt(0) ; BF8C0F70 s_cbranch_execz BB0_11 ; BF880000 v_add_f32_e64 v44, -v53, 0 clamp ; D101802C 20010135 v_mul_f32_e32 v44, 0x3fa00000, v44 ; 0A5858FF 3FA00000 s_buffer_load_dword s0, s[12:15], 0x50 ; C0220006 00000050 v_add_f32_e64 v44, v44, 0 clamp ; D101802C 0001012C v_madak_f32_e32 v45, -2.0, v44, 0x40400000 ; 305A58F5 40400000 v_mul_f32_e32 v45, v45, v44 ; 0A5A592D v_mul_f32_e32 v44, v45, v44 ; 0A58592D s_buffer_load_dword s1, s[12:15], 0x54 ; C0220046 00000054 s_buffer_load_dword s24, s[12:15], 0x58 ; C0220606 00000058 s_waitcnt lgkmcnt(0) ; BF8C007F v_mad_f32 v45, -v44, s0, s0 ; D1C1002D 2000012C s_buffer_load_dword s25, s[12:15], 0x60 ; C0220646 00000060 s_buffer_load_dword s0, s[12:15], 0x68 ; C0220006 00000068 s_buffer_load_dword s26, s[12:15], 0x64 ; C0220686 00000064 v_mad_f32 v46, -v44, s1, s1 ; D1C1002E 2004032C v_mov_b32_e32 v48, s24 ; 7E600218 s_waitcnt lgkmcnt(0) ; BF8C007F v_mac_f32_e32 v45, s25, v44 ; 2C5A5819 v_mul_f32_e32 v47, s0, v44 ; 0A5E5800 v_mac_f32_e32 v46, s26, v44 ; 2C5C581A s_or_saveexec_b64 s[30:31], s[30:31] ; BE9E211E s_buffer_load_dword s27, s[12:15], 0x20 ; C02206C6 00000020 s_buffer_load_dword s26, s[12:15], 0x24 ; C0220686 00000024 s_buffer_load_dword s25, s[12:15], 0x28 ; C0220646 00000028 s_buffer_load_dword s0, s[12:15], 0xc0 ; C0220006 000000C0 s_buffer_load_dword s1, s[12:15], 0xc4 ; C0220046 000000C4 s_buffer_load_dword s24, s[12:15], 0xc8 ; C0220606 000000C8 s_xor_b64 exec, exec, s[30:31] ; 88FE1E7E s_waitcnt lgkmcnt(0) ; BF8C007F s_cbranch_execz BB0_13 ; BF880000 v_add_f32_e64 v44, v53, 0 clamp ; D101802C 00010135 v_mul_f32_e32 v44, 0x3fa00000, v44 ; 0A5858FF 3FA00000 s_buffer_load_dword s35, s[12:15], 0x50 ; C02208C6 00000050 v_add_f32_e64 v44, v44, 0 clamp ; D101802C 0001012C s_buffer_load_dword s32, s[12:15], 0x40 ; C0220806 00000040 v_madak_f32_e32 v45, -2.0, v44, 0x40400000 ; 305A58F5 40400000 v_mul_f32_e32 v45, v45, v44 ; 0A5A592D v_mul_f32_e32 v44, v45, v44 ; 0A58592D s_waitcnt lgkmcnt(0) ; BF8C007F v_mad_f32 v45, -v44, s35, s35 ; D1C1002D 208C472C s_buffer_load_dword s36, s[12:15], 0x54 ; C0220906 00000054 s_buffer_load_dword s34, s[12:15], 0x48 ; C0220886 00000048 v_mac_f32_e32 v45, s32, v44 ; 2C5A5820 s_buffer_load_dword s32, s[12:15], 0x58 ; C0220806 00000058 s_buffer_load_dword s33, s[12:15], 0x44 ; C0220846 00000044 s_waitcnt lgkmcnt(0) ; BF8C007F v_mad_f32 v46, -v44, s36, s36 ; D1C1002E 2090492C v_mul_f32_e32 v47, s34, v44 ; 0A5E5822 v_mov_b32_e32 v48, s32 ; 7E600220 v_mac_f32_e32 v46, s33, v44 ; 2C5C5821 s_or_b64 exec, exec, s[30:31] ; 87FE1E7E v_mul_f32_e32 v50, v52, v50 ; 0A646534 v_mul_f32_e32 v51, v52, v51 ; 0A666734 v_mul_f32_e32 v50, s28, v50 ; 0A64641C v_mul_f32_e32 v52, s28, v53 ; 0A686A1C v_mul_f32_e32 v51, s28, v51 ; 0A66661C v_mul_f32_e32 v50, 4.0, v50 ; 0A6464F6 v_mul_f32_e32 v51, 4.0, v51 ; 0A6666F6 v_mad_f32 v52, v52, 4.0, s8 ; D1C10034 0021ED34 v_cubema_f32 v56, v50, v52, v51 ; D1C70038 04CE6932 v_mul_f32_e32 v43, s29, v43 ; 0A56561D s_load_dwordx8 s[28:35], s[4:5], 0x0 ; C00E0702 00000000 v_rcp_f32_e64 v56, |v56| ; D1620138 00000138 s_load_dwordx4 s[36:39], s[4:5], 0x30 ; C00A0902 00000030 v_cubetc_f32 v53, v50, v52, v51 ; D1C60035 04CE6932 v_cubesc_f32 v54, v50, v52, v51 ; D1C50036 04CE6932 v_cubeid_f32 v52, v50, v52, v51 ; D1C40034 04CE6932 v_mov_b32_e32 v50, 0x3fc00000 ; 7E6402FF 3FC00000 v_mad_f32 v51, v56, v53, v50 ; D1C10033 04CA6B38 v_mac_f32_e32 v50, v56, v54 ; 2C646D38 s_and_b64 exec, exec, s[6:7] ; 86FE067E s_waitcnt lgkmcnt(0) ; BF8C007F image_sample v[51:54], v[50:53], s[28:35], s[36:39] dmask:0xf ; F0800F00 01273332 s_buffer_load_dword s32, s[12:15], 0x118 ; C0220806 00000118 s_buffer_load_dword s29, s[12:15], 0xe4 ; C0220746 000000E4 s_buffer_load_dword s4, s[12:15], 0x80 ; C0220106 00000080 s_buffer_load_dword s5, s[12:15], 0x84 ; C0220146 00000084 s_buffer_load_dword s6, s[12:15], 0x88 ; C0220186 00000088 s_waitcnt lgkmcnt(0) ; BF8C007F v_mul_f32_e32 v50, s32, v49 ; 0A646220 v_mul_f32_e32 v50, 0x3fd9999a, v50 ; 0A6464FF 3FD9999A v_mul_f32_e32 v50, 0xbfb8aa3b, v50 ; 0A6464FF BFB8AA3B v_exp_f32_e32 v50, v50 ; 7E644132 v_sub_f32_e32 v50, 0x3f99999a, v50 ; 046464FF 3F99999A s_buffer_load_dword s28, s[12:15], 0xf0 ; C0220706 000000F0 s_buffer_load_dword s8, s[12:15], 0xf4 ; C0220206 000000F4 s_buffer_load_dword s7, s[12:15], 0xf8 ; C02201C6 000000F8 v_mul_f32_e32 v43, v50, v43 ; 0A565732 v_mul_f32_e32 v43, 0x3fa00000, v43 ; 0A5656FF 3FA00000 v_add_f32_e64 v43, v43, 0 clamp ; D101802B 0001012B v_cmp_ngt_f32_e64 s[30:31], s29, 0 ; D04B001E 0001001D v_max_f32_e32 v50, v43, v55 ; 16646F2B s_and_b64 vcc, exec, s[30:31] ; 86EA1E7E s_waitcnt vmcnt(0) lgkmcnt(0) ; BF8C0070 s_cbranch_vccnz BB0_15 ; BF870000 s_buffer_load_dword s30, s[12:15], 0xe0 ; C0220786 000000E0 v_mad_f32 v9, 0, s3, v9 ; D1C10009 04240680 v_mac_f32_e64 v9, s2, 0 ; D1160009 00010002 v_mac_f32_e32 v1, 0, v0 ; 2C020080 v_mac_f32_e32 v12, 0, v19 ; 2C182680 s_waitcnt lgkmcnt(0) ; BF8C007F v_add_f32_e32 v0, s30, v9 ; 0200121E v_mac_f32_e32 v12, 0, v18 ; 2C182480 v_cmp_ge_f32_e32 vcc, 0, v0 ; 7C8C0080 v_mac_f32_e32 v1, 0, v8 ; 2C021080 v_mac_f32_e64 v12, s30, 0 ; D116000C 0001001E v_cndmask_b32_e64 v9, 0, 1.0, vcc ; D1000009 01A9E480 s_buffer_load_dword s12, s[12:15], 0xe8 ; C0220306 000000E8 v_add_f32_e32 v1, s30, v1 ; 0202021E v_mul_f32_e32 v8, -2.0, v9 ; 0A1012F5 v_rcp_f32_e64 v12, |v12| ; D162010C 0000010C v_mad_f32 v8, v1, v8, v1 ; D1C10008 04061101 v_min_f32_e32 v8, 0, v8 ; 14101080 v_add_f32_e32 v0, v0, v1 ; 02000300 v_mul_f32_e32 v1, v8, v8 ; 0A021108 v_mul_f32_e32 v1, v12, v1 ; 0A02030C s_waitcnt lgkmcnt(0) ; BF8C007F v_mul_f32_e32 v18, s12, v49 ; 0A24620C v_mad_f32 v0, v9, v0, -v1 ; D1C10000 84060109 v_mul_f32_e32 v0, v0, v18 ; 0A002500 v_mul_f32_e32 v0, s29, v0 ; 0A00001D v_mul_f32_e32 v0, 0x3fb8aa3b, v0 ; 0A0000FF 3FB8AA3B v_exp_f32_e32 v0, v0 ; 7E004100 v_add_f32_e64 v0, v0, 0 clamp ; D1018000 00010100 v_sub_f32_e32 v0, 1.0, v0 ; 040000F2 v_max_f32_e32 v50, v0, v50 ; 16646500 v_mov_b32_e32 v19, 0xff800000 ; 7E2602FF FF800000 v_mul_f32_e32 v9, s20, v23 ; 0A122E14 v_cmp_eq_f32_e32 vcc, v2, v19 ; 7C842702 v_mov_b32_e32 v23, 0x7f800000 ; 7E2E02FF 7F800000 v_mad_f32 v0, -v14, s17, s17 ; D1C10000 2044230E v_cndmask_b32_e32 v22, v22, v23, vcc ; 002C2F16 v_cmp_eq_f32_e32 vcc, v3, v19 ; 7C842703 v_mad_f32 v10, v14, v10, v0 ; D1C1000A 0402150E v_mac_f32_e32 v0, v14, v22 ; 2C002D0E v_mad_f32 v1, -v14, s18, s18 ; D1C10001 2048250E v_sub_f32_e32 v12, 1.0, v29 ; 04183AF2 v_cndmask_b32_e32 v21, v21, v23, vcc ; 002A2F15 v_mad_f32 v6, v14, v6, v1 ; D1C10006 04060D0E v_cmp_eq_f32_e32 vcc, v4, v19 ; 7C842704 v_mac_f32_e32 v28, v12, v30 ; 2C383D0C v_mul_f32_e32 v0, v0, v9 ; 0A001300 v_add_f32_e32 v9, v26, v26 ; 0212351A v_mul_f32_e32 v12, s11, v24 ; 0A18300B v_mac_f32_e32 v1, v14, v21 ; 2C022B0E v_mul_f32_e32 v9, s9, v9 ; 0A121209 v_mad_f32 v8, -v14, s19, s19 ; D1C10008 204C270E v_mul_f32_e32 v1, v1, v12 ; 0A021901 v_add_f32_e32 v12, v27, v27 ; 0218371B v_cndmask_b32_e32 v19, v20, v23, vcc ; 00262F14 v_mad_f32 v11, v14, v11, v8 ; D1C1000B 0422170E v_mul_f32_e32 v9, v2, v9 ; 0A121302 v_mul_f32_e32 v12, s9, v12 ; 0A181809 v_mac_f32_e32 v8, v14, v19 ; 2C10270E v_add_f32_e32 v14, v28, v28 ; 021C391C v_mul_f32_e32 v14, s9, v14 ; 0A1C1C09 v_mad_f32 v9, -v16, v9, v9 ; D1C10009 24261310 v_mul_f32_e32 v12, v3, v12 ; 0A181903 v_mul_f32_e32 v18, s16, v25 ; 0A243210 v_mul_f32_e32 v14, v4, v14 ; 0A1C1D04 v_mac_f32_e32 v9, v16, v0 ; 2C120110 v_mad_f32 v0, -v16, v12, v12 ; D1C10000 24321910 v_mul_f32_e32 v3, s26, v3 ; 0A06061A v_mac_f32_e32 v0, v16, v1 ; 2C000310 v_mad_f32 v1, -v16, v14, v14 ; D1C10001 243A1D10 v_mul_f32_e32 v8, v8, v18 ; 0A102508 v_mac_f32_e32 v1, v16, v8 ; 2C021110 v_mul_f32_e32 v8, v5, v17 ; 0A102305 v_mul_f32_e32 v6, s26, v6 ; 0A0C0C1A v_mul_f32_e32 v3, v36, v3 ; 0A060724 v_mul_f32_e32 v4, s25, v4 ; 0A080819 v_mac_f32_e32 v3, v35, v6 ; 2C060D23 v_mul_f32_e32 v6, v8, v38 ; 0A0C4D08 v_mul_f32_e32 v8, v37, v37 ; 0A104B25 v_mul_f32_e32 v2, s27, v2 ; 0A04041B v_mul_f32_e32 v6, v8, v6 ; 0A0C0D08 v_mul_f32_e32 v11, s25, v11 ; 0A161619 v_mul_f32_e32 v4, v36, v4 ; 0A080924 v_mac_f32_e32 v4, v35, v11 ; 2C081723 v_mul_f32_e32 v10, s27, v10 ; 0A14141B v_mul_f32_e32 v2, v36, v2 ; 0A040524 v_mac_f32_e32 v32, s22, v34 ; 2C404416 v_mac_f32_e32 v3, s26, v6 ; 2C060C1A v_mac_f32_e32 v2, v35, v10 ; 2C041523 v_mac_f32_e32 v3, v31, v32 ; 2C06411F v_mac_f32_e32 v15, s23, v34 ; 2C1E4417 v_mac_f32_e32 v4, s25, v6 ; 2C080C19 v_mac_f32_e32 v4, v31, v15 ; 2C081F1F v_mac_f32_e32 v2, s27, v6 ; 2C040C1B v_mac_f32_e32 v33, s21, v34 ; 2C424415 v_mac_f32_e32 v3, v5, v0 ; 2C060105 v_mul_f32_e32 v0, s4, v51 ; 0A006604 v_sub_f32_e32 v10, 1.0, v44 ; 041458F2 v_mac_f32_e32 v2, v31, v33 ; 2C04431F v_mac_f32_e32 v47, v10, v48 ; 2C5E610A v_mac_f32_e32 v4, v5, v1 ; 2C080305 v_mul_f32_e32 v1, s5, v52 ; 0A026805 v_mac_f32_e32 v0, s4, v51 ; 2C006604 v_mad_f32 v10, -v39, s28, s28 ; D1C1000A 20703927 v_mac_f32_e32 v2, v5, v9 ; 2C041305 v_mul_f32_e32 v5, s6, v53 ; 0A0A6A06 v_mac_f32_e32 v10, v39, v0 ; 2C140127 v_mac_f32_e32 v1, s5, v52 ; 2C026805 v_mad_f32 v0, -v39, s8, s8 ; D1C10000 20201127 v_mac_f32_e32 v0, v39, v1 ; 2C000327 v_mac_f32_e32 v5, s6, v53 ; 2C0A6A06 v_mad_f32 v1, -v39, s7, s7 ; D1C10001 201C0F27 v_mul_f32_e32 v6, s0, v40 ; 0A0C5000 v_mul_f32_e32 v8, s1, v41 ; 0A105201 v_mul_f32_e32 v9, s24, v42 ; 0A125418 v_mac_f32_e32 v1, v39, v5 ; 2C020B27 v_mul_f32_e32 v5, 0.5, v6 ; 0A0A0CF0 v_mul_f32_e32 v6, 0.5, v8 ; 0A0C10F0 v_mul_f32_e32 v8, 0.5, v9 ; 0A1012F0 v_mul_f32_e32 v9, s4, v45 ; 0A125A04 v_add_f32_e64 v14, s9, s9 ; D101000E 00001209 v_mul_f32_e32 v11, s5, v46 ; 0A165C05 v_mul_f32_e32 v9, v14, v9 ; 0A12130E v_mul_f32_e32 v12, s6, v47 ; 0A185E06 v_mul_f32_e32 v11, v14, v11 ; 0A16170E v_mac_f32_e32 v5, 0.5, v9 ; 2C0A12F0 v_mad_f32 v9, -v43, v10, v10 ; D1C10009 242A152B v_mul_f32_e32 v12, v14, v12 ; 0A18190E v_mac_f32_e32 v9, v43, v5 ; 2C120B2B v_mac_f32_e32 v6, 0.5, v11 ; 2C0C16F0 v_mad_f32 v5, -v43, v0, v0 ; D1C10005 2402012B v_mac_f32_e32 v5, v43, v6 ; 2C0A0D2B v_mac_f32_e32 v8, 0.5, v12 ; 2C1018F0 v_mad_f32 v6, -v43, v1, v1 ; D1C10006 2406032B v_mac_f32_e32 v6, v43, v8 ; 2C0C112B v_add_f32_e64 v8, v50, 0 clamp ; D1018008 00010132 v_mad_f32 v0, -v8, v2, v2 ; D1C10000 240A0508 v_mad_f32 v1, -v8, v3, v3 ; D1C10001 240E0708 v_mad_f32 v2, -v8, v4, v4 ; D1C10002 24120908 v_mac_f32_e32 v0, v8, v9 ; 2C001308 v_mac_f32_e32 v1, v8, v5 ; 2C020B08 v_mac_f32_e32 v2, v8, v6 ; 2C040D08 v_mad_f32 v3, -v8, v7, v7 ; D1C10003 241E0F08 Shader epilog disassembly: v_cvt_pkrtz_f16_f32_e64 v0, v0, v1 ; D2960000 00020300 v_cvt_pkrtz_f16_f32_e64 v1, v2, v3 ; D2960001 00020702 exp 15, 0, 1, 1, 1, v0, v1, v0, v0 ; C4001C0F 00000100 s_endpgm ; BF810000 *** SHADER CONFIG *** SPI_PS_INPUT_ADDR = 0xd077 SPI_PS_INPUT_ENA = 0x0002 *** SHADER STATS *** SGPRS: 96 VGPRS: 60 Spilled SGPRs: 0 Spilled VGPRs: 0 Code Size: 4392 bytes LDS: 0 blocks Scratch: 0 bytes per wave Max Waves: 4 ******************** VERT PROPERTY NEXT_SHADER FRAG DCL IN[0] DCL IN[1] DCL IN[2] DCL IN[3] DCL IN[4] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] DCL OUT[2], GENERIC[1] DCL OUT[3], GENERIC[2] DCL OUT[4], GENERIC[3] DCL CONST[0..22] DCL TEMP[0..6], LOCAL IMM[0] FLT32 { 0.0000, 1.0000, 0.0000, 0.0000} 0: MAD TEMP[0].xy, IN[3].xyyy, CONST[17].xyyy, CONST[17].zwww 1: MAD TEMP[1].xy, IN[2].xyyy, CONST[18].xyyy, CONST[18].zwww 2: MOV TEMP[0].zw, TEMP[1].yyxy 3: MUL TEMP[1], CONST[8], IN[0].xxxx 4: MAD TEMP[1], CONST[9], IN[0].yyyy, TEMP[1] 5: MAD TEMP[1], CONST[10], IN[0].zzzz, TEMP[1] 6: MAD TEMP[1].xyz, CONST[11], IN[0].wwww, TEMP[1] 7: MOV TEMP[2].x, CONST[12].xxxx 8: MOV TEMP[2].y, CONST[13].xxxx 9: MOV TEMP[2].z, CONST[14].xxxx 10: MOV TEMP[3].x, CONST[12].yyyy 11: MOV TEMP[3].y, CONST[13].yyyy 12: MOV TEMP[3].z, CONST[14].yyyy 13: MOV TEMP[4].x, CONST[12].zzzz 14: MOV TEMP[4].y, CONST[13].zzzz 15: MOV TEMP[4].z, CONST[14].zzzz 16: MUL TEMP[2].xyz, TEMP[2].xyzz, IN[1].xxxx 17: MAD TEMP[2].xyz, TEMP[3].xyzz, IN[1].yyyy, TEMP[2].xyzz 18: MAD TEMP[2].xyz, TEMP[4].xyzz, IN[1].zzzz, TEMP[2].xyzz 19: DP3 TEMP[3].x, TEMP[2].xyzz, TEMP[2].xyzz 20: RSQ TEMP[3].x, TEMP[3].xxxx 21: MUL TEMP[2].xyz, TEMP[2].xyzz, TEMP[3].xxxx 22: MUL TEMP[3].xyz, CONST[8].xyzz, IN[4].xxxx 23: MAD TEMP[3].xyz, CONST[9].xyzz, IN[4].yyyy, TEMP[3].xyzz 24: MAD TEMP[3].xyz, CONST[10].xyzz, IN[4].zzzz, TEMP[3].xyzz 25: DP3 TEMP[4].x, TEMP[3].xyzz, TEMP[3].xyzz 26: RSQ TEMP[4].x, TEMP[4].xxxx 27: MUL TEMP[3].xyz, TEMP[3].xyzz, TEMP[4].xxxx 28: MUL TEMP[4].xyz, TEMP[2].zxyy, TEMP[3].yzxx 29: MAD TEMP[4].xyz, TEMP[2].yzxx, TEMP[3].zxyy, -TEMP[4].xyzz 30: MUL TEMP[5].x, IN[4].wwww, CONST[16].wwww 31: MUL TEMP[4].xyz, TEMP[4].xyzz, TEMP[5].xxxx 32: MOV TEMP[5].x, TEMP[3].xxxx 33: MOV TEMP[5].y, TEMP[4].xxxx 34: MOV TEMP[5].z, TEMP[2].xxxx 35: MOV TEMP[5].w, TEMP[1].xxxx 36: MOV TEMP[6].x, TEMP[3].yyyy 37: MOV TEMP[6].y, TEMP[4].yyyy 38: MOV TEMP[6].z, TEMP[2].yyyy 39: MOV TEMP[6].w, TEMP[1].yyyy 40: MOV TEMP[3].x, TEMP[3].zzzz 41: MOV TEMP[3].y, TEMP[4].zzzz 42: MOV TEMP[3].z, TEMP[2].zzzz 43: MOV TEMP[3].w, TEMP[1].zzzz 44: MUL TEMP[1], CONST[19], IN[0].xxxx 45: MAD TEMP[1], CONST[20], IN[0].yyyy, TEMP[1] 46: MAD TEMP[1], CONST[21], IN[0].zzzz, TEMP[1] 47: MAD TEMP[1], CONST[22], IN[0].wwww, TEMP[1] 48: MOV OUT[4], TEMP[3] 49: MOV OUT[0], TEMP[1] 50: MOV OUT[1], TEMP[0] 51: MOV OUT[2], TEMP[5] 52: MOV OUT[3], TEMP[6] 53: END radeonsi: Compiling shader 60 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_vs <{ float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32, i32, i32, i32, i32, i32, i32, i32, i32) { main_body: %19 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 0, !amdgpu.uniform !0 %20 = load <16 x i8>, <16 x i8> addrspace(2)* %19, align 16, !invariant.load !0 %21 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %20, i32 0, i32 %14) %22 = extractelement <4 x float> %21, i32 0 %23 = extractelement <4 x float> %21, i32 1 %24 = extractelement <4 x float> %21, i32 2 %25 = extractelement <4 x float> %21, i32 3 %26 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 1, !amdgpu.uniform !0 %27 = load <16 x i8>, <16 x i8> addrspace(2)* %26, align 16, !invariant.load !0 %28 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %27, i32 0, i32 %15) %29 = extractelement <4 x float> %28, i32 0 %30 = extractelement <4 x float> %28, i32 1 %31 = extractelement <4 x float> %28, i32 2 %32 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 2, !amdgpu.uniform !0 %33 = load <16 x i8>, <16 x i8> addrspace(2)* %32, align 16, !invariant.load !0 %34 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %33, i32 0, i32 %16) %35 = extractelement <4 x float> %34, i32 0 %36 = extractelement <4 x float> %34, i32 1 %37 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 3, !amdgpu.uniform !0 %38 = load <16 x i8>, <16 x i8> addrspace(2)* %37, align 16, !invariant.load !0 %39 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %38, i32 0, i32 %17) %40 = extractelement <4 x float> %39, i32 0 %41 = extractelement <4 x float> %39, i32 1 %42 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 4, !amdgpu.uniform !0 %43 = load <16 x i8>, <16 x i8> addrspace(2)* %42, align 16, !invariant.load !0 %44 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %43, i32 0, i32 %18) %45 = extractelement <4 x float> %44, i32 0 %46 = extractelement <4 x float> %44, i32 1 %47 = extractelement <4 x float> %44, i32 2 %48 = extractelement <4 x float> %44, i32 3 %49 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %50 = load <16 x i8>, <16 x i8> addrspace(2)* %49, align 16, !invariant.load !0 %51 = call float @llvm.SI.load.const(<16 x i8> %50, i32 272) %52 = call float @llvm.SI.load.const(<16 x i8> %50, i32 280) %53 = fmul float %40, %51 %54 = fadd float %53, %52 %55 = call float @llvm.SI.load.const(<16 x i8> %50, i32 276) %56 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %57 = load <16 x i8>, <16 x i8> addrspace(2)* %56, align 16, !invariant.load !0 %58 = call float @llvm.SI.load.const(<16 x i8> %57, i32 284) %59 = fmul float %41, %55 %60 = fadd float %59, %58 %61 = call float @llvm.SI.load.const(<16 x i8> %57, i32 288) %62 = call float @llvm.SI.load.const(<16 x i8> %57, i32 296) %63 = fmul float %35, %61 %64 = fadd float %63, %62 %65 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %66 = load <16 x i8>, <16 x i8> addrspace(2)* %65, align 16, !invariant.load !0 %67 = call float @llvm.SI.load.const(<16 x i8> %66, i32 292) %68 = call float @llvm.SI.load.const(<16 x i8> %66, i32 300) %69 = fmul float %36, %67 %70 = fadd float %69, %68 %71 = call float @llvm.SI.load.const(<16 x i8> %66, i32 128) %72 = fmul float %71, %22 %73 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %74 = load <16 x i8>, <16 x i8> addrspace(2)* %73, align 16, !invariant.load !0 %75 = call float @llvm.SI.load.const(<16 x i8> %74, i32 132) %76 = fmul float %75, %22 %77 = call float @llvm.SI.load.const(<16 x i8> %74, i32 136) %78 = fmul float %77, %22 %79 = call float @llvm.SI.load.const(<16 x i8> %74, i32 144) %80 = fmul float %79, %23 %81 = fadd float %80, %72 %82 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %83 = load <16 x i8>, <16 x i8> addrspace(2)* %82, align 16, !invariant.load !0 %84 = call float @llvm.SI.load.const(<16 x i8> %83, i32 148) %85 = fmul float %84, %23 %86 = fadd float %85, %76 %87 = call float @llvm.SI.load.const(<16 x i8> %83, i32 152) %88 = fmul float %87, %23 %89 = fadd float %88, %78 %90 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %91 = load <16 x i8>, <16 x i8> addrspace(2)* %90, align 16, !invariant.load !0 %92 = call float @llvm.SI.load.const(<16 x i8> %91, i32 160) %93 = fmul float %92, %24 %94 = fadd float %93, %81 %95 = call float @llvm.SI.load.const(<16 x i8> %91, i32 164) %96 = fmul float %95, %24 %97 = fadd float %96, %86 %98 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %99 = load <16 x i8>, <16 x i8> addrspace(2)* %98, align 16, !invariant.load !0 %100 = call float @llvm.SI.load.const(<16 x i8> %99, i32 168) %101 = fmul float %100, %24 %102 = fadd float %101, %89 %103 = call float @llvm.SI.load.const(<16 x i8> %99, i32 176) %104 = fmul float %103, %25 %105 = fadd float %104, %94 %106 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %107 = load <16 x i8>, <16 x i8> addrspace(2)* %106, align 16, !invariant.load !0 %108 = call float @llvm.SI.load.const(<16 x i8> %107, i32 180) %109 = fmul float %108, %25 %110 = fadd float %109, %97 %111 = call float @llvm.SI.load.const(<16 x i8> %107, i32 184) %112 = fmul float %111, %25 %113 = fadd float %112, %102 %114 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %115 = load <16 x i8>, <16 x i8> addrspace(2)* %114, align 16, !invariant.load !0 %116 = call float @llvm.SI.load.const(<16 x i8> %115, i32 192) %117 = call float @llvm.SI.load.const(<16 x i8> %115, i32 208) %118 = call float @llvm.SI.load.const(<16 x i8> %115, i32 224) %119 = call float @llvm.SI.load.const(<16 x i8> %115, i32 196) %120 = call float @llvm.SI.load.const(<16 x i8> %115, i32 212) %121 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %122 = load <16 x i8>, <16 x i8> addrspace(2)* %121, align 16, !invariant.load !0 %123 = call float @llvm.SI.load.const(<16 x i8> %122, i32 228) %124 = call float @llvm.SI.load.const(<16 x i8> %122, i32 200) %125 = call float @llvm.SI.load.const(<16 x i8> %122, i32 216) %126 = call float @llvm.SI.load.const(<16 x i8> %122, i32 232) %127 = fmul float %116, %29 %128 = fmul float %117, %29 %129 = fmul float %118, %29 %130 = fmul float %119, %30 %131 = fadd float %130, %127 %132 = fmul float %120, %30 %133 = fadd float %132, %128 %134 = fmul float %123, %30 %135 = fadd float %134, %129 %136 = fmul float %124, %31 %137 = fadd float %136, %131 %138 = fmul float %125, %31 %139 = fadd float %138, %133 %140 = fmul float %126, %31 %141 = fadd float %140, %135 %142 = fmul float %137, %137 %143 = fmul float %139, %139 %144 = fadd float %143, %142 %145 = fmul float %141, %141 %146 = fadd float %144, %145 %147 = call float @llvm.sqrt.f32(float %146) %148 = fdiv float 1.000000e+00, %147, !fpmath !1 %149 = fmul float %137, %148 %150 = fmul float %139, %148 %151 = fmul float %141, %148 %152 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %153 = load <16 x i8>, <16 x i8> addrspace(2)* %152, align 16, !invariant.load !0 %154 = call float @llvm.SI.load.const(<16 x i8> %153, i32 128) %155 = fmul float %154, %45 %156 = call float @llvm.SI.load.const(<16 x i8> %153, i32 132) %157 = fmul float %156, %45 %158 = call float @llvm.SI.load.const(<16 x i8> %153, i32 136) %159 = fmul float %158, %45 %160 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %161 = load <16 x i8>, <16 x i8> addrspace(2)* %160, align 16, !invariant.load !0 %162 = call float @llvm.SI.load.const(<16 x i8> %161, i32 144) %163 = fmul float %162, %46 %164 = fadd float %163, %155 %165 = call float @llvm.SI.load.const(<16 x i8> %161, i32 148) %166 = fmul float %165, %46 %167 = fadd float %166, %157 %168 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %169 = load <16 x i8>, <16 x i8> addrspace(2)* %168, align 16, !invariant.load !0 %170 = call float @llvm.SI.load.const(<16 x i8> %169, i32 152) %171 = fmul float %170, %46 %172 = fadd float %171, %159 %173 = call float @llvm.SI.load.const(<16 x i8> %169, i32 160) %174 = fmul float %173, %47 %175 = fadd float %174, %164 %176 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %177 = load <16 x i8>, <16 x i8> addrspace(2)* %176, align 16, !invariant.load !0 %178 = call float @llvm.SI.load.const(<16 x i8> %177, i32 164) %179 = fmul float %178, %47 %180 = fadd float %179, %167 %181 = call float @llvm.SI.load.const(<16 x i8> %177, i32 168) %182 = fmul float %181, %47 %183 = fadd float %182, %172 %184 = fmul float %175, %175 %185 = fmul float %180, %180 %186 = fadd float %185, %184 %187 = fmul float %183, %183 %188 = fadd float %186, %187 %189 = call float @llvm.sqrt.f32(float %188) %190 = fdiv float 1.000000e+00, %189, !fpmath !1 %191 = fmul float %175, %190 %192 = fmul float %180, %190 %193 = fmul float %183, %190 %194 = fmul float %151, %192 %195 = fmul float %149, %193 %196 = fmul float %150, %191 %197 = fmul float %150, %193 %198 = fsub float %197, %194 %199 = fmul float %151, %191 %200 = fsub float %199, %195 %201 = fmul float %149, %192 %202 = fsub float %201, %196 %203 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %204 = load <16 x i8>, <16 x i8> addrspace(2)* %203, align 16, !invariant.load !0 %205 = call float @llvm.SI.load.const(<16 x i8> %204, i32 268) %206 = fmul float %48, %205 %207 = fmul float %198, %206 %208 = fmul float %200, %206 %209 = fmul float %202, %206 %210 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %211 = load <16 x i8>, <16 x i8> addrspace(2)* %210, align 16, !invariant.load !0 %212 = call float @llvm.SI.load.const(<16 x i8> %211, i32 304) %213 = fmul float %212, %22 %214 = call float @llvm.SI.load.const(<16 x i8> %211, i32 308) %215 = fmul float %214, %22 %216 = call float @llvm.SI.load.const(<16 x i8> %211, i32 312) %217 = fmul float %216, %22 %218 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %219 = load <16 x i8>, <16 x i8> addrspace(2)* %218, align 16, !invariant.load !0 %220 = call float @llvm.SI.load.const(<16 x i8> %219, i32 316) %221 = fmul float %220, %22 %222 = call float @llvm.SI.load.const(<16 x i8> %219, i32 320) %223 = fmul float %222, %23 %224 = fadd float %223, %213 %225 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %226 = load <16 x i8>, <16 x i8> addrspace(2)* %225, align 16, !invariant.load !0 %227 = call float @llvm.SI.load.const(<16 x i8> %226, i32 324) %228 = fmul float %227, %23 %229 = fadd float %228, %215 %230 = call float @llvm.SI.load.const(<16 x i8> %226, i32 328) %231 = fmul float %230, %23 %232 = fadd float %231, %217 %233 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %234 = load <16 x i8>, <16 x i8> addrspace(2)* %233, align 16, !invariant.load !0 %235 = call float @llvm.SI.load.const(<16 x i8> %234, i32 332) %236 = fmul float %235, %23 %237 = fadd float %236, %221 %238 = call float @llvm.SI.load.const(<16 x i8> %234, i32 336) %239 = fmul float %238, %24 %240 = fadd float %239, %224 %241 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %242 = load <16 x i8>, <16 x i8> addrspace(2)* %241, align 16, !invariant.load !0 %243 = call float @llvm.SI.load.const(<16 x i8> %242, i32 340) %244 = fmul float %243, %24 %245 = fadd float %244, %229 %246 = call float @llvm.SI.load.const(<16 x i8> %242, i32 344) %247 = fmul float %246, %24 %248 = fadd float %247, %232 %249 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %250 = load <16 x i8>, <16 x i8> addrspace(2)* %249, align 16, !invariant.load !0 %251 = call float @llvm.SI.load.const(<16 x i8> %250, i32 348) %252 = fmul float %251, %24 %253 = fadd float %252, %237 %254 = call float @llvm.SI.load.const(<16 x i8> %250, i32 352) %255 = fmul float %254, %25 %256 = fadd float %255, %240 %257 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %258 = load <16 x i8>, <16 x i8> addrspace(2)* %257, align 16, !invariant.load !0 %259 = call float @llvm.SI.load.const(<16 x i8> %258, i32 356) %260 = fmul float %259, %25 %261 = fadd float %260, %245 %262 = call float @llvm.SI.load.const(<16 x i8> %258, i32 360) %263 = fmul float %262, %25 %264 = fadd float %263, %248 %265 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %266 = load <16 x i8>, <16 x i8> addrspace(2)* %265, align 16, !invariant.load !0 %267 = call float @llvm.SI.load.const(<16 x i8> %266, i32 364) %268 = fmul float %267, %25 %269 = fadd float %268, %253 %270 = bitcast i32 %12 to float %271 = insertvalue <{ float, float, float }> undef, float %270, 2 call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 32, i32 0, float %54, float %60, float %64, float %70) call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 33, i32 0, float %191, float %207, float %149, float %105) call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 34, i32 0, float %192, float %208, float %150, float %110) call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 35, i32 0, float %193, float %209, float %151, float %113) call void @llvm.SI.export(i32 15, i32 0, i32 1, i32 12, i32 0, float %256, float %261, float %264, float %269) ret <{ float, float, float }> %271 } ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.vs.load.input(<16 x i8>, i32, i32) #0 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #0 ; Function Attrs: nounwind readnone declare float @llvm.sqrt.f32(float) #0 ; Function Attrs: nounwind declare void @llvm.SI.export(i32, i32, i32, i32, i32, float, float, float, float) #1 attributes #0 = { nounwind readnone } attributes #1 = { nounwind } !0 = !{} !1 = !{float 2.500000e+00} SHADER KEY instance_divisors = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} as_es = 0 as_ls = 0 export_prim_id = 0 Vertex Shader as VS: Shader prolog disassembly: v_add_i32_e32 v4, vcc, s12, v0 ; 3208000C v_mov_b32_e32 v5, v4 ; 7E0A0304 v_mov_b32_e32 v6, v4 ; 7E0C0304 v_mov_b32_e32 v7, v4 ; 7E0E0304 v_mov_b32_e32 v8, v4 ; 7E100304 Shader main disassembly: s_load_dwordx4 s[4:7], s[10:11], 0x0 ; C00A0105 00000000 s_load_dwordx4 s[12:15], s[10:11], 0x10 ; C00A0305 00000010 s_load_dwordx4 s[16:19], s[10:11], 0x20 ; C00A0405 00000020 s_load_dwordx4 s[20:23], s[10:11], 0x30 ; C00A0505 00000030 s_load_dwordx4 s[0:3], s[2:3], 0x0 ; C00A0001 00000000 s_waitcnt lgkmcnt(0) ; BF8C007F buffer_load_format_xyzw v[9:12], v4, s[4:7], 0 idxen ; E00C2000 80010904 s_nop 0 ; BF800000 buffer_load_format_xyzw v[13:16], v5, s[12:15], 0 idxen ; E00C2000 80030D05 s_nop 0 ; BF800000 buffer_load_format_xyzw v[3:6], v6, s[16:19], 0 idxen ; E00C2000 80040306 s_waitcnt vmcnt(1) ; BF8C0F71 buffer_load_format_xyzw v[16:19], v7, s[20:23], 0 idxen ; E00C2000 80051007 s_buffer_load_dword s12, s[0:3], 0x118 ; C0220300 00000118 s_load_dwordx4 s[4:7], s[10:11], 0x40 ; C00A0105 00000040 s_buffer_load_dword s16, s[0:3], 0x128 ; C0220400 00000128 s_buffer_load_dword s10, s[0:3], 0x110 ; C0220280 00000110 s_buffer_load_dword s17, s[0:3], 0x12c ; C0220440 0000012C s_buffer_load_dword s14, s[0:3], 0x120 ; C0220380 00000120 s_buffer_load_dword s15, s[0:3], 0x124 ; C02203C0 00000124 s_waitcnt lgkmcnt(0) ; BF8C007F v_mov_b32_e32 v0, s12 ; 7E00020C v_mov_b32_e32 v7, s16 ; 7E0E0210 s_buffer_load_dword s13, s[0:3], 0x11c ; C0220340 0000011C s_buffer_load_dword s11, s[0:3], 0x114 ; C02202C0 00000114 s_buffer_load_dword s35, s[0:3], 0xc0 ; C02208C0 000000C0 s_buffer_load_dword s18, s[0:3], 0x80 ; C0220480 00000080 s_buffer_load_dword s19, s[0:3], 0x84 ; C02204C0 00000084 s_buffer_load_dword s28, s[0:3], 0xd0 ; C0220700 000000D0 s_buffer_load_dword s21, s[0:3], 0x90 ; C0220540 00000090 s_buffer_load_dword s31, s[0:3], 0xe0 ; C02207C0 000000E0 s_buffer_load_dword s36, s[0:3], 0xc4 ; C0220900 000000C4 s_buffer_load_dword s20, s[0:3], 0x88 ; C0220500 00000088 s_buffer_load_dword s22, s[0:3], 0x94 ; C0220580 00000094 s_buffer_load_dword s24, s[0:3], 0xa0 ; C0220600 000000A0 s_buffer_load_dword s29, s[0:3], 0xd4 ; C0220740 000000D4 s_buffer_load_dword s32, s[0:3], 0xe4 ; C0220800 000000E4 s_buffer_load_dword s37, s[0:3], 0xc8 ; C0220940 000000C8 s_waitcnt lgkmcnt(0) ; BF8C007F v_mov_b32_e32 v1, s13 ; 7E02020D s_buffer_load_dword s8, s[0:3], 0xe8 ; C0220200 000000E8 s_buffer_load_dword s23, s[0:3], 0x98 ; C02205C0 00000098 s_buffer_load_dword s25, s[0:3], 0xa4 ; C0220640 000000A4 s_buffer_load_dword s30, s[0:3], 0xd8 ; C0220780 000000D8 s_buffer_load_dword s26, s[0:3], 0xa8 ; C0220680 000000A8 s_buffer_load_dword s40, s[0:3], 0x138 ; C0220A00 00000138 s_buffer_load_dword s39, s[0:3], 0x134 ; C02209C0 00000134 s_buffer_load_dword s38, s[0:3], 0x130 ; C0220980 00000130 s_buffer_load_dword s41, s[0:3], 0x13c ; C0220A40 0000013C s_buffer_load_dword s42, s[0:3], 0x140 ; C0220A80 00000140 s_buffer_load_dword s12, s[0:3], 0x150 ; C0220300 00000150 s_buffer_load_dword s13, s[0:3], 0x154 ; C0220340 00000154 s_buffer_load_dword s9, s[0:3], 0x10c ; C0220240 0000010C s_buffer_load_dword s27, s[0:3], 0xb0 ; C02206C0 000000B0 s_buffer_load_dword s33, s[0:3], 0xb4 ; C0220840 000000B4 s_buffer_load_dword s34, s[0:3], 0xb8 ; C0220880 000000B8 s_waitcnt lgkmcnt(0) ; BF8C007F v_mul_f32_e32 v22, s40, v9 ; 0A2C1228 v_mul_f32_e32 v20, s35, v13 ; 0A281A23 s_waitcnt vmcnt(1) ; BF8C0F71 v_mac_f32_e32 v7, s14, v3 ; 2C0E060E s_waitcnt vmcnt(0) ; BF8C0F70 v_mac_f32_e32 v0, s10, v16 ; 2C00200A v_mov_b32_e32 v16, s17 ; 7E200211 v_mac_f32_e32 v16, s15, v4 ; 2C20080F buffer_load_format_xyzw v[3:6], v8, s[4:7], 0 idxen ; E00C2000 80010308 v_mac_f32_e32 v1, s11, v17 ; 2C02220B exp 15, 32, 0, 0, 0, v0, v1, v7, v16 ; C400020F 10070100 v_mul_f32_e32 v21, s28, v13 ; 0A2A1A1C v_mul_f32_e32 v13, s31, v13 ; 0A1A1A1F v_mac_f32_e32 v20, s36, v14 ; 2C281C24 v_mac_f32_e32 v21, s29, v14 ; 2C2A1C1D v_mac_f32_e32 v13, s32, v14 ; 2C1A1C20 v_mac_f32_e32 v20, s37, v15 ; 2C281E25 v_mac_f32_e32 v13, s8, v15 ; 2C1A1E08 v_mac_f32_e32 v21, s30, v15 ; 2C2A1E1E v_mul_f32_e32 v8, v20, v20 ; 0A102914 s_buffer_load_dword s10, s[0:3], 0x148 ; C0220280 00000148 s_buffer_load_dword s8, s[0:3], 0x144 ; C0220200 00000144 v_mac_f32_e32 v8, v21, v21 ; 2C102B15 v_mac_f32_e32 v8, v13, v13 ; 2C101B0D v_rsq_f32_e32 v8, v8 ; 7E104908 s_buffer_load_dword s11, s[0:3], 0x14c ; C02202C0 0000014C v_mul_f32_e32 v15, s39, v9 ; 0A1E1227 s_waitcnt lgkmcnt(0) ; BF8C007F v_mac_f32_e32 v15, s8, v10 ; 2C1E1408 v_mac_f32_e32 v22, s10, v10 ; 2C2C140A s_buffer_load_dword s8, s[0:3], 0x158 ; C0220200 00000158 s_buffer_load_dword s10, s[0:3], 0x15c ; C0220280 0000015C v_mul_f32_e32 v14, s38, v9 ; 0A1C1226 v_mul_f32_e32 v17, s18, v9 ; 0A221212 v_mul_f32_e32 v18, s19, v9 ; 0A241213 v_mul_f32_e32 v19, s20, v9 ; 0A261214 v_mul_f32_e32 v9, s41, v9 ; 0A121229 v_mac_f32_e32 v14, s42, v10 ; 2C1C142A s_waitcnt expcnt(0) ; BF8C0F0F v_mul_f32_e32 v7, v8, v21 ; 0A0E2B08 v_mac_f32_e32 v9, s11, v10 ; 2C12140B v_mac_f32_e32 v17, s21, v10 ; 2C221415 v_mac_f32_e32 v14, s12, v11 ; 2C1C160C v_mac_f32_e32 v15, s13, v11 ; 2C1E160D s_buffer_load_dword s11, s[0:3], 0x160 ; C02202C0 00000160 s_buffer_load_dword s12, s[0:3], 0x164 ; C0220300 00000164 s_buffer_load_dword s13, s[0:3], 0x168 ; C0220340 00000168 s_buffer_load_dword s0, s[0:3], 0x16c ; C0220000 0000016C v_mac_f32_e32 v18, s22, v10 ; 2C241416 v_mac_f32_e32 v19, s23, v10 ; 2C261417 v_mac_f32_e32 v17, s24, v11 ; 2C221618 v_mac_f32_e32 v18, s25, v11 ; 2C241619 v_mac_f32_e32 v19, s26, v11 ; 2C26161A s_waitcnt lgkmcnt(0) ; BF8C007F v_mac_f32_e32 v22, s8, v11 ; 2C2C1608 v_mac_f32_e32 v9, s10, v11 ; 2C12160A v_mac_f32_e32 v17, s27, v12 ; 2C22181B v_mac_f32_e32 v18, s33, v12 ; 2C241821 v_mac_f32_e32 v19, s34, v12 ; 2C261822 v_mac_f32_e32 v14, s11, v12 ; 2C1C180B v_mac_f32_e32 v15, s12, v12 ; 2C1E180C v_mac_f32_e32 v22, s13, v12 ; 2C2C180D v_mac_f32_e32 v9, s0, v12 ; 2C121800 s_waitcnt vmcnt(0) ; BF8C0F70 v_mul_f32_e32 v0, s18, v3 ; 0A000612 v_mul_f32_e32 v1, s19, v3 ; 0A020613 v_mac_f32_e32 v0, s21, v4 ; 2C000815 v_mul_f32_e32 v3, s20, v3 ; 0A060614 v_mac_f32_e32 v1, s22, v4 ; 2C020816 v_mac_f32_e32 v0, s24, v5 ; 2C000A18 v_mac_f32_e32 v3, s23, v4 ; 2C060817 v_mac_f32_e32 v1, s25, v5 ; 2C020A19 v_mul_f32_e32 v4, v0, v0 ; 0A080100 v_mac_f32_e32 v3, s26, v5 ; 2C060A1A v_mac_f32_e32 v4, v1, v1 ; 2C080301 v_mac_f32_e32 v4, v3, v3 ; 2C080703 v_rsq_f32_e32 v4, v4 ; 7E084904 v_mul_f32_e32 v5, v8, v20 ; 0A0A2908 v_mul_f32_e32 v8, v8, v13 ; 0A101B08 v_mul_f32_e32 v6, s9, v6 ; 0A0C0C09 v_mul_f32_e32 v1, v4, v1 ; 0A020304 v_mul_f32_e32 v0, v4, v0 ; 0A000104 v_mul_f32_e32 v3, v4, v3 ; 0A060704 v_mul_f32_e32 v4, v1, v8 ; 0A081101 v_mul_f32_e32 v10, v3, v5 ; 0A140B03 v_mad_f32 v4, v7, v3, -v4 ; D1C10004 84120707 v_mul_f32_e32 v11, v0, v7 ; 0A160F00 v_mad_f32 v10, v8, v0, -v10 ; D1C1000A 842A0108 v_mul_f32_e32 v4, v6, v4 ; 0A080906 v_mad_f32 v11, v5, v1, -v11 ; D1C1000B 842E0305 v_mul_f32_e32 v10, v6, v10 ; 0A141506 exp 15, 33, 0, 0, 0, v0, v4, v5, v17 ; C400021F 11050400 v_mul_f32_e32 v6, v6, v11 ; 0A0C1706 exp 15, 34, 0, 0, 0, v1, v10, v7, v18 ; C400022F 12070A01 exp 15, 35, 0, 0, 0, v3, v6, v8, v19 ; C400023F 13080603 exp 15, 12, 0, 1, 0, v14, v15, v22, v9 ; C40008CF 09160F0E s_waitcnt expcnt(0) ; BF8C0F0F Shader epilog disassembly: s_endpgm ; BF810000 *** SHADER STATS *** SGPRS: 96 VGPRS: 24 Spilled SGPRs: 0 Spilled VGPRs: 0 Code Size: 900 bytes LDS: 0 blocks Scratch: 0 bytes per wave Max Waves: 8 ******************** SHADER KEY prolog.color_two_side = 0 prolog.flatshade_colors = 0 prolog.poly_stipple = 0 prolog.force_persp_sample_interp = 0 prolog.force_linear_sample_interp = 0 prolog.force_persp_center_interp = 0 prolog.force_linear_center_interp = 0 prolog.bc_optimize_for_persp = 0 prolog.bc_optimize_for_linear = 0 epilog.spi_shader_col_format = 0x4 epilog.color_is_int8 = 0x0 epilog.last_cbuf = 0 epilog.alpha_func = 7 epilog.alpha_to_one = 0 epilog.poly_line_smoothing = 0 epilog.clamp_color = 0 Pixel Shader: Shader main disassembly: s_mov_b64 s[6:7], exec ; BE86017E s_wqm_b64 exec, exec ; BEFE077E s_mov_b32 m0, s11 ; BEFC000B v_interp_p1_f32 v0, v2, 3, 1, [m0] ; D4000702 v_interp_p2_f32 v0, [v0], v3, 3, 1, [m0] ; D4010703 v_interp_p1_f32 v1, v2, 3, 2, [m0] ; D4040B02 v_interp_p2_f32 v1, [v1], v3, 3, 2, [m0] ; D4050B03 v_interp_p1_f32 v8, v2, 3, 3, [m0] ; D4200F02 v_interp_p2_f32 v8, [v8], v3, 3, 3, [m0] ; D4210F03 v_interp_p1_f32 v20, v2, 0, 1, [m0] ; D4500402 v_interp_p2_f32 v20, [v20], v3, 0, 1, [m0] ; D4510403 v_interp_p1_f32 v21, v2, 1, 1, [m0] ; D4540502 v_interp_p2_f32 v21, [v21], v3, 1, 1, [m0] ; D4550503 v_interp_p1_f32 v22, v2, 2, 1, [m0] ; D4580602 v_interp_p2_f32 v22, [v22], v3, 2, 1, [m0] ; D4590603 v_interp_p1_f32 v23, v2, 0, 2, [m0] ; D45C0802 v_interp_p2_f32 v23, [v23], v3, 0, 2, [m0] ; D45D0803 v_interp_p1_f32 v24, v2, 1, 2, [m0] ; D4600902 v_interp_p2_f32 v24, [v24], v3, 1, 2, [m0] ; D4610903 v_interp_p1_f32 v25, v2, 2, 2, [m0] ; D4640A02 v_interp_p2_f32 v25, [v25], v3, 2, 2, [m0] ; D4650A03 v_interp_p1_f32 v26, v2, 0, 3, [m0] ; D4680C02 v_interp_p2_f32 v26, [v26], v3, 0, 3, [m0] ; D4690C03 v_interp_p1_f32 v27, v2, 1, 3, [m0] ; D46C0D02 s_load_dwordx4 s[64:67], s[4:5], 0x130 ; C00A1002 00000130 s_load_dwordx8 s[56:63], s[4:5], 0x100 ; C00E0E02 00000100 s_load_dwordx4 s[12:15], s[2:3], 0x0 ; C00A0301 00000000 v_interp_p2_f32 v27, [v27], v3, 1, 3, [m0] ; D46D0D03 v_interp_p1_f32 v28, v2, 2, 3, [m0] ; D4700E02 v_interp_p2_f32 v28, [v28], v3, 2, 3, [m0] ; D4710E03 v_interp_p1_f32 v18, v2, 2, 0, [m0] ; D4480202 v_interp_p2_f32 v18, [v18], v3, 2, 0, [m0] ; D4490203 v_interp_p1_f32 v19, v2, 3, 0, [m0] ; D44C0302 s_load_dwordx4 s[68:71], s[4:5], 0x1f0 ; C00A1102 000001F0 s_load_dwordx8 s[48:55], s[4:5], 0x1c0 ; C00E0C02 000001C0 v_interp_p2_f32 v19, [v19], v3, 3, 0, [m0] ; D44D0303 s_waitcnt lgkmcnt(0) ; BF8C007F image_sample v[4:7], v[18:19], s[56:63], s[64:67] dmask:0xf ; F0800F00 020E0412 v_interp_p1_f32 v11, v2, 0, 0, [m0] ; D42C0002 v_interp_p2_f32 v11, [v11], v3, 0, 0, [m0] ; D42D0003 v_interp_p1_f32 v12, v2, 1, 0, [m0] ; D4300102 s_buffer_load_dword s9, s[12:15], 0x1d0 ; C0220246 000001D0 v_interp_p2_f32 v12, [v12], v3, 1, 0, [m0] ; D4310103 s_buffer_load_dword s11, s[12:15], 0x1d4 ; C02202C6 000001D4 image_sample v[14:17], v[11:12], s[48:55], s[68:71] dmask:0xf ; F0800F00 022C0E0B s_buffer_load_dword s76, s[12:15], 0x1d8 ; C0221306 000001D8 s_waitcnt vmcnt(0) ; BF8C0F70 v_mad_f32 v2, -v17, v4, v4 ; D1C10002 24120911 v_mad_f32 v3, -v17, v5, v5 ; D1C10003 24160B11 v_mac_f32_e32 v2, v17, v14 ; 2C041D11 s_buffer_load_dword s77, s[12:15], 0x128 ; C0221346 00000128 v_mad_f32 v4, -v17, v6, v6 ; D1C10004 241A0D11 s_buffer_load_dword s0, s[12:15], 0x120 ; C0220006 00000120 s_waitcnt lgkmcnt(0) ; BF8C007F v_mul_f32_e32 v5, s9, v2 ; 0A0A0409 s_load_dwordx8 s[40:47], s[4:5], 0x140 ; C00E0A02 00000140 s_load_dwordx4 s[72:75], s[4:5], 0x170 ; C00A1202 00000170 v_mac_f32_e32 v3, v17, v15 ; 2C061F11 v_mad_f32 v14, s9, v2, v5 ; D1C1000E 04160409 v_mad_f32 v2, -2.0, v5, 1.0 ; D1C10002 03CA0AF5 v_mul_f32_e32 v5, s11, v3 ; 0A0A060B v_mac_f32_e32 v4, v17, v16 ; 2C082111 v_mad_f32 v15, s11, v3, v5 ; D1C1000F 0416060B v_mad_f32 v3, -2.0, v5, 1.0 ; D1C10003 03CA0AF5 v_mul_f32_e32 v5, s76, v4 ; 0A0A084C s_buffer_load_dword s1, s[12:15], 0x124 ; C0220046 00000124 v_mad_f32 v16, s76, v4, v5 ; D1C10010 0416084C v_mad_f32 v4, -2.0, v5, 1.0 ; D1C10004 03CA0AF5 v_add_f32_e32 v4, v4, v4 ; 02080904 v_sub_f32_e64 v5, 1.0, s77 ; D1020005 00009AF2 s_waitcnt lgkmcnt(0) ; BF8C007F image_sample v[29:32], v[18:19], s[40:47], s[72:75] dmask:0xf ; F0800F00 024A1D12 v_mad_f32 v4, -v4, v5, 1.0 ; D1C10004 23CA0B04 v_mul_f32_e32 v5, s0, v14 ; 0A0A1C00 v_cmp_le_f32_e32 vcc, 0.5, v14 ; 7C861CF0 s_waitcnt vmcnt(0) ; BF8C0F70 v_mad_f32 v6, -v17, v32, v32 ; D1C10006 24824111 v_sub_f32_e64 v33, 1.0, s0 ; D1020021 000000F2 v_add_f32_e32 v2, v2, v2 ; 02040502 v_mac_f32_e32 v5, s0, v14 ; 2C0A1C00 v_cndmask_b32_e64 v17, 0, 1.0, vcc ; D1000011 01A9E480 v_mad_f32 v2, -v2, v33, 1.0 ; D1C10002 23CA4302 v_mad_f32 v32, -v17, v5, v5 ; D1C10020 24160B11 v_mac_f32_e32 v32, v17, v2 ; 2C400511 v_mul_f32_e32 v2, s1, v15 ; 0A041E01 s_load_dwordx8 s[28:35], s[4:5], 0x180 ; C00E0702 00000180 s_load_dwordx4 s[36:39], s[4:5], 0x1b0 ; C00A0902 000001B0 v_mac_f32_e32 v2, s1, v15 ; 2C041E01 s_buffer_load_dword s9, s[12:15], 0x12c ; C0220246 0000012C v_mad_f32 v33, -v17, v2, v2 ; D1C10021 240A0511 v_mul_f32_e32 v2, s77, v16 ; 0A04204D v_sub_f32_e64 v34, 1.0, s1 ; D1020022 000002F2 v_add_f32_e32 v3, v3, v3 ; 02060703 v_mac_f32_e32 v2, s77, v16 ; 2C04204D v_mad_f32 v3, -v3, v34, 1.0 ; D1C10003 23CA4503 v_mad_f32 v34, -v17, v2, v2 ; D1C10022 240A0511 s_buffer_load_dword s11, s[12:15], 0x130 ; C02202C6 00000130 s_buffer_load_dword s40, s[12:15], 0x134 ; C0220A06 00000134 v_mac_f32_e32 v33, v17, v3 ; 2C420711 v_mac_f32_e32 v34, v17, v4 ; 2C440911 s_waitcnt lgkmcnt(0) ; BF8C007F image_sample v[2:5], v[11:12], s[28:35], s[36:39] dmask:0xf ; F0800F00 0127020B s_waitcnt vmcnt(0) ; BF8C0F70 v_mul_f32_e32 v11, s9, v2 ; 0A160409 v_mad_f32 v2, -v2, s9, 1.0 ; D1C10002 23C81302 s_buffer_load_dword s41, s[12:15], 0x138 ; C0220A46 00000138 v_mad_f32 v12, -v11, v14, v14 ; D1C1000C 243A1D0B v_mad_f32 v14, -v14, v2, 1.0 ; D1C1000E 23CA050E v_mad_f32 v17, -v11, v15, v15 ; D1C10011 243E1F0B v_mad_f32 v15, -v15, v2, 1.0 ; D1C1000F 23CA050F v_mad_f32 v2, -v16, v2, 1.0 ; D1C10002 23CA0510 v_mad_f32 v16, -v11, v16, v16 ; D1C10010 2442210B v_mad_f32 v14, -v32, v11, v14 ; D1C1000E 243A1720 v_mad_f32 v2, -v34, v11, v2 ; D1C10002 240A1722 v_mac_f32_e32 v12, v11, v32 ; 2C18410B v_mac_f32_e32 v17, v11, v33 ; 2C22430B v_mad_f32 v15, -v33, v11, v15 ; D1C1000F 243E1721 v_mac_f32_e32 v16, v11, v34 ; 2C20450B v_add_f32_e32 v11, v14, v14 ; 02161D0E v_sub_f32_e64 v14, 1.0, s11 ; D102000E 000016F2 v_mad_f32 v11, -v11, v14, 1.0 ; D1C1000B 23CA1D0B v_add_f32_e32 v14, v15, v15 ; 021C1F0F v_sub_f32_e64 v15, 1.0, s40 ; D102000F 000050F2 v_mad_f32 v14, -v14, v15, 1.0 ; D1C1000E 23CA1F0E v_add_f32_e32 v2, v2, v2 ; 02040502 s_waitcnt lgkmcnt(0) ; BF8C007F v_sub_f32_e64 v15, 1.0, s41 ; D102000F 000052F2 v_mad_f32 v2, -v2, v15, 1.0 ; D1C10002 23CA1F02 v_mul_f32_e32 v15, s11, v12 ; 0A1E180B v_cmp_le_f32_e32 vcc, 0.5, v12 ; 7C8618F0 v_mac_f32_e32 v15, s11, v12 ; 2C1E180B v_cndmask_b32_e64 v32, 0, 1.0, vcc ; D1000020 01A9E480 v_mad_f32 v15, -v32, v15, v15 ; D1C1000F 243E1F20 v_mac_f32_e32 v15, v32, v11 ; 2C1E1720 v_mul_f32_e32 v11, s40, v17 ; 0A162228 v_mac_f32_e32 v11, s40, v17 ; 2C162228 s_buffer_load_dword s0, s[12:15], 0x13c ; C0220006 0000013C v_mad_f32 v11, -v32, v11, v11 ; D1C1000B 242E1720 v_mac_f32_e32 v11, v32, v14 ; 2C161D20 v_mul_f32_e32 v14, s41, v16 ; 0A1C2029 v_mac_f32_e32 v14, s41, v16 ; 2C1C2029 s_buffer_load_dword s1, s[12:15], 0x140 ; C0220046 00000140 v_mad_f32 v14, -v32, v14, v14 ; D1C1000E 243A1D20 s_buffer_load_dword s9, s[12:15], 0x144 ; C0220246 00000144 v_mac_f32_e32 v14, v32, v2 ; 2C1C0520 s_waitcnt lgkmcnt(0) ; BF8C007F v_mul_f32_e32 v2, s0, v3 ; 0A040600 s_buffer_load_dword s11, s[12:15], 0x148 ; C02202C6 00000148 v_mad_f32 v3, -v3, s0, 1.0 ; D1C10003 23C80103 v_mad_f32 v32, -v2, v12, v12 ; D1C10020 24321902 v_mad_f32 v12, -v12, v3, 1.0 ; D1C1000C 23CA070C v_mac_f32_e32 v32, v2, v15 ; 2C401F02 v_mad_f32 v12, -v15, v2, v12 ; D1C1000C 2432050F v_mad_f32 v15, -v2, v17, v17 ; D1C1000F 24462302 v_mad_f32 v17, -v17, v3, 1.0 ; D1C10011 23CA0711 v_mad_f32 v3, -v16, v3, 1.0 ; D1C10003 23CA0710 v_mad_f32 v16, -v2, v16, v16 ; D1C10010 24422102 v_mac_f32_e32 v15, v2, v11 ; 2C1E1702 v_mad_f32 v11, -v11, v2, v17 ; D1C1000B 2446050B v_mac_f32_e32 v16, v2, v14 ; 2C201D02 v_mad_f32 v2, -v14, v2, v3 ; D1C10002 240E050E v_add_f32_e32 v3, v12, v12 ; 0206190C v_sub_f32_e64 v12, 1.0, s1 ; D102000C 000002F2 v_mad_f32 v3, -v3, v12, 1.0 ; D1C10003 23CA1903 v_add_f32_e32 v11, v11, v11 ; 0216170B v_sub_f32_e64 v12, 1.0, s9 ; D102000C 000012F2 v_mad_f32 v11, -v11, v12, 1.0 ; D1C1000B 23CA190B v_add_f32_e32 v2, v2, v2 ; 02040502 s_waitcnt lgkmcnt(0) ; BF8C007F v_sub_f32_e64 v12, 1.0, s11 ; D102000C 000016F2 v_mad_f32 v2, -v2, v12, 1.0 ; D1C10002 23CA1902 v_mul_f32_e32 v12, s1, v32 ; 0A184001 v_cmp_le_f32_e32 vcc, 0.5, v32 ; 7C8640F0 v_mac_f32_e32 v12, s1, v32 ; 2C184001 v_cndmask_b32_e64 v14, 0, 1.0, vcc ; D100000E 01A9E480 v_mad_f32 v12, -v14, v12, v12 ; D1C1000C 2432190E v_mac_f32_e32 v12, v14, v3 ; 2C18070E v_mul_f32_e32 v3, s9, v15 ; 0A061E09 s_buffer_load_dword s28, s[12:15], 0x14c ; C0220706 0000014C v_mac_f32_e32 v3, s9, v15 ; 2C061E09 v_mad_f32 v17, -v14, v3, v3 ; D1C10011 240E070E v_mul_f32_e32 v3, s11, v16 ; 0A06200B s_buffer_load_dword s8, s[12:15], 0x4 ; C0220206 00000004 s_load_dwordx8 s[16:23], s[4:5], 0xc0 ; C00E0402 000000C0 s_load_dwordx4 s[24:27], s[4:5], 0xf0 ; C00A0602 000000F0 v_mac_f32_e32 v3, s11, v16 ; 2C06200B v_mac_f32_e32 v17, v14, v11 ; 2C22170E v_mad_f32 v11, -v14, v3, v3 ; D1C1000B 240E070E s_buffer_load_dword s3, s[12:15], 0x0 ; C02200C6 00000000 s_buffer_load_dword s2, s[12:15], 0x8 ; C0220086 00000008 v_mac_f32_e32 v11, v14, v2 ; 2C16050E s_waitcnt lgkmcnt(0) ; BF8C007F v_mul_f32_e32 v14, s28, v4 ; 0A1C081C v_mad_f32 v2, -v14, v32, v32 ; D1C10002 2482410E v_mad_f32 v3, -v14, v15, v15 ; D1C10003 243E1F0E v_mad_f32 v4, -v14, v16, v16 ; D1C10004 2442210E v_mac_f32_e32 v4, v14, v11 ; 2C08170E v_mac_f32_e32 v2, v14, v12 ; 2C04190E v_mac_f32_e32 v3, v14, v17 ; 2C06230E v_add_f32_e64 v37, v6, 0 clamp ; D1018025 00010106 v_mov_b32_e32 v9, s8 ; 7E120208 v_mov_b32_e32 v10, 1.0 ; 7E1402F2 v_mov_b32_e32 v35, 0x3c23d70a ; 7E4602FF 3C23D70A v_max3_f32 v12, v2, v3, v4 ; D1D3000C 04120702 v_mov_b32_e32 v6, 1.0 ; 7E0C02F2 image_sample v[14:17], v[18:19], s[16:23], s[24:27] dmask:0xf ; F0800F00 00C40E12 v_mov_b32_e32 v11, 1.0 ; 7E1602F2 v_cmp_lt_f32_e32 vcc, v35, v12 ; 7C821923 s_and_saveexec_b64 s[0:1], vcc ; BE80206A s_xor_b64 s[0:1], exec, s[0:1] ; 8880007E s_waitcnt vmcnt(0) ; BF8C0F70 v_rcp_f32_e32 v6, v12 ; 7E0C450C v_mul_f32_e32 v10, v6, v2 ; 0A140506 v_mul_f32_e32 v11, v6, v3 ; 0A160706 v_mul_f32_e32 v12, v6, v4 ; 0A180906 v_add_f32_e64 v6, v11, 0 clamp ; D1018006 0001010B v_add_f32_e64 v10, v10, 0 clamp ; D101800A 0001010A v_add_f32_e64 v11, v12, 0 clamp ; D101800B 0001010C s_or_b64 exec, exec, s[0:1] ; 87FE007E v_add_f32_e32 v12, v29, v29 ; 02183B1D v_mad_f32 v18, 2.0, v29, -1.0 ; D1C10012 03CE3AF4 v_mad_f32 v29, 2.0, v30, -1.0 ; D1C1001D 03CE3CF4 v_mad_f32 v18, v12, v18, -v18 ; D1C10012 844A250C v_add_f32_e32 v19, v30, v30 ; 02263D1E v_add_f32_e32 v30, v31, v31 ; 023C3F1F v_mad_f32 v31, 2.0, v31, -1.0 ; D1C1001F 03CE3EF4 v_mac_f32_e32 v18, v29, v29 ; 2C243B1D v_mac_f32_e32 v18, v31, v31 ; 2C243F1F v_rsq_f32_e32 v18, v18 ; 7E244912 s_load_dwordx8 s[16:23], s[4:5], 0x40 ; C00E0402 00000040 s_load_dwordx4 s[24:27], s[4:5], 0x70 ; C00A0602 00000070 v_mad_f32 v32, v19, v18, -v18 ; D1C10020 844A2513 v_sub_f32_e32 v19, s3, v0 ; 04260003 v_mad_f32 v33, v12, v18, -v18 ; D1C10021 844A250C v_sub_f32_e32 v12, s8, v1 ; 04180208 v_mul_f32_e32 v29, v19, v19 ; 0A3A2713 v_mad_f32 v31, v30, v18, -v18 ; D1C1001F 844A251E v_mac_f32_e32 v29, v12, v12 ; 2C3A190C v_sub_f32_e32 v18, s2, v8 ; 04241002 v_mac_f32_e32 v29, v18, v18 ; 2C3A2512 v_rsq_f32_e32 v29, v29 ; 7E3A491D v_mul_f32_e32 v41, v33, v20 ; 0A522921 v_mac_f32_e32 v41, v32, v21 ; 2C522B20 v_mul_f32_e32 v42, v33, v26 ; 0A543521 v_mul_f32_e32 v36, v29, v19 ; 0A48271D v_mul_f32_e32 v39, v29, v12 ; 0A4E191D v_mul_f32_e32 v40, v29, v18 ; 0A50251D v_mul_f32_e32 v29, v36, v20 ; 0A3A2924 v_mac_f32_e32 v29, v39, v23 ; 2C3A2F27 v_mul_f32_e32 v30, v36, v21 ; 0A3C2B24 v_mac_f32_e32 v30, v39, v24 ; 2C3C3127 v_mul_f32_e32 v34, v36, v22 ; 0A442D24 v_mac_f32_e32 v29, v40, v26 ; 2C3A3528 v_mac_f32_e32 v34, v39, v25 ; 2C443327 v_mac_f32_e32 v30, v40, v27 ; 2C3C3728 v_mul_f32_e32 v35, v29, v29 ; 0A463B1D v_mac_f32_e32 v34, v40, v28 ; 2C443928 v_mac_f32_e32 v35, v30, v30 ; 2C463D1E v_mac_f32_e32 v35, v34, v34 ; 2C464522 v_rsq_f32_e32 v38, v35 ; 7E4C4923 v_mac_f32_e32 v41, v31, v22 ; 2C522D1F v_mac_f32_e32 v42, v32, v27 ; 2C543720 v_mac_f32_e32 v42, v31, v28 ; 2C54391F v_mul_f32_e32 v43, v38, v29 ; 0A563B26 v_mul_f32_e32 v35, v38, v30 ; 0A463D26 v_mul_f32_e32 v20, v43, v20 ; 0A28292B v_mul_f32_e32 v29, v33, v23 ; 0A3A2F21 v_mac_f32_e32 v20, v35, v21 ; 2C282B23 v_mul_f32_e32 v21, v43, v23 ; 0A2A2F2B v_mul_f32_e32 v44, v38, v34 ; 0A584526 v_mac_f32_e32 v20, v44, v22 ; 2C282D2C v_mac_f32_e32 v29, v32, v24 ; 2C3A3120 v_mac_f32_e32 v21, v35, v24 ; 2C2A3123 v_mul_f32_e32 v22, v43, v26 ; 0A2C352B v_mac_f32_e32 v22, v35, v27 ; 2C2C3723 v_mac_f32_e32 v29, v31, v25 ; 2C3A331F v_mac_f32_e32 v21, v44, v25 ; 2C2A332C v_mul_f32_e32 v23, v41, v20 ; 0A2E2929 v_mac_f32_e32 v22, v44, v28 ; 2C2C392C v_mad_f32 v23, -v21, v29, -v23 ; D1C10017 A45E3B15 v_mad_f32 v23, -v22, v42, v23 ; D1C10017 245E5516 v_mul_f32_e32 v24, v41, v23 ; 0A302F29 v_mul_f32_e32 v25, v29, v23 ; 0A322F1D v_mul_f32_e32 v26, v42, v23 ; 0A342F2A v_mac_f32_e32 v24, v41, v23 ; 2C302F29 v_mac_f32_e32 v25, v29, v23 ; 2C322F1D v_mac_f32_e32 v26, v42, v23 ; 2C342F2A v_sub_f32_e64 v20, -v24, v20 ; D1020014 20022918 v_sub_f32_e64 v21, -v25, v21 ; D1020015 20022B19 v_sub_f32_e64 v22, -v26, v22 ; D1020016 20022D1A v_cubema_f32 v23, v20, v21, v22 ; D1C70017 045A2B14 v_rcp_f32_e64 v23, |v23| ; D1620117 00000117 v_cubetc_f32 v25, v20, v21, v22 ; D1C60019 045A2B14 v_mov_b32_e32 v24, 0x3fc00000 ; 7E3002FF 3FC00000 v_cubesc_f32 v27, v20, v21, v22 ; D1C5001B 045A2B14 v_cubeid_f32 v26, v20, v21, v22 ; D1C4001A 045A2B14 v_mov_b32_e32 v20, 0x40c00000 ; 7E2802FF 40C00000 v_mad_f32 v25, v23, v25, v24 ; D1C10019 04623317 v_mac_f32_e32 v24, v23, v27 ; 2C303717 v_mad_f32 v23, -v15, v20, v20 ; D1C10017 2452290F v_sqrt_f32_e32 v20, v2 ; 7E284F02 v_bfrev_b32_e32 v27, -2 ; 7E3658C2 v_and_b32_e32 v22, v27, v20 ; 262C291B v_sqrt_f32_e32 v20, v3 ; 7E284F03 v_and_b32_e32 v21, v27, v20 ; 262A291B v_sqrt_f32_e32 v20, v4 ; 7E284F04 v_and_b32_e32 v20, v27, v20 ; 2628291B v_mul_f32_e32 v27, v41, v41 ; 0A365329 v_mac_f32_e32 v27, v29, v29 ; 2C363B1D v_mac_f32_e32 v27, v42, v42 ; 2C36552A v_rsq_f32_e32 v45, v27 ; 7E5A491B s_waitcnt lgkmcnt(0) ; BF8C007F image_sample_b v[23:26], v[23:26], s[16:23], s[24:27] dmask:0xf ; F0940F00 00C41717 s_waitcnt vmcnt(0) ; BF8C0F70 v_mul_f32_e32 v38, v45, v29 ; 0A4C3B2D v_cmp_nlt_f32_e32 vcc, 0, v38 ; 7C9C4C80 s_and_saveexec_b64 s[0:1], vcc ; BE80206A s_xor_b64 s[0:1], exec, s[0:1] ; 8880007E s_cbranch_execz BB0_4 ; BF880000 v_add_f32_e64 v26, -v38, 0 clamp ; D101801A 20010126 v_mul_f32_e32 v26, 0x3fa00000, v26 ; 0A3434FF 3FA00000 s_buffer_load_dword s9, s[12:15], 0x50 ; C0220246 00000050 v_add_f32_e64 v26, v26, 0 clamp ; D101801A 0001011A v_madak_f32_e32 v27, -2.0, v26, 0x40400000 ; 303634F5 40400000 v_mul_f32_e32 v27, v27, v26 ; 0A36351B v_mul_f32_e32 v29, v27, v26 ; 0A3A351B s_buffer_load_dword s11, s[12:15], 0x54 ; C02202C6 00000054 s_buffer_load_dword s16, s[12:15], 0x58 ; C0220406 00000058 s_waitcnt lgkmcnt(0) ; BF8C007F v_mad_f32 v26, -v29, s9, s9 ; D1C1001A 2024131D s_buffer_load_dword s17, s[12:15], 0x60 ; C0220446 00000060 s_buffer_load_dword s9, s[12:15], 0x68 ; C0220246 00000068 s_buffer_load_dword s18, s[12:15], 0x64 ; C0220486 00000064 v_mad_f32 v27, -v29, s11, s11 ; D1C1001B 202C171D v_mov_b32_e32 v30, s16 ; 7E3C0210 s_waitcnt lgkmcnt(0) ; BF8C007F v_mac_f32_e32 v26, s17, v29 ; 2C343A11 v_mul_f32_e32 v28, s9, v29 ; 0A383A09 v_mac_f32_e32 v27, s18, v29 ; 2C363A12 s_or_saveexec_b64 s[0:1], s[0:1] ; BE802100 s_buffer_load_dword s17, s[12:15], 0x30 ; C0220446 00000030 s_buffer_load_dword s18, s[12:15], 0x34 ; C0220486 00000034 s_buffer_load_dword s19, s[12:15], 0x38 ; C02204C6 00000038 s_buffer_load_dword s20, s[12:15], 0x90 ; C0220506 00000090 s_buffer_load_dword s11, s[12:15], 0x94 ; C02202C6 00000094 s_buffer_load_dword s16, s[12:15], 0x98 ; C0220406 00000098 s_xor_b64 exec, exec, s[0:1] ; 88FE007E s_waitcnt lgkmcnt(0) ; BF8C007F s_cbranch_execz BB0_6 ; BF880000 v_add_f32_e64 v26, v38, 0 clamp ; D101801A 00010126 v_mul_f32_e32 v26, 0x3fa00000, v26 ; 0A3434FF 3FA00000 s_buffer_load_dword s23, s[12:15], 0x50 ; C02205C6 00000050 v_add_f32_e64 v26, v26, 0 clamp ; D101801A 0001011A s_buffer_load_dword s9, s[12:15], 0x40 ; C0220246 00000040 v_madak_f32_e32 v27, -2.0, v26, 0x40400000 ; 303634F5 40400000 v_mul_f32_e32 v27, v27, v26 ; 0A36351B v_mul_f32_e32 v29, v27, v26 ; 0A3A351B s_waitcnt lgkmcnt(0) ; BF8C007F v_mad_f32 v26, -v29, s23, s23 ; D1C1001A 205C2F1D s_buffer_load_dword s24, s[12:15], 0x54 ; C0220606 00000054 s_buffer_load_dword s22, s[12:15], 0x48 ; C0220586 00000048 v_mac_f32_e32 v26, s9, v29 ; 2C343A09 s_buffer_load_dword s9, s[12:15], 0x58 ; C0220246 00000058 s_buffer_load_dword s21, s[12:15], 0x44 ; C0220546 00000044 s_waitcnt lgkmcnt(0) ; BF8C007F v_mad_f32 v27, -v29, s24, s24 ; D1C1001B 2060311D v_mul_f32_e32 v28, s22, v29 ; 0A383A16 v_mov_b32_e32 v30, s9 ; 7E3C0209 v_mac_f32_e32 v27, s21, v29 ; 2C363A15 s_or_b64 exec, exec, s[0:1] ; 87FE007E v_mul_f32_e32 v15, v15, v15 ; 0A1E1F0F v_mul_f32_e32 v46, 0x41800000, v15 ; 0A5C1EFF 41800000 v_mul_f32_e32 v15, v33, v43 ; 0A1E5721 v_mac_f32_e32 v15, v32, v35 ; 2C1E4720 v_mac_f32_e32 v15, v31, v44 ; 2C1E591F v_mov_b32_e32 v47, 0x3727c5ac ; 7E5E02FF 3727C5AC v_sub_f32_e32 v15, 1.0, v15 ; 041E1EF2 v_max_f32_e32 v15, v47, v15 ; 161E1F2F s_buffer_load_dword s21, s[12:15], 0x170 ; C0220546 00000170 v_log_f32_e32 v15, v15 ; 7E1E430F s_buffer_load_dword s0, s[12:15], 0x164 ; C0220006 00000164 s_buffer_load_dword s24, s[12:15], 0x1e0 ; C0220606 000001E0 s_buffer_load_dword s25, s[12:15], 0x160 ; C0220646 00000160 s_buffer_load_dword s1, s[12:15], 0x168 ; C0220046 00000168 s_waitcnt lgkmcnt(0) ; BF8C007F v_mul_legacy_f32_e32 v15, s21, v15 ; 081E1E15 s_buffer_load_dword s9, s[12:15], 0x70 ; C0220246 00000070 s_buffer_load_dword s21, s[12:15], 0x150 ; C0220546 00000150 s_buffer_load_dword s22, s[12:15], 0x154 ; C0220586 00000154 s_buffer_load_dword s23, s[12:15], 0x158 ; C02205C6 00000158 v_sub_f32_e32 v31, 1.0, v5 ; 043E0AF2 v_mac_f32_e32 v37, v47, v34 ; 2C4A452F v_exp_f32_e32 v34, v15 ; 7E44410F v_cmp_gt_f32_e32 vcc, s24, v7 ; 7C880E18 v_mov_b32_e32 v33, s25 ; 7E420219 v_mov_b32_e32 v32, s0 ; 7E400200 v_mov_b32_e32 v15, s1 ; 7E1E0201 v_add_f32_e64 v31, v31, 0 clamp ; D101801F 0001011F v_mov_b32_e32 v35, 0 ; 7E460280 v_cndmask_b32_e64 v43, 0, -1.0, vcc ; D100002B 01A9E680 s_waitcnt lgkmcnt(0) ; BF8C007F v_cmpx_le_f32_e32 vcc, 0, v43 ; 7CA65680 s_cbranch_execnz BB0_7 ; BF890000 exp 0, 9, 0, 1, 1, v0, v0, v0, v0 ; C4001890 00000000 s_endpgm ; BF810000 s_buffer_load_dword s0, s[12:15], 0x10 ; C0220006 00000010 s_buffer_load_dword s1, s[12:15], 0x14 ; C0220046 00000014 s_buffer_load_dword s24, s[12:15], 0x18 ; C0220606 00000018 v_mul_f32_e32 v43, v45, v41 ; 0A56532D v_mul_f32_e32 v41, v45, v42 ; 0A52552D s_waitcnt lgkmcnt(0) ; BF8C007F v_mul_f32_e64 v42, s0, s0 ; D105002A 00000000 v_mac_f32_e64 v42, s1, s1 ; D116002A 00000201 v_mul_f32_e32 v44, v36, v36 ; 0A584924 v_mac_f32_e64 v42, s24, s24 ; D116002A 00003018 v_mac_f32_e32 v44, v39, v39 ; 2C584F27 v_rsq_f32_e32 v42, v42 ; 7E54492A v_mac_f32_e32 v44, v40, v40 ; 2C585128 v_rsq_f32_e32 v49, v44 ; 7E62492C v_cmp_lt_f32_e32 vcc, 0, v37 ; 7C824A80 v_mul_f32_e32 v48, s0, v42 ; 0A605400 v_mul_f32_e32 v47, s1, v42 ; 0A5E5401 v_mul_f32_e32 v45, s24, v42 ; 0A5A5418 v_mul_f32_e32 v42, v49, v39 ; 0A544F31 v_mul_f32_e32 v44, v49, v36 ; 0A584931 v_mul_f32_e32 v39, v49, v40 ; 0A4E5131 v_mul_f32_e32 v49, v48, v43 ; 0A625730 v_mad_f32 v40, v47, v38, v49 ; D1C10028 04C64D2F v_mac_f32_e32 v40, v45, v41 ; 2C50532D v_cmp_lt_f32_e64 s[0:1], 0, v46 ; D0410000 00025C80 v_mul_f32_e32 v50, v47, v38 ; 0A644D2F v_mul_f32_e32 v51, v45, v41 ; 0A66532D v_max_f32_e32 v36, 0, v40 ; 16485080 s_and_b64 s[24:25], vcc, s[0:1] ; 8698006A s_and_saveexec_b64 s[0:1], s[24:25] ; BE802018 s_xor_b64 s[0:1], exec, s[0:1] ; 8880007E s_cbranch_execz BB0_9 ; BF880000 v_sub_f32_e64 v35, -v49, v50 ; D1020023 20026531 v_subrev_f32_e32 v35, v51, v35 ; 06464733 v_mul_f32_e32 v49, v43, v35 ; 0A62472B v_mul_f32_e32 v50, v38, v35 ; 0A644726 v_mul_f32_e32 v51, v41, v35 ; 0A664729 v_mac_f32_e32 v49, v43, v35 ; 2C62472B v_mac_f32_e32 v50, v38, v35 ; 2C644726 v_mac_f32_e32 v51, v41, v35 ; 2C664729 v_sub_f32_e64 v35, -v49, v48 ; D1020023 20026131 v_sub_f32_e64 v47, -v50, v47 ; D102002F 20025F32 v_mul_f32_e32 v35, v35, v44 ; 0A465923 v_sub_f32_e64 v45, -v51, v45 ; D102002D 20025B33 v_mac_f32_e32 v35, v47, v42 ; 2C46552F v_mac_f32_e32 v35, v45, v39 ; 2C464F2D v_add_f32_e32 v45, v36, v36 ; 025A4924 v_sqrt_f32_e32 v45, v45 ; 7E5A4F2D v_max_f32_e32 v35, 0x3727c5ac, v35 ; 164646FF 3727C5AC v_add_f32_e64 v45, v45, 0 clamp ; D101802D 0001012D v_mul_f32_e32 v35, v45, v35 ; 0A46472D v_log_f32_e32 v35, v35 ; 7E464323 v_add_f32_e32 v45, 0x3c23d70a, v46 ; 025A5CFF 3C23D70A v_mul_f32_e32 v45, 0x42800000, v45 ; 0A5A5AFF 42800000 v_max_f32_e32 v45, 0x38d1b717, v45 ; 165A5AFF 38D1B717 v_mul_legacy_f32_e32 v35, v45, v35 ; 0846472D v_exp_f32_e32 v35, v35 ; 7E464123 v_mul_f32_e32 v35, v37, v35 ; 0A464725 s_or_b64 exec, exec, s[0:1] ; 87FE007E v_sub_f32_e32 v37, 0x3eaa7efa, v40 ; 044A50FF 3EAA7EFA v_mul_f32_e32 v40, v44, v43 ; 0A50572C v_mac_f32_e32 v40, v42, v38 ; 2C504D2A v_mac_f32_e32 v40, v39, v41 ; 2C505327 v_add_f32_e64 v38, v40, 0 clamp ; D1018026 00010128 v_subrev_f32_e32 v40, s3, v0 ; 06500003 v_subrev_f32_e32 v41, s8, v1 ; 06520208 v_mul_f32_e32 v43, v40, v40 ; 0A565128 v_subrev_f32_e32 v42, s2, v8 ; 06541002 v_mac_f32_e32 v43, v41, v41 ; 2C565329 v_mac_f32_e32 v43, v42, v42 ; 2C56552A s_buffer_load_dword s25, s[12:15], 0x108 ; C0220646 00000108 v_rsq_f32_e32 v44, v43 ; 7E58492B v_sub_f32_e32 v38, 1.0, v38 ; 044C4CF2 s_buffer_load_dword s28, s[12:15], 0x10c ; C0220706 0000010C v_add_f32_e64 v38, v38, 0 clamp ; D1018026 00010126 v_log_f32_e32 v38, v38 ; 7E4C4326 s_buffer_load_dword s0, s[12:15], 0x110 ; C0220006 00000110 v_mad_f32 v45, v46, 0.5, 2.0 ; D1C1002D 03D1E12E v_mul_f32_e32 v50, v44, v40 ; 0A64512C s_waitcnt lgkmcnt(0) ; BF8C007F v_rcp_f32_e32 v40, s25 ; 7E504419 v_max_f32_e32 v39, 0x38d1b717, v45 ; 164E5AFF 38D1B717 v_mul_f32_e32 v45, v44, v41 ; 0A5A532C v_mov_b32_e32 v41, s25 ; 7E520219 v_sqrt_f32_e32 v49, v43 ; 7E624F2B v_sub_f32_e32 v41, s28, v41 ; 0452521C s_buffer_load_dword s24, s[12:15], 0x104 ; C0220606 00000104 v_mul_legacy_f32_e32 v38, v39, v38 ; 084C4D27 v_mov_b32_e32 v39, 0xbfb8aa3b ; 7E4E02FF BFB8AA3B v_subrev_f32_e32 v41, v41, v49 ; 06526329 v_mul_f32_e32 v40, v40, v41 ; 0A505328 v_mul_f32_e32 v39, s0, v39 ; 0A4E4E00 v_exp_f32_e32 v39, v39 ; 7E4E4127 v_add_f32_e64 v40, v40, 0 clamp ; D1018028 00010128 s_buffer_load_dword s1, s[12:15], 0x100 ; C0220046 00000100 v_sub_f32_e32 v39, 1.0, v39 ; 044E4EF2 v_mul_f32_e64 v40, v40, -s0 ; D1050028 40000128 v_mov_b32_e32 v41, 0x3fb8aa3b ; 7E5202FF 3FB8AA3B v_mul_f32_e32 v51, v44, v42 ; 0A66552C v_rcp_f32_e32 v42, v39 ; 7E544527 v_mul_f32_e32 v39, v41, v40 ; 0A4E5129 s_waitcnt lgkmcnt(0) ; BF8C007F v_rcp_f32_e32 v40, s24 ; 7E504418 v_subrev_f32_e32 v43, s1, v49 ; 06566201 v_mul_f32_e32 v46, v50, v50 ; 0A5C6532 v_mac_f32_e32 v46, v45, v45 ; 2C5C5B2D v_mul_f32_e32 v40, v40, v43 ; 0A505728 v_add_f32_e64 v40, v40, 0 clamp ; D1018028 00010128 v_mul_f32_e64 v40, v40, -s0 ; D1050028 40000128 v_mul_f32_e32 v40, v41, v40 ; 0A505129 v_exp_f32_e32 v40, v40 ; 7E504128 v_mad_f32 v40, -v40, v42, v42 ; D1C10028 24AA5528 v_add_f32_e64 v55, v40, 0 clamp ; D1018037 00010128 v_cubema_f32 v40, v50, v45, v51 ; D1C70028 04CE5B32 v_rcp_f32_e64 v44, |v40| ; D162012C 00000128 v_mac_f32_e32 v46, v51, v51 ; 2C5C6733 s_load_dwordx8 s[32:39], s[4:5], 0x80 ; C00E0802 00000080 s_load_dwordx4 s[24:27], s[4:5], 0xb0 ; C00A0602 000000B0 v_rsq_f32_e32 v52, v46 ; 7E68492E s_buffer_load_dword s29, s[12:15], 0xcc ; C0220746 000000CC v_exp_f32_e32 v39, v39 ; 7E4E4127 v_cubetc_f32 v41, v50, v45, v51 ; D1C60029 04CE5B32 v_mov_b32_e32 v40, 0x3fc00000 ; 7E5002FF 3FC00000 v_cubesc_f32 v43, v50, v45, v51 ; D1C5002B 04CE5B32 v_mad_f32 v39, -v39, v42, v42 ; D1C10027 24AA5527 v_mad_f32 v41, v44, v41, v40 ; D1C10029 04A2532C v_mac_f32_e32 v40, v44, v43 ; 2C50572C v_cubeid_f32 v42, v50, v45, v51 ; D1C4002A 04CE5B32 v_mul_f32_e32 v53, v52, v45 ; 0A6A5B34 v_add_f32_e64 v37, v37, 0 clamp ; D1018025 00010125 v_exp_f32_e32 v38, v38 ; 7E4C4126 v_add_f32_e64 v39, v39, 0 clamp ; D1018027 00010127 s_waitcnt lgkmcnt(0) ; BF8C007F image_sample v[40:43], v[40:43], s[32:39], s[24:27] dmask:0xf ; F0800F00 00C82828 v_cmp_nlt_f32_e32 vcc, 0, v53 ; 7C9C6A80 s_and_saveexec_b64 s[30:31], vcc ; BE9E206A s_xor_b64 s[30:31], exec, s[30:31] ; 889E1E7E s_waitcnt vmcnt(0) ; BF8C0F70 s_cbranch_execz BB0_11 ; BF880000 v_add_f32_e64 v44, -v53, 0 clamp ; D101802C 20010135 v_mul_f32_e32 v44, 0x3fa00000, v44 ; 0A5858FF 3FA00000 s_buffer_load_dword s0, s[12:15], 0x50 ; C0220006 00000050 v_add_f32_e64 v44, v44, 0 clamp ; D101802C 0001012C v_madak_f32_e32 v45, -2.0, v44, 0x40400000 ; 305A58F5 40400000 v_mul_f32_e32 v45, v45, v44 ; 0A5A592D v_mul_f32_e32 v44, v45, v44 ; 0A58592D s_buffer_load_dword s1, s[12:15], 0x54 ; C0220046 00000054 s_buffer_load_dword s24, s[12:15], 0x58 ; C0220606 00000058 s_waitcnt lgkmcnt(0) ; BF8C007F v_mad_f32 v45, -v44, s0, s0 ; D1C1002D 2000012C s_buffer_load_dword s25, s[12:15], 0x60 ; C0220646 00000060 s_buffer_load_dword s0, s[12:15], 0x68 ; C0220006 00000068 s_buffer_load_dword s26, s[12:15], 0x64 ; C0220686 00000064 v_mad_f32 v46, -v44, s1, s1 ; D1C1002E 2004032C v_mov_b32_e32 v48, s24 ; 7E600218 s_waitcnt lgkmcnt(0) ; BF8C007F v_mac_f32_e32 v45, s25, v44 ; 2C5A5819 v_mul_f32_e32 v47, s0, v44 ; 0A5E5800 v_mac_f32_e32 v46, s26, v44 ; 2C5C581A s_or_saveexec_b64 s[30:31], s[30:31] ; BE9E211E s_buffer_load_dword s27, s[12:15], 0x20 ; C02206C6 00000020 s_buffer_load_dword s26, s[12:15], 0x24 ; C0220686 00000024 s_buffer_load_dword s25, s[12:15], 0x28 ; C0220646 00000028 s_buffer_load_dword s0, s[12:15], 0xc0 ; C0220006 000000C0 s_buffer_load_dword s1, s[12:15], 0xc4 ; C0220046 000000C4 s_buffer_load_dword s24, s[12:15], 0xc8 ; C0220606 000000C8 s_xor_b64 exec, exec, s[30:31] ; 88FE1E7E s_waitcnt lgkmcnt(0) ; BF8C007F s_cbranch_execz BB0_13 ; BF880000 v_add_f32_e64 v44, v53, 0 clamp ; D101802C 00010135 v_mul_f32_e32 v44, 0x3fa00000, v44 ; 0A5858FF 3FA00000 s_buffer_load_dword s35, s[12:15], 0x50 ; C02208C6 00000050 v_add_f32_e64 v44, v44, 0 clamp ; D101802C 0001012C s_buffer_load_dword s32, s[12:15], 0x40 ; C0220806 00000040 v_madak_f32_e32 v45, -2.0, v44, 0x40400000 ; 305A58F5 40400000 v_mul_f32_e32 v45, v45, v44 ; 0A5A592D v_mul_f32_e32 v44, v45, v44 ; 0A58592D s_waitcnt lgkmcnt(0) ; BF8C007F v_mad_f32 v45, -v44, s35, s35 ; D1C1002D 208C472C s_buffer_load_dword s36, s[12:15], 0x54 ; C0220906 00000054 s_buffer_load_dword s34, s[12:15], 0x48 ; C0220886 00000048 v_mac_f32_e32 v45, s32, v44 ; 2C5A5820 s_buffer_load_dword s32, s[12:15], 0x58 ; C0220806 00000058 s_buffer_load_dword s33, s[12:15], 0x44 ; C0220846 00000044 s_waitcnt lgkmcnt(0) ; BF8C007F v_mad_f32 v46, -v44, s36, s36 ; D1C1002E 2090492C v_mul_f32_e32 v47, s34, v44 ; 0A5E5822 v_mov_b32_e32 v48, s32 ; 7E600220 v_mac_f32_e32 v46, s33, v44 ; 2C5C5821 s_or_b64 exec, exec, s[30:31] ; 87FE1E7E v_mul_f32_e32 v50, v52, v50 ; 0A646534 v_mul_f32_e32 v51, v52, v51 ; 0A666734 v_mul_f32_e32 v50, s28, v50 ; 0A64641C v_mul_f32_e32 v52, s28, v53 ; 0A686A1C v_mul_f32_e32 v51, s28, v51 ; 0A66661C v_mul_f32_e32 v50, 4.0, v50 ; 0A6464F6 v_mul_f32_e32 v51, 4.0, v51 ; 0A6666F6 v_mad_f32 v52, v52, 4.0, s8 ; D1C10034 0021ED34 v_cubema_f32 v56, v50, v52, v51 ; D1C70038 04CE6932 v_mul_f32_e32 v43, s29, v43 ; 0A56561D s_load_dwordx8 s[28:35], s[4:5], 0x0 ; C00E0702 00000000 v_rcp_f32_e64 v56, |v56| ; D1620138 00000138 s_load_dwordx4 s[36:39], s[4:5], 0x30 ; C00A0902 00000030 v_cubetc_f32 v53, v50, v52, v51 ; D1C60035 04CE6932 v_cubesc_f32 v54, v50, v52, v51 ; D1C50036 04CE6932 v_cubeid_f32 v52, v50, v52, v51 ; D1C40034 04CE6932 v_mov_b32_e32 v50, 0x3fc00000 ; 7E6402FF 3FC00000 v_mad_f32 v51, v56, v53, v50 ; D1C10033 04CA6B38 v_mac_f32_e32 v50, v56, v54 ; 2C646D38 s_and_b64 exec, exec, s[6:7] ; 86FE067E s_waitcnt lgkmcnt(0) ; BF8C007F image_sample v[51:54], v[50:53], s[28:35], s[36:39] dmask:0xf ; F0800F00 01273332 s_buffer_load_dword s32, s[12:15], 0x118 ; C0220806 00000118 s_buffer_load_dword s29, s[12:15], 0xe4 ; C0220746 000000E4 s_buffer_load_dword s4, s[12:15], 0x80 ; C0220106 00000080 s_buffer_load_dword s5, s[12:15], 0x84 ; C0220146 00000084 s_buffer_load_dword s6, s[12:15], 0x88 ; C0220186 00000088 s_waitcnt lgkmcnt(0) ; BF8C007F v_mul_f32_e32 v50, s32, v49 ; 0A646220 v_mul_f32_e32 v50, 0x3fd9999a, v50 ; 0A6464FF 3FD9999A v_mul_f32_e32 v50, 0xbfb8aa3b, v50 ; 0A6464FF BFB8AA3B v_exp_f32_e32 v50, v50 ; 7E644132 v_sub_f32_e32 v50, 0x3f99999a, v50 ; 046464FF 3F99999A s_buffer_load_dword s28, s[12:15], 0xf0 ; C0220706 000000F0 s_buffer_load_dword s8, s[12:15], 0xf4 ; C0220206 000000F4 s_buffer_load_dword s7, s[12:15], 0xf8 ; C02201C6 000000F8 v_mul_f32_e32 v43, v50, v43 ; 0A565732 v_mul_f32_e32 v43, 0x3fa00000, v43 ; 0A5656FF 3FA00000 v_add_f32_e64 v43, v43, 0 clamp ; D101802B 0001012B v_cmp_ngt_f32_e64 s[30:31], s29, 0 ; D04B001E 0001001D v_max_f32_e32 v50, v43, v55 ; 16646F2B s_and_b64 vcc, exec, s[30:31] ; 86EA1E7E s_waitcnt vmcnt(0) lgkmcnt(0) ; BF8C0070 s_cbranch_vccnz BB0_15 ; BF870000 s_buffer_load_dword s30, s[12:15], 0xe0 ; C0220786 000000E0 v_mad_f32 v9, 0, s3, v9 ; D1C10009 04240680 v_mac_f32_e64 v9, s2, 0 ; D1160009 00010002 v_mac_f32_e32 v1, 0, v0 ; 2C020080 v_mac_f32_e32 v12, 0, v19 ; 2C182680 s_waitcnt lgkmcnt(0) ; BF8C007F v_add_f32_e32 v0, s30, v9 ; 0200121E v_mac_f32_e32 v12, 0, v18 ; 2C182480 v_cmp_ge_f32_e32 vcc, 0, v0 ; 7C8C0080 v_mac_f32_e32 v1, 0, v8 ; 2C021080 v_mac_f32_e64 v12, s30, 0 ; D116000C 0001001E v_cndmask_b32_e64 v9, 0, 1.0, vcc ; D1000009 01A9E480 s_buffer_load_dword s12, s[12:15], 0xe8 ; C0220306 000000E8 v_add_f32_e32 v1, s30, v1 ; 0202021E v_mul_f32_e32 v8, -2.0, v9 ; 0A1012F5 v_rcp_f32_e64 v12, |v12| ; D162010C 0000010C v_mad_f32 v8, v1, v8, v1 ; D1C10008 04061101 v_min_f32_e32 v8, 0, v8 ; 14101080 v_add_f32_e32 v0, v0, v1 ; 02000300 v_mul_f32_e32 v1, v8, v8 ; 0A021108 v_mul_f32_e32 v1, v12, v1 ; 0A02030C s_waitcnt lgkmcnt(0) ; BF8C007F v_mul_f32_e32 v18, s12, v49 ; 0A24620C v_mad_f32 v0, v9, v0, -v1 ; D1C10000 84060109 v_mul_f32_e32 v0, v0, v18 ; 0A002500 v_mul_f32_e32 v0, s29, v0 ; 0A00001D v_mul_f32_e32 v0, 0x3fb8aa3b, v0 ; 0A0000FF 3FB8AA3B v_exp_f32_e32 v0, v0 ; 7E004100 v_add_f32_e64 v0, v0, 0 clamp ; D1018000 00010100 v_sub_f32_e32 v0, 1.0, v0 ; 040000F2 v_max_f32_e32 v50, v0, v50 ; 16646500 v_mov_b32_e32 v19, 0xff800000 ; 7E2602FF FF800000 v_mul_f32_e32 v9, s20, v23 ; 0A122E14 v_cmp_eq_f32_e32 vcc, v2, v19 ; 7C842702 v_mov_b32_e32 v23, 0x7f800000 ; 7E2E02FF 7F800000 v_mad_f32 v0, -v14, s17, s17 ; D1C10000 2044230E v_cndmask_b32_e32 v22, v22, v23, vcc ; 002C2F16 v_cmp_eq_f32_e32 vcc, v3, v19 ; 7C842703 v_mad_f32 v10, v14, v10, v0 ; D1C1000A 0402150E v_mac_f32_e32 v0, v14, v22 ; 2C002D0E v_mad_f32 v1, -v14, s18, s18 ; D1C10001 2048250E v_sub_f32_e32 v12, 1.0, v29 ; 04183AF2 v_cndmask_b32_e32 v21, v21, v23, vcc ; 002A2F15 v_mad_f32 v6, v14, v6, v1 ; D1C10006 04060D0E v_cmp_eq_f32_e32 vcc, v4, v19 ; 7C842704 v_mac_f32_e32 v28, v12, v30 ; 2C383D0C v_mul_f32_e32 v0, v0, v9 ; 0A001300 v_add_f32_e32 v9, v26, v26 ; 0212351A v_mul_f32_e32 v12, s11, v24 ; 0A18300B v_mac_f32_e32 v1, v14, v21 ; 2C022B0E v_mul_f32_e32 v9, s9, v9 ; 0A121209 v_mad_f32 v8, -v14, s19, s19 ; D1C10008 204C270E v_mul_f32_e32 v1, v1, v12 ; 0A021901 v_add_f32_e32 v12, v27, v27 ; 0218371B v_cndmask_b32_e32 v19, v20, v23, vcc ; 00262F14 v_mad_f32 v11, v14, v11, v8 ; D1C1000B 0422170E v_mul_f32_e32 v9, v2, v9 ; 0A121302 v_mul_f32_e32 v12, s9, v12 ; 0A181809 v_mac_f32_e32 v8, v14, v19 ; 2C10270E v_add_f32_e32 v14, v28, v28 ; 021C391C v_mul_f32_e32 v14, s9, v14 ; 0A1C1C09 v_mad_f32 v9, -v16, v9, v9 ; D1C10009 24261310 v_mul_f32_e32 v12, v3, v12 ; 0A181903 v_mul_f32_e32 v18, s16, v25 ; 0A243210 v_mul_f32_e32 v14, v4, v14 ; 0A1C1D04 v_mac_f32_e32 v9, v16, v0 ; 2C120110 v_mad_f32 v0, -v16, v12, v12 ; D1C10000 24321910 v_mul_f32_e32 v3, s26, v3 ; 0A06061A v_mac_f32_e32 v0, v16, v1 ; 2C000310 v_mad_f32 v1, -v16, v14, v14 ; D1C10001 243A1D10 v_mul_f32_e32 v8, v8, v18 ; 0A102508 v_mac_f32_e32 v1, v16, v8 ; 2C021110 v_mul_f32_e32 v8, v5, v17 ; 0A102305 v_mul_f32_e32 v6, s26, v6 ; 0A0C0C1A v_mul_f32_e32 v3, v36, v3 ; 0A060724 v_mul_f32_e32 v4, s25, v4 ; 0A080819 v_mac_f32_e32 v3, v35, v6 ; 2C060D23 v_mul_f32_e32 v6, v8, v38 ; 0A0C4D08 v_mul_f32_e32 v8, v37, v37 ; 0A104B25 v_mul_f32_e32 v2, s27, v2 ; 0A04041B v_mul_f32_e32 v6, v8, v6 ; 0A0C0D08 v_mul_f32_e32 v11, s25, v11 ; 0A161619 v_mul_f32_e32 v4, v36, v4 ; 0A080924 v_mac_f32_e32 v4, v35, v11 ; 2C081723 v_mul_f32_e32 v10, s27, v10 ; 0A14141B v_mul_f32_e32 v2, v36, v2 ; 0A040524 v_mac_f32_e32 v32, s22, v34 ; 2C404416 v_mac_f32_e32 v3, s26, v6 ; 2C060C1A v_mac_f32_e32 v2, v35, v10 ; 2C041523 v_mac_f32_e32 v3, v31, v32 ; 2C06411F v_mac_f32_e32 v15, s23, v34 ; 2C1E4417 v_mac_f32_e32 v4, s25, v6 ; 2C080C19 v_mac_f32_e32 v4, v31, v15 ; 2C081F1F v_mac_f32_e32 v2, s27, v6 ; 2C040C1B v_mac_f32_e32 v33, s21, v34 ; 2C424415 v_mac_f32_e32 v3, v5, v0 ; 2C060105 v_mul_f32_e32 v0, s4, v51 ; 0A006604 v_sub_f32_e32 v10, 1.0, v44 ; 041458F2 v_mac_f32_e32 v2, v31, v33 ; 2C04431F v_mac_f32_e32 v47, v10, v48 ; 2C5E610A v_mac_f32_e32 v4, v5, v1 ; 2C080305 v_mul_f32_e32 v1, s5, v52 ; 0A026805 v_mac_f32_e32 v0, s4, v51 ; 2C006604 v_mad_f32 v10, -v39, s28, s28 ; D1C1000A 20703927 v_mac_f32_e32 v2, v5, v9 ; 2C041305 v_mul_f32_e32 v5, s6, v53 ; 0A0A6A06 v_mac_f32_e32 v10, v39, v0 ; 2C140127 v_mac_f32_e32 v1, s5, v52 ; 2C026805 v_mad_f32 v0, -v39, s8, s8 ; D1C10000 20201127 v_mac_f32_e32 v0, v39, v1 ; 2C000327 v_mac_f32_e32 v5, s6, v53 ; 2C0A6A06 v_mad_f32 v1, -v39, s7, s7 ; D1C10001 201C0F27 v_mul_f32_e32 v6, s0, v40 ; 0A0C5000 v_mul_f32_e32 v8, s1, v41 ; 0A105201 v_mul_f32_e32 v9, s24, v42 ; 0A125418 v_mac_f32_e32 v1, v39, v5 ; 2C020B27 v_mul_f32_e32 v5, 0.5, v6 ; 0A0A0CF0 v_mul_f32_e32 v6, 0.5, v8 ; 0A0C10F0 v_mul_f32_e32 v8, 0.5, v9 ; 0A1012F0 v_mul_f32_e32 v9, s4, v45 ; 0A125A04 v_add_f32_e64 v14, s9, s9 ; D101000E 00001209 v_mul_f32_e32 v11, s5, v46 ; 0A165C05 v_mul_f32_e32 v9, v14, v9 ; 0A12130E v_mul_f32_e32 v12, s6, v47 ; 0A185E06 v_mul_f32_e32 v11, v14, v11 ; 0A16170E v_mac_f32_e32 v5, 0.5, v9 ; 2C0A12F0 v_mad_f32 v9, -v43, v10, v10 ; D1C10009 242A152B v_mul_f32_e32 v12, v14, v12 ; 0A18190E v_mac_f32_e32 v9, v43, v5 ; 2C120B2B v_mac_f32_e32 v6, 0.5, v11 ; 2C0C16F0 v_mad_f32 v5, -v43, v0, v0 ; D1C10005 2402012B v_mac_f32_e32 v5, v43, v6 ; 2C0A0D2B v_mac_f32_e32 v8, 0.5, v12 ; 2C1018F0 v_mad_f32 v6, -v43, v1, v1 ; D1C10006 2406032B v_mac_f32_e32 v6, v43, v8 ; 2C0C112B v_add_f32_e64 v8, v50, 0 clamp ; D1018008 00010132 v_mad_f32 v0, -v8, v2, v2 ; D1C10000 240A0508 v_mad_f32 v1, -v8, v3, v3 ; D1C10001 240E0708 v_mad_f32 v2, -v8, v4, v4 ; D1C10002 24120908 v_mac_f32_e32 v0, v8, v9 ; 2C001308 v_mac_f32_e32 v1, v8, v5 ; 2C020B08 v_mac_f32_e32 v2, v8, v6 ; 2C040D08 v_mad_f32 v3, -v8, v7, v7 ; D1C10003 241E0F08 Shader epilog disassembly: v_cvt_pkrtz_f16_f32_e64 v0, v0, v1 ; D2960000 00020300 v_cvt_pkrtz_f16_f32_e64 v1, v2, v3 ; D2960001 00020702 exp 15, 0, 1, 1, 1, v0, v1, v0, v0 ; C4001C0F 00000100 s_endpgm ; BF810000 *** SHADER CONFIG *** SPI_PS_INPUT_ADDR = 0xd077 SPI_PS_INPUT_ENA = 0x0002 *** SHADER STATS *** SGPRS: 96 VGPRS: 60 Spilled SGPRs: 0 Spilled VGPRs: 0 Code Size: 4392 bytes LDS: 0 blocks Scratch: 0 bytes per wave Max Waves: 4 ******************** FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL IN[1], GENERIC[1], PERSPECTIVE DCL IN[2], GENERIC[2], PERSPECTIVE DCL IN[3], GENERIC[3], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[1] DCL SAMP[2] DCL SAMP[3] DCL SAMP[4] DCL SAMP[5] DCL SVIEW[1], 2D, FLOAT DCL SVIEW[2], 2D, FLOAT DCL SVIEW[3], 2D, FLOAT DCL SVIEW[4], 2D, FLOAT DCL SVIEW[5], 2D, FLOAT DCL CONST[0..4] DCL CONST[6..15] DCL CONST[21..22] DCL TEMP[0..14], LOCAL IMM[0] FLT32 { 0.0000, 2.0000, 1.0000, 0.5000} IMM[1] FLT32 { -1.0000, 0.0000, 6.0000, 0.0100} IMM[2] FLT32 { 16.0000, 0.0000, 0.0001, 64.0000} IMM[3] FLT32 { 0.3330, 1.4427, 0.0000, 0.0000} IMM[4] INT32 {1, 0, 0, 0} 0: MOV TEMP[0].x, IN[1].wwww 1: MOV TEMP[0].yz, IN[2].yxyy 2: MOV TEMP[1].xy, IN[2].zwzz 3: MOV TEMP[1].z, IN[3].xxxx 4: ADD TEMP[2].xyz, CONST[0].xyzz, -IN[3].yzww 5: DP3 TEMP[3].x, TEMP[2].xyzz, TEMP[2].xyzz 6: RSQ TEMP[3].x, TEMP[3].xxxx 7: MUL TEMP[2].xyz, TEMP[2].xyzz, TEMP[3].xxxx 8: MUL TEMP[3].xyz, IN[1].xyzz, TEMP[2].xxxx 9: MAD TEMP[3].xyz, TEMP[0].xyzz, TEMP[2].yyyy, TEMP[3].xyzz 10: MAD TEMP[3].z, TEMP[1].xyzz, TEMP[2].zzzz, TEMP[3].xyzz 11: MOV TEMP[4].xy, IN[0].zwww 12: TEX TEMP[4], TEMP[4], SAMP[2], 2D 13: MOV TEMP[5].xy, IN[0].xyyy 14: TEX TEMP[5], TEMP[5], SAMP[5], 2D 15: MOV TEMP[6].xy, IN[0].zwww 16: TEX TEMP[6], TEMP[6], SAMP[3], 2D 17: MOV TEMP[7].xy, IN[0].xyyy 18: TEX TEMP[7], TEMP[7], SAMP[4], 2D 19: MOV TEMP[8].xy, IN[0].zwww 20: TEX TEMP[8].xyw, TEMP[8], SAMP[1], 2D 21: LRP TEMP[9].xyz, TEMP[5].wwww, TEMP[5].xyzz, TEMP[4].xyzz 22: MUL TEMP[9].xyz, TEMP[9].xyzz, CONST[21].xyzz 23: MUL TEMP[9].xyz, TEMP[9].xyzz, IMM[0].yyyy 24: MUL TEMP[10].xyz, TEMP[9].xyzz, CONST[10].xyzz 25: MUL TEMP[10].xyz, TEMP[10].xyzz, IMM[0].yyyy 26: ADD TEMP[11].xyz, IMM[0].zzzz, -TEMP[9].xyzz 27: MUL TEMP[11].xyz, IMM[0].yyyy, TEMP[11].xyzz 28: ADD TEMP[12].xyz, IMM[0].zzzz, -CONST[10].xyzz 29: MUL TEMP[11].xyz, TEMP[11].xyzz, TEMP[12].xyzz 30: ADD TEMP[11].xyz, IMM[0].zzzz, -TEMP[11].xyzz 31: FSGE TEMP[12].x, TEMP[9].xxxx, IMM[0].wwww 32: AND TEMP[12].x, TEMP[12].xxxx, IMM[0].zzzz 33: LRP TEMP[10].xyz, TEMP[12].xxxx, TEMP[11].xyzz, TEMP[10].xyzz 34: MUL TEMP[11].x, TEMP[7].xxxx, CONST[10].wwww 35: LRP TEMP[9].xyz, TEMP[11].xxxx, TEMP[10].xyzz, TEMP[9].xyzz 36: MUL TEMP[10].xyz, TEMP[9].xyzz, CONST[11].xyzz 37: MUL TEMP[10].xyz, TEMP[10].xyzz, IMM[0].yyyy 38: ADD TEMP[11].xyz, IMM[0].zzzz, -TEMP[9].xyzz 39: MUL TEMP[11].xyz, IMM[0].yyyy, TEMP[11].xyzz 40: ADD TEMP[12].xyz, IMM[0].zzzz, -CONST[11].xyzz 41: MUL TEMP[11].xyz, TEMP[11].xyzz, TEMP[12].xyzz 42: ADD TEMP[11].xyz, IMM[0].zzzz, -TEMP[11].xyzz 43: FSGE TEMP[12].x, TEMP[9].xxxx, IMM[0].wwww 44: AND TEMP[12].x, TEMP[12].xxxx, IMM[0].zzzz 45: LRP TEMP[10].xyz, TEMP[12].xxxx, TEMP[11].xyzz, TEMP[10].xyzz 46: MUL TEMP[11].x, TEMP[7].yyyy, CONST[11].wwww 47: LRP TEMP[9].xyz, TEMP[11].xxxx, TEMP[10].xyzz, TEMP[9].xyzz 48: MUL TEMP[10].xyz, TEMP[9].xyzz, CONST[12].xyzz 49: MUL TEMP[10].xyz, TEMP[10].xyzz, IMM[0].yyyy 50: ADD TEMP[11].xyz, IMM[0].zzzz, -TEMP[9].xyzz 51: MUL TEMP[11].xyz, IMM[0].yyyy, TEMP[11].xyzz 52: ADD TEMP[12].xyz, IMM[0].zzzz, -CONST[12].xyzz 53: MUL TEMP[11].xyz, TEMP[11].xyzz, TEMP[12].xyzz 54: ADD TEMP[11].xyz, IMM[0].zzzz, -TEMP[11].xyzz 55: FSGE TEMP[12].x, TEMP[9].xxxx, IMM[0].wwww 56: AND TEMP[12].x, TEMP[12].xxxx, IMM[0].zzzz 57: LRP TEMP[10].xyz, TEMP[12].xxxx, TEMP[11].xyzz, TEMP[10].xyzz 58: MUL TEMP[11].x, TEMP[7].zzzz, CONST[12].wwww 59: LRP TEMP[9].xyz, TEMP[11].xxxx, TEMP[10].xyzz, TEMP[9].xyzz 60: MAD TEMP[10].xyz, TEMP[6].xyzz, IMM[0].yyyy, IMM[1].xxxx 61: DP3 TEMP[11].x, TEMP[10].xyzz, TEMP[10].xyzz 62: RSQ TEMP[11].x, TEMP[11].xxxx 63: MUL TEMP[10].xyz, TEMP[10].xyzz, TEMP[11].xxxx 64: ADD TEMP[5].x, IMM[0].zzzz, -TEMP[5].wwww 65: MUL TEMP[5].x, TEMP[6].wwww, TEMP[5].xxxx 66: MOV_SAT TEMP[5].x, TEMP[5].xxxx 67: MAD TEMP[3].x, TEMP[3].zzzz, IMM[1].yyyy, TEMP[5].xxxx 68: MAX TEMP[6].x, TEMP[9].yyyy, TEMP[9].zzzz 69: MAX TEMP[6].x, TEMP[9].xxxx, TEMP[6].xxxx 70: MOV TEMP[11].xyz, IMM[0].zzzz 71: FSLT TEMP[12].x, IMM[1].wwww, TEMP[6].xxxx 72: UIF TEMP[12].xxxx :0 73: RCP TEMP[6].xyz, TEMP[6].xxxx 74: MUL TEMP[6].xyz, TEMP[9].xyzz, TEMP[6].xyzz 75: MOV_SAT TEMP[11].xyz, TEMP[6].xyzz 76: ENDIF 77: LRP TEMP[6].xyz, TEMP[8].xxxx, TEMP[11].xyzz, CONST[3].xyzz 78: MUL TEMP[11].x, TEMP[8].yyyy, TEMP[8].yyyy 79: MUL TEMP[5].x, TEMP[11].xxxx, IMM[2].xxxx 80: MUL TEMP[7].x, TEMP[8].wwww, TEMP[7].wwww 81: MAD TEMP[8].x, TEMP[5].xxxx, IMM[0].wwww, IMM[0].yyyy 82: FSLT TEMP[11].x, TEMP[4].wwww, CONST[22].xxxx 83: AND TEMP[11].x, TEMP[11].xxxx, IMM[0].zzzz 84: KILL_IF -TEMP[11].xxxx 85: DP3 TEMP[11].x, IN[1].xyzz, TEMP[10].xyzz 86: DP3 TEMP[0].x, TEMP[0].xyzz, TEMP[10].xyzz 87: MOV TEMP[11].y, TEMP[0].xxxx 88: DP3 TEMP[0].x, TEMP[1].xyzz, TEMP[10].xyzz 89: MOV TEMP[11].z, TEMP[0].xxxx 90: DP3 TEMP[0].x, TEMP[11].xyzz, TEMP[11].xyzz 91: RSQ TEMP[0].x, TEMP[0].xxxx 92: MUL TEMP[0].xyz, TEMP[11].xyzz, TEMP[0].xxxx 93: DP3 TEMP[1].x, CONST[1].xyzz, CONST[1].xyzz 94: RSQ TEMP[1].x, TEMP[1].xxxx 95: MUL TEMP[1].xyz, CONST[1].xyzz, TEMP[1].xxxx 96: DP3 TEMP[10].x, TEMP[2].xyzz, TEMP[2].xyzz 97: RSQ TEMP[10].x, TEMP[10].xxxx 98: MUL TEMP[2].xyz, TEMP[2].xyzz, TEMP[10].xxxx 99: DP3 TEMP[10].x, TEMP[0].xyzz, TEMP[1].xyzz 100: MAX TEMP[11].x, IMM[0].xxxx, TEMP[10].xxxx 101: MOV TEMP[12].x, IMM[0].xxxx 102: FSLT TEMP[13].x, IMM[0].xxxx, TEMP[3].xxxx 103: FSLT TEMP[14].x, IMM[0].xxxx, TEMP[5].xxxx 104: AND TEMP[13].x, TEMP[13].xxxx, TEMP[14].xxxx 105: UIF TEMP[13].xxxx :0 106: MOV TEMP[1].xyz, -TEMP[1].xyzx 107: DP3 TEMP[13].x, TEMP[0].xyzz, TEMP[1].xyzz 108: MUL TEMP[13].xyz, TEMP[13].xxxx, TEMP[0].xyzz 109: MUL TEMP[13].xyz, IMM[0].yyyy, TEMP[13].xyzz 110: ADD TEMP[1].xyz, TEMP[1].xyzz, -TEMP[13].xyzz 111: DP3 TEMP[1].x, TEMP[2].xyzz, TEMP[1].xyzz 112: MAX TEMP[1].x, IMM[1].yyyy, TEMP[1].xxxx 113: MUL TEMP[13].x, TEMP[11].xxxx, IMM[0].yyyy 114: SQRT TEMP[13].x, TEMP[13].xxxx 115: MOV_SAT TEMP[13].x, TEMP[13].xxxx 116: MUL TEMP[1].x, TEMP[1].xxxx, TEMP[13].xxxx 117: ADD TEMP[5].x, TEMP[5].xxxx, IMM[1].wwww 118: MUL TEMP[5].x, TEMP[5].xxxx, IMM[2].wwww 119: MAX TEMP[5].x, IMM[2].zzzz, TEMP[5].xxxx 120: POW TEMP[1].x, TEMP[1].xxxx, TEMP[5].xxxx 121: MUL TEMP[12].x, TEMP[1].xxxx, TEMP[3].xxxx 122: ENDIF 123: ADD TEMP[1].x, IMM[3].xxxx, -TEMP[10].xxxx 124: MOV_SAT TEMP[1].x, TEMP[1].xxxx 125: DP3 TEMP[0].x, TEMP[0].xyzz, TEMP[2].xyzz 126: MOV_SAT TEMP[0].x, TEMP[0].xxxx 127: ADD TEMP[0].x, IMM[0].zzzz, -TEMP[0].xxxx 128: MOV_SAT TEMP[0].x, TEMP[0].xxxx 129: MAX TEMP[2].x, IMM[2].zzzz, TEMP[8].xxxx 130: POW TEMP[0].x, TEMP[0].xxxx, TEMP[2].xxxx 131: MUL TEMP[0].x, TEMP[0].xxxx, TEMP[7].xxxx 132: MUL TEMP[1].x, TEMP[1].xxxx, TEMP[1].xxxx 133: MUL TEMP[0].x, TEMP[0].xxxx, TEMP[1].xxxx 134: MUL TEMP[1].xyz, CONST[2].xyzz, TEMP[6].xyzz 135: MUL TEMP[2].xyz, TEMP[9].xyzz, CONST[2].xyzz 136: MUL TEMP[2].xyz, TEMP[2].xyzz, TEMP[11].xxxx 137: MAD TEMP[1].xyz, TEMP[1].xyzz, TEMP[12].xxxx, TEMP[2].xyzz 138: MAD TEMP[0].xyz, TEMP[0].xxxx, CONST[2].xyzz, TEMP[1].xyzz 139: ADD TEMP[1].xyz, IN[3].yzww, -CONST[0].xyzz 140: DP3 TEMP[1].x, TEMP[1].xyzz, TEMP[1].xyzz 141: SQRT TEMP[1].x, TEMP[1].xxxx 142: MOV TEMP[2].x, -CONST[9].xxxx 143: ADD TEMP[3].x, TEMP[1].xxxx, -CONST[8].xxxx 144: RCP TEMP[5].x, CONST[8].yyyy 145: MUL TEMP[3].x, TEMP[3].xxxx, TEMP[5].xxxx 146: MOV_SAT TEMP[3].x, TEMP[3].xxxx 147: MUL TEMP[3].x, TEMP[3].xxxx, TEMP[2].xxxx 148: MUL TEMP[3].x, TEMP[3].xxxx, IMM[3].yyyy 149: EX2 TEMP[3].x, TEMP[3].xxxx 150: ADD TEMP[3].x, IMM[0].zzzz, -TEMP[3].xxxx 151: MUL TEMP[2].x, TEMP[2].xxxx, IMM[3].yyyy 152: EX2 TEMP[2].x, TEMP[2].xxxx 153: ADD TEMP[2].x, IMM[0].zzzz, -TEMP[2].xxxx 154: RCP TEMP[2].x, TEMP[2].xxxx 155: MUL TEMP[2].x, TEMP[3].xxxx, TEMP[2].xxxx 156: MOV_SAT TEMP[2].x, TEMP[2].xxxx 157: MOV TEMP[3].w, TEMP[2].xxxx 158: FSLT TEMP[5].x, IMM[0].xxxx, CONST[6].yyyy 159: UIF TEMP[5].xxxx :0 160: MOV TEMP[5].xyz, IMM[0].xzxx 161: MOV TEMP[5].w, CONST[6].xxxx 162: MOV TEMP[6].w, IMM[0].zzzz 163: MOV TEMP[6].xyz, CONST[0].xyzx 164: DP4 TEMP[6].x, TEMP[5], TEMP[6] 165: FSGE TEMP[7].x, IMM[0].xxxx, TEMP[6].xxxx 166: UIF TEMP[7].xxxx :0 167: MOV TEMP[7].x, IMM[4].xxxx 168: ELSE :0 169: MOV TEMP[7].x, IMM[4].yyyy 170: ENDIF 171: I2F TEMP[7].x, TEMP[7].xxxx 172: MOV TEMP[8].w, IMM[0].zzzz 173: MOV TEMP[8].xyz, IN[3].yzwy 174: DP4 TEMP[8].x, TEMP[5], TEMP[8] 175: MOV TEMP[9].w, IMM[0].xxxx 176: ADD TEMP[9].xyz, CONST[0].xyzz, -IN[3].yzww 177: MUL TEMP[10].x, IMM[0].yyyy, TEMP[7].xxxx 178: ADD TEMP[10].x, IMM[0].zzzz, -TEMP[10].xxxx 179: MUL TEMP[10].x, TEMP[10].xxxx, TEMP[8].xxxx 180: MIN TEMP[10].x, IMM[0].xxxx, TEMP[10].xxxx 181: MUL TEMP[1].x, CONST[6].zzzz, TEMP[1].xxxx 182: ADD TEMP[6].x, TEMP[8].xxxx, TEMP[6].xxxx 183: MUL TEMP[8].x, TEMP[10].xxxx, TEMP[10].xxxx 184: DP4 TEMP[5].x, TEMP[5], TEMP[9] 185: ABS TEMP[5].x, TEMP[5].xxxx 186: RCP TEMP[5].x, TEMP[5].xxxx 187: MUL TEMP[5].x, TEMP[8].xxxx, TEMP[5].xxxx 188: MAD TEMP[5].x, TEMP[7].xxxx, TEMP[6].xxxx, -TEMP[5].xxxx 189: MUL TEMP[1].x, -TEMP[1].xxxx, TEMP[5].xxxx 190: MUL TEMP[1].x, -TEMP[1].xxxx, CONST[6].yyyy 191: MUL TEMP[1].x, TEMP[1].xxxx, IMM[3].yyyy 192: EX2 TEMP[1].x, TEMP[1].xxxx 193: MOV_SAT TEMP[1].x, TEMP[1].xxxx 194: ADD TEMP[1].x, IMM[0].zzzz, -TEMP[1].xxxx 195: MAX TEMP[1].x, TEMP[2].xxxx, TEMP[1].xxxx 196: MOV TEMP[3].w, TEMP[1].xxxx 197: ENDIF 198: MOV_SAT TEMP[1].x, TEMP[3].wwww 199: ADD TEMP[1].xyz, IMM[0].zzzz, -TEMP[1].xxxx 200: MUL TEMP[0].xyz, TEMP[0].xyzz, TEMP[1].xyzz 201: MOV_SAT TEMP[1].x, TEMP[3].wwww 202: ADD TEMP[1].x, IMM[0].zzzz, -TEMP[1].xxxx 203: MUL TEMP[1].x, TEMP[4].wwww, TEMP[1].xxxx 204: MOV TEMP[0].w, TEMP[1].xxxx 205: MOV OUT[0], TEMP[0] 206: END radeonsi: Compiling shader 61 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_ps <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), float inreg, i32 inreg, <2 x i32>, <2 x i32>, <2 x i32>, <3 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, float, float, float, float, float, i32, i32, float, i32) #0 { main_body: %23 = call float @llvm.SI.fs.interp(i32 3, i32 1, i32 %6, <2 x i32> %8) %24 = call float @llvm.SI.fs.interp(i32 0, i32 2, i32 %6, <2 x i32> %8) %25 = call float @llvm.SI.fs.interp(i32 1, i32 2, i32 %6, <2 x i32> %8) %26 = call float @llvm.SI.fs.interp(i32 2, i32 2, i32 %6, <2 x i32> %8) %27 = call float @llvm.SI.fs.interp(i32 3, i32 2, i32 %6, <2 x i32> %8) %28 = call float @llvm.SI.fs.interp(i32 0, i32 3, i32 %6, <2 x i32> %8) %29 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %30 = load <16 x i8>, <16 x i8> addrspace(2)* %29, align 16, !invariant.load !0 %31 = call float @llvm.SI.load.const(<16 x i8> %30, i32 0) %32 = call float @llvm.SI.fs.interp(i32 1, i32 3, i32 %6, <2 x i32> %8) %33 = fsub float %31, %32 %34 = call float @llvm.SI.load.const(<16 x i8> %30, i32 4) %35 = call float @llvm.SI.fs.interp(i32 2, i32 3, i32 %6, <2 x i32> %8) %36 = fsub float %34, %35 %37 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %38 = load <16 x i8>, <16 x i8> addrspace(2)* %37, align 16, !invariant.load !0 %39 = call float @llvm.SI.load.const(<16 x i8> %38, i32 8) %40 = call float @llvm.SI.fs.interp(i32 3, i32 3, i32 %6, <2 x i32> %8) %41 = fsub float %39, %40 %42 = fmul float %33, %33 %43 = fmul float %36, %36 %44 = fadd float %43, %42 %45 = fmul float %41, %41 %46 = fadd float %44, %45 %47 = call float @llvm.sqrt.f32(float %46) %48 = fdiv float 1.000000e+00, %47, !fpmath !1 %49 = fmul float %33, %48 %50 = fmul float %36, %48 %51 = fmul float %41, %48 %52 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %53 = fmul float %52, %49 %54 = fmul float %25, %50 %55 = fadd float %54, %53 %56 = fmul float %28, %51 %57 = fadd float %56, %55 %58 = call float @llvm.SI.fs.interp(i32 2, i32 0, i32 %6, <2 x i32> %8) %59 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %6, <2 x i32> %8) %60 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 4, !amdgpu.uniform !0 %61 = load <8 x i32>, <8 x i32> addrspace(2)* %60, align 32, !invariant.load !0 %62 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %63 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %62, i64 0, i64 11, !amdgpu.uniform !0 %64 = load <4 x i32>, <4 x i32> addrspace(2)* %63, align 16, !invariant.load !0 %65 = bitcast float %58 to i32 %66 = bitcast float %59 to i32 %67 = insertelement <2 x i32> undef, i32 %65, i32 0 %68 = insertelement <2 x i32> %67, i32 %66, i32 1 %69 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %68, <8 x i32> %61, <4 x i32> %64, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %70 = extractelement <4 x float> %69, i32 0 %71 = extractelement <4 x float> %69, i32 1 %72 = extractelement <4 x float> %69, i32 2 %73 = extractelement <4 x float> %69, i32 3 %74 = call float @llvm.SI.fs.interp(i32 0, i32 0, i32 %6, <2 x i32> %8) %75 = call float @llvm.SI.fs.interp(i32 1, i32 0, i32 %6, <2 x i32> %8) %76 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 10, !amdgpu.uniform !0 %77 = load <8 x i32>, <8 x i32> addrspace(2)* %76, align 32, !invariant.load !0 %78 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %79 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %78, i64 0, i64 23, !amdgpu.uniform !0 %80 = load <4 x i32>, <4 x i32> addrspace(2)* %79, align 16, !invariant.load !0 %81 = bitcast float %74 to i32 %82 = bitcast float %75 to i32 %83 = insertelement <2 x i32> undef, i32 %81, i32 0 %84 = insertelement <2 x i32> %83, i32 %82, i32 1 %85 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %84, <8 x i32> %77, <4 x i32> %80, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %86 = extractelement <4 x float> %85, i32 0 %87 = extractelement <4 x float> %85, i32 1 %88 = extractelement <4 x float> %85, i32 2 %89 = extractelement <4 x float> %85, i32 3 %90 = call float @llvm.SI.fs.interp(i32 2, i32 0, i32 %6, <2 x i32> %8) %91 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %6, <2 x i32> %8) %92 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 6, !amdgpu.uniform !0 %93 = load <8 x i32>, <8 x i32> addrspace(2)* %92, align 32, !invariant.load !0 %94 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %95 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %94, i64 0, i64 15, !amdgpu.uniform !0 %96 = load <4 x i32>, <4 x i32> addrspace(2)* %95, align 16, !invariant.load !0 %97 = bitcast float %90 to i32 %98 = bitcast float %91 to i32 %99 = insertelement <2 x i32> undef, i32 %97, i32 0 %100 = insertelement <2 x i32> %99, i32 %98, i32 1 %101 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %100, <8 x i32> %93, <4 x i32> %96, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %102 = extractelement <4 x float> %101, i32 0 %103 = extractelement <4 x float> %101, i32 1 %104 = extractelement <4 x float> %101, i32 2 %105 = extractelement <4 x float> %101, i32 3 %106 = call float @llvm.SI.fs.interp(i32 0, i32 0, i32 %6, <2 x i32> %8) %107 = call float @llvm.SI.fs.interp(i32 1, i32 0, i32 %6, <2 x i32> %8) %108 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 8, !amdgpu.uniform !0 %109 = load <8 x i32>, <8 x i32> addrspace(2)* %108, align 32, !invariant.load !0 %110 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %111 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %110, i64 0, i64 19, !amdgpu.uniform !0 %112 = load <4 x i32>, <4 x i32> addrspace(2)* %111, align 16, !invariant.load !0 %113 = bitcast float %106 to i32 %114 = bitcast float %107 to i32 %115 = insertelement <2 x i32> undef, i32 %113, i32 0 %116 = insertelement <2 x i32> %115, i32 %114, i32 1 %117 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %116, <8 x i32> %109, <4 x i32> %112, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %118 = extractelement <4 x float> %117, i32 0 %119 = extractelement <4 x float> %117, i32 1 %120 = extractelement <4 x float> %117, i32 2 %121 = extractelement <4 x float> %117, i32 3 %122 = call float @llvm.SI.fs.interp(i32 2, i32 0, i32 %6, <2 x i32> %8) %123 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %6, <2 x i32> %8) %124 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 2, !amdgpu.uniform !0 %125 = load <8 x i32>, <8 x i32> addrspace(2)* %124, align 32, !invariant.load !0 %126 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %127 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %126, i64 0, i64 7, !amdgpu.uniform !0 %128 = load <4 x i32>, <4 x i32> addrspace(2)* %127, align 16, !invariant.load !0 %129 = bitcast float %122 to i32 %130 = bitcast float %123 to i32 %131 = insertelement <2 x i32> undef, i32 %129, i32 0 %132 = insertelement <2 x i32> %131, i32 %130, i32 1 %133 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %132, <8 x i32> %125, <4 x i32> %128, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %134 = extractelement <4 x float> %133, i32 0 %135 = extractelement <4 x float> %133, i32 1 %136 = extractelement <4 x float> %133, i32 3 %137 = fsub float 1.000000e+00, %89 %138 = fmul float %86, %89 %139 = fmul float %70, %137 %140 = fadd float %138, %139 %141 = fsub float 1.000000e+00, %89 %142 = fmul float %87, %89 %143 = fmul float %71, %141 %144 = fadd float %142, %143 %145 = fsub float 1.000000e+00, %89 %146 = fmul float %88, %89 %147 = fmul float %72, %145 %148 = fadd float %146, %147 %149 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %150 = load <16 x i8>, <16 x i8> addrspace(2)* %149, align 16, !invariant.load !0 %151 = call float @llvm.SI.load.const(<16 x i8> %150, i32 336) %152 = fmul float %140, %151 %153 = call float @llvm.SI.load.const(<16 x i8> %150, i32 340) %154 = fmul float %144, %153 %155 = call float @llvm.SI.load.const(<16 x i8> %150, i32 344) %156 = fmul float %148, %155 %157 = fmul float %152, 2.000000e+00 %158 = fmul float %154, 2.000000e+00 %159 = fmul float %156, 2.000000e+00 %160 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %161 = load <16 x i8>, <16 x i8> addrspace(2)* %160, align 16, !invariant.load !0 %162 = call float @llvm.SI.load.const(<16 x i8> %161, i32 160) %163 = fmul float %157, %162 %164 = call float @llvm.SI.load.const(<16 x i8> %161, i32 164) %165 = fmul float %158, %164 %166 = call float @llvm.SI.load.const(<16 x i8> %161, i32 168) %167 = fmul float %159, %166 %168 = fmul float %163, 2.000000e+00 %169 = fmul float %165, 2.000000e+00 %170 = fmul float %167, 2.000000e+00 %171 = fsub float 1.000000e+00, %157 %172 = fsub float 1.000000e+00, %158 %173 = fsub float 1.000000e+00, %159 %174 = fmul float %171, 2.000000e+00 %175 = fmul float %172, 2.000000e+00 %176 = fmul float %173, 2.000000e+00 %177 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %178 = load <16 x i8>, <16 x i8> addrspace(2)* %177, align 16, !invariant.load !0 %179 = call float @llvm.SI.load.const(<16 x i8> %178, i32 160) %180 = fsub float 1.000000e+00, %179 %181 = call float @llvm.SI.load.const(<16 x i8> %178, i32 164) %182 = fsub float 1.000000e+00, %181 %183 = call float @llvm.SI.load.const(<16 x i8> %178, i32 168) %184 = fsub float 1.000000e+00, %183 %185 = fmul float %174, %180 %186 = fmul float %175, %182 %187 = fmul float %176, %184 %188 = fsub float 1.000000e+00, %185 %189 = fsub float 1.000000e+00, %186 %190 = fsub float 1.000000e+00, %187 %191 = fcmp oge float %157, 5.000000e-01 %192 = select i1 %191, float 1.000000e+00, float 0.000000e+00 %193 = fsub float 1.000000e+00, %192 %194 = fmul float %188, %192 %195 = fmul float %168, %193 %196 = fadd float %194, %195 %197 = fsub float 1.000000e+00, %192 %198 = fmul float %189, %192 %199 = fmul float %169, %197 %200 = fadd float %198, %199 %201 = fsub float 1.000000e+00, %192 %202 = fmul float %190, %192 %203 = fmul float %170, %201 %204 = fadd float %202, %203 %205 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %206 = load <16 x i8>, <16 x i8> addrspace(2)* %205, align 16, !invariant.load !0 %207 = call float @llvm.SI.load.const(<16 x i8> %206, i32 172) %208 = fmul float %118, %207 %209 = fsub float 1.000000e+00, %208 %210 = fmul float %196, %208 %211 = fmul float %157, %209 %212 = fadd float %210, %211 %213 = fsub float 1.000000e+00, %208 %214 = fmul float %200, %208 %215 = fmul float %158, %213 %216 = fadd float %214, %215 %217 = fsub float 1.000000e+00, %208 %218 = fmul float %204, %208 %219 = fmul float %159, %217 %220 = fadd float %218, %219 %221 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %222 = load <16 x i8>, <16 x i8> addrspace(2)* %221, align 16, !invariant.load !0 %223 = call float @llvm.SI.load.const(<16 x i8> %222, i32 176) %224 = fmul float %212, %223 %225 = call float @llvm.SI.load.const(<16 x i8> %222, i32 180) %226 = fmul float %216, %225 %227 = call float @llvm.SI.load.const(<16 x i8> %222, i32 184) %228 = fmul float %220, %227 %229 = fmul float %224, 2.000000e+00 %230 = fmul float %226, 2.000000e+00 %231 = fmul float %228, 2.000000e+00 %232 = fsub float 1.000000e+00, %212 %233 = fsub float 1.000000e+00, %216 %234 = fsub float 1.000000e+00, %220 %235 = fmul float %232, 2.000000e+00 %236 = fmul float %233, 2.000000e+00 %237 = fmul float %234, 2.000000e+00 %238 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %239 = load <16 x i8>, <16 x i8> addrspace(2)* %238, align 16, !invariant.load !0 %240 = call float @llvm.SI.load.const(<16 x i8> %239, i32 176) %241 = fsub float 1.000000e+00, %240 %242 = call float @llvm.SI.load.const(<16 x i8> %239, i32 180) %243 = fsub float 1.000000e+00, %242 %244 = call float @llvm.SI.load.const(<16 x i8> %239, i32 184) %245 = fsub float 1.000000e+00, %244 %246 = fmul float %235, %241 %247 = fmul float %236, %243 %248 = fmul float %237, %245 %249 = fsub float 1.000000e+00, %246 %250 = fsub float 1.000000e+00, %247 %251 = fsub float 1.000000e+00, %248 %252 = fcmp oge float %212, 5.000000e-01 %253 = select i1 %252, float 1.000000e+00, float 0.000000e+00 %254 = fsub float 1.000000e+00, %253 %255 = fmul float %249, %253 %256 = fmul float %229, %254 %257 = fadd float %255, %256 %258 = fsub float 1.000000e+00, %253 %259 = fmul float %250, %253 %260 = fmul float %230, %258 %261 = fadd float %259, %260 %262 = fsub float 1.000000e+00, %253 %263 = fmul float %251, %253 %264 = fmul float %231, %262 %265 = fadd float %263, %264 %266 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %267 = load <16 x i8>, <16 x i8> addrspace(2)* %266, align 16, !invariant.load !0 %268 = call float @llvm.SI.load.const(<16 x i8> %267, i32 188) %269 = fmul float %119, %268 %270 = fsub float 1.000000e+00, %269 %271 = fmul float %257, %269 %272 = fmul float %212, %270 %273 = fadd float %271, %272 %274 = fsub float 1.000000e+00, %269 %275 = fmul float %261, %269 %276 = fmul float %216, %274 %277 = fadd float %275, %276 %278 = fsub float 1.000000e+00, %269 %279 = fmul float %265, %269 %280 = fmul float %220, %278 %281 = fadd float %279, %280 %282 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %283 = load <16 x i8>, <16 x i8> addrspace(2)* %282, align 16, !invariant.load !0 %284 = call float @llvm.SI.load.const(<16 x i8> %283, i32 192) %285 = fmul float %273, %284 %286 = call float @llvm.SI.load.const(<16 x i8> %283, i32 196) %287 = fmul float %277, %286 %288 = call float @llvm.SI.load.const(<16 x i8> %283, i32 200) %289 = fmul float %281, %288 %290 = fmul float %285, 2.000000e+00 %291 = fmul float %287, 2.000000e+00 %292 = fmul float %289, 2.000000e+00 %293 = fsub float 1.000000e+00, %273 %294 = fsub float 1.000000e+00, %277 %295 = fsub float 1.000000e+00, %281 %296 = fmul float %293, 2.000000e+00 %297 = fmul float %294, 2.000000e+00 %298 = fmul float %295, 2.000000e+00 %299 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %300 = load <16 x i8>, <16 x i8> addrspace(2)* %299, align 16, !invariant.load !0 %301 = call float @llvm.SI.load.const(<16 x i8> %300, i32 192) %302 = fsub float 1.000000e+00, %301 %303 = call float @llvm.SI.load.const(<16 x i8> %300, i32 196) %304 = fsub float 1.000000e+00, %303 %305 = call float @llvm.SI.load.const(<16 x i8> %300, i32 200) %306 = fsub float 1.000000e+00, %305 %307 = fmul float %296, %302 %308 = fmul float %297, %304 %309 = fmul float %298, %306 %310 = fsub float 1.000000e+00, %307 %311 = fsub float 1.000000e+00, %308 %312 = fsub float 1.000000e+00, %309 %313 = fcmp oge float %273, 5.000000e-01 %314 = select i1 %313, float 1.000000e+00, float 0.000000e+00 %315 = fsub float 1.000000e+00, %314 %316 = fmul float %310, %314 %317 = fmul float %290, %315 %318 = fadd float %316, %317 %319 = fsub float 1.000000e+00, %314 %320 = fmul float %311, %314 %321 = fmul float %291, %319 %322 = fadd float %320, %321 %323 = fsub float 1.000000e+00, %314 %324 = fmul float %312, %314 %325 = fmul float %292, %323 %326 = fadd float %324, %325 %327 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %328 = load <16 x i8>, <16 x i8> addrspace(2)* %327, align 16, !invariant.load !0 %329 = call float @llvm.SI.load.const(<16 x i8> %328, i32 204) %330 = fmul float %120, %329 %331 = fsub float 1.000000e+00, %330 %332 = fmul float %318, %330 %333 = fmul float %273, %331 %334 = fadd float %332, %333 %335 = fsub float 1.000000e+00, %330 %336 = fmul float %322, %330 %337 = fmul float %277, %335 %338 = fadd float %336, %337 %339 = fsub float 1.000000e+00, %330 %340 = fmul float %326, %330 %341 = fmul float %281, %339 %342 = fadd float %340, %341 %343 = fmul float %102, 2.000000e+00 %344 = fadd float %343, -1.000000e+00 %345 = fmul float %103, 2.000000e+00 %346 = fadd float %345, -1.000000e+00 %347 = fmul float %104, 2.000000e+00 %348 = fadd float %347, -1.000000e+00 %349 = fmul float %344, %344 %350 = fmul float %346, %346 %351 = fadd float %350, %349 %352 = fmul float %348, %348 %353 = fadd float %351, %352 %354 = call float @llvm.sqrt.f32(float %353) %355 = fdiv float 1.000000e+00, %354, !fpmath !1 %356 = fmul float %344, %355 %357 = fmul float %346, %355 %358 = fmul float %348, %355 %359 = fsub float 1.000000e+00, %89 %360 = fmul float %105, %359 %361 = call float @llvm.AMDGPU.clamp.(float %360, float 0.000000e+00, float 1.000000e+00) %362 = fmul float %57, 0x3EE4F8B580000000 %363 = fadd float %362, %361 %364 = call float @llvm.maxnum.f32(float %338, float %342) %365 = call float @llvm.maxnum.f32(float %334, float %364) %366 = fcmp ogt float %365, 0x3F847AE140000000 br i1 %366, label %if72, label %endif76 if72: ; preds = %main_body %367 = fdiv float 1.000000e+00, %365, !fpmath !1 %368 = fmul float %334, %367 %369 = fmul float %338, %367 %370 = fmul float %342, %367 %371 = call float @llvm.AMDGPU.clamp.(float %368, float 0.000000e+00, float 1.000000e+00) %372 = call float @llvm.AMDGPU.clamp.(float %369, float 0.000000e+00, float 1.000000e+00) %373 = call float @llvm.AMDGPU.clamp.(float %370, float 0.000000e+00, float 1.000000e+00) br label %endif76 endif76: ; preds = %if72, %main_body %.05 = phi float [ %371, %if72 ], [ 1.000000e+00, %main_body ] %.04 = phi float [ %372, %if72 ], [ 1.000000e+00, %main_body ] %.03 = phi float [ %373, %if72 ], [ 1.000000e+00, %main_body ] %374 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %375 = load <16 x i8>, <16 x i8> addrspace(2)* %374, align 16, !invariant.load !0 %376 = call float @llvm.SI.load.const(<16 x i8> %375, i32 48) %377 = fsub float 1.000000e+00, %134 %378 = fmul float %.05, %134 %379 = fmul float %376, %377 %380 = fadd float %378, %379 %381 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %382 = load <16 x i8>, <16 x i8> addrspace(2)* %381, align 16, !invariant.load !0 %383 = call float @llvm.SI.load.const(<16 x i8> %382, i32 52) %384 = fsub float 1.000000e+00, %134 %385 = fmul float %.04, %134 %386 = fmul float %383, %384 %387 = fadd float %385, %386 %388 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %389 = load <16 x i8>, <16 x i8> addrspace(2)* %388, align 16, !invariant.load !0 %390 = call float @llvm.SI.load.const(<16 x i8> %389, i32 56) %391 = fsub float 1.000000e+00, %134 %392 = fmul float %.03, %134 %393 = fmul float %390, %391 %394 = fadd float %392, %393 %395 = fmul float %135, %135 %396 = fmul float %395, 1.600000e+01 %397 = fmul float %136, %121 %398 = fmul float %396, 5.000000e-01 %399 = fadd float %398, 2.000000e+00 %400 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %401 = load <16 x i8>, <16 x i8> addrspace(2)* %400, align 16, !invariant.load !0 %402 = call float @llvm.SI.load.const(<16 x i8> %401, i32 352) %403 = fcmp olt float %73, %402 %404 = select i1 %403, float -1.000000e+00, float 0.000000e+00 call void @llvm.AMDGPU.kill(float %404) %405 = call float @llvm.SI.fs.interp(i32 0, i32 1, i32 %6, <2 x i32> %8) %406 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %407 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %408 = fmul float %405, %356 %409 = fmul float %406, %357 %410 = fadd float %409, %408 %411 = fmul float %407, %358 %412 = fadd float %410, %411 %413 = fmul float %23, %356 %414 = fmul float %24, %357 %415 = fadd float %414, %413 %416 = fmul float %25, %358 %417 = fadd float %415, %416 %418 = fmul float %26, %356 %419 = fmul float %27, %357 %420 = fadd float %419, %418 %421 = fmul float %28, %358 %422 = fadd float %420, %421 %423 = fmul float %412, %412 %424 = fmul float %417, %417 %425 = fadd float %424, %423 %426 = fmul float %422, %422 %427 = fadd float %425, %426 %428 = call float @llvm.sqrt.f32(float %427) %429 = fdiv float 1.000000e+00, %428, !fpmath !1 %430 = fmul float %412, %429 %431 = fmul float %417, %429 %432 = fmul float %422, %429 %433 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %434 = load <16 x i8>, <16 x i8> addrspace(2)* %433, align 16, !invariant.load !0 %435 = call float @llvm.SI.load.const(<16 x i8> %434, i32 16) %436 = call float @llvm.SI.load.const(<16 x i8> %434, i32 20) %437 = call float @llvm.SI.load.const(<16 x i8> %434, i32 24) %438 = call float @llvm.SI.load.const(<16 x i8> %434, i32 16) %439 = call float @llvm.SI.load.const(<16 x i8> %434, i32 20) %440 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %441 = load <16 x i8>, <16 x i8> addrspace(2)* %440, align 16, !invariant.load !0 %442 = call float @llvm.SI.load.const(<16 x i8> %441, i32 24) %443 = fmul float %435, %438 %444 = fmul float %436, %439 %445 = fadd float %444, %443 %446 = fmul float %437, %442 %447 = fadd float %445, %446 %448 = call float @llvm.sqrt.f32(float %447) %449 = fdiv float 1.000000e+00, %448, !fpmath !1 %450 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %451 = load <16 x i8>, <16 x i8> addrspace(2)* %450, align 16, !invariant.load !0 %452 = call float @llvm.SI.load.const(<16 x i8> %451, i32 16) %453 = fmul float %452, %449 %454 = call float @llvm.SI.load.const(<16 x i8> %451, i32 20) %455 = fmul float %454, %449 %456 = call float @llvm.SI.load.const(<16 x i8> %451, i32 24) %457 = fmul float %456, %449 %458 = fmul float %49, %49 %459 = fmul float %50, %50 %460 = fadd float %459, %458 %461 = fmul float %51, %51 %462 = fadd float %460, %461 %463 = call float @llvm.sqrt.f32(float %462) %464 = fdiv float 1.000000e+00, %463, !fpmath !1 %465 = fmul float %49, %464 %466 = fmul float %50, %464 %467 = fmul float %51, %464 %468 = fmul float %430, %453 %469 = fmul float %431, %455 %470 = fadd float %469, %468 %471 = fmul float %432, %457 %472 = fadd float %470, %471 %473 = call float @llvm.maxnum.f32(float %472, float 0.000000e+00) %474 = fcmp ogt float %363, 0.000000e+00 %475 = fcmp ogt float %396, 0.000000e+00 %476 = and i1 %474, %475 br i1 %476, label %if105, label %endif122 if105: ; preds = %endif76 %477 = fmul float %453, %430 %478 = fsub float -0.000000e+00, %477 %479 = fmul float %455, %431 %480 = fsub float %478, %479 %481 = fmul float %457, %432 %482 = fsub float %480, %481 %483 = fmul float %482, %430 %484 = fmul float %482, %431 %485 = fmul float %482, %432 %486 = fmul float %483, 2.000000e+00 %487 = fmul float %484, 2.000000e+00 %488 = fmul float %485, 2.000000e+00 %489 = fsub float -0.000000e+00, %486 %490 = fsub float %489, %453 %491 = fsub float -0.000000e+00, %487 %492 = fsub float %491, %455 %493 = fsub float -0.000000e+00, %488 %494 = fsub float %493, %457 %495 = fmul float %465, %490 %496 = fmul float %466, %492 %497 = fadd float %496, %495 %498 = fmul float %467, %494 %499 = fadd float %497, %498 %500 = call float @llvm.maxnum.f32(float %499, float 0x3EE4F8B580000000) %501 = fmul float %473, 2.000000e+00 %502 = call float @llvm.sqrt.f32(float %501) %503 = call float @llvm.AMDGPU.clamp.(float %502, float 0.000000e+00, float 1.000000e+00) %504 = fmul float %500, %503 %505 = fadd float %396, 0x3F847AE140000000 %506 = fmul float %505, 6.400000e+01 %507 = call float @llvm.maxnum.f32(float %506, float 0x3F1A36E2E0000000) %508 = call float @llvm.pow.f32(float %504, float %507) %509 = fmul float %508, %363 br label %endif122 endif122: ; preds = %if105, %endif76 %.0 = phi float [ %509, %if105 ], [ 0.000000e+00, %endif76 ] %510 = fsub float 0x3FD54FDF40000000, %472 %511 = call float @llvm.AMDGPU.clamp.(float %510, float 0.000000e+00, float 1.000000e+00) %512 = fmul float %430, %465 %513 = fmul float %431, %466 %514 = fadd float %513, %512 %515 = fmul float %432, %467 %516 = fadd float %514, %515 %517 = call float @llvm.AMDGPU.clamp.(float %516, float 0.000000e+00, float 1.000000e+00) %518 = fsub float 1.000000e+00, %517 %519 = call float @llvm.AMDGPU.clamp.(float %518, float 0.000000e+00, float 1.000000e+00) %520 = call float @llvm.maxnum.f32(float %399, float 0x3F1A36E2E0000000) %521 = call float @llvm.pow.f32(float %519, float %520) %522 = fmul float %521, %397 %523 = fmul float %511, %511 %524 = fmul float %522, %523 %525 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %526 = load <16 x i8>, <16 x i8> addrspace(2)* %525, align 16, !invariant.load !0 %527 = call float @llvm.SI.load.const(<16 x i8> %526, i32 32) %528 = fmul float %527, %380 %529 = call float @llvm.SI.load.const(<16 x i8> %526, i32 36) %530 = fmul float %529, %387 %531 = call float @llvm.SI.load.const(<16 x i8> %526, i32 40) %532 = fmul float %531, %394 %533 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %534 = load <16 x i8>, <16 x i8> addrspace(2)* %533, align 16, !invariant.load !0 %535 = call float @llvm.SI.load.const(<16 x i8> %534, i32 32) %536 = fmul float %334, %535 %537 = call float @llvm.SI.load.const(<16 x i8> %534, i32 36) %538 = fmul float %338, %537 %539 = call float @llvm.SI.load.const(<16 x i8> %534, i32 40) %540 = fmul float %342, %539 %541 = fmul float %536, %473 %542 = fmul float %538, %473 %543 = fmul float %540, %473 %544 = fmul float %528, %.0 %545 = fadd float %544, %541 %546 = fmul float %530, %.0 %547 = fadd float %546, %542 %548 = fmul float %532, %.0 %549 = fadd float %548, %543 %550 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %551 = load <16 x i8>, <16 x i8> addrspace(2)* %550, align 16, !invariant.load !0 %552 = call float @llvm.SI.load.const(<16 x i8> %551, i32 32) %553 = fmul float %524, %552 %554 = fadd float %553, %545 %555 = call float @llvm.SI.load.const(<16 x i8> %551, i32 36) %556 = fmul float %524, %555 %557 = fadd float %556, %547 %558 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %559 = load <16 x i8>, <16 x i8> addrspace(2)* %558, align 16, !invariant.load !0 %560 = call float @llvm.SI.load.const(<16 x i8> %559, i32 40) %561 = fmul float %524, %560 %562 = fadd float %561, %549 %563 = call float @llvm.SI.fs.interp(i32 1, i32 3, i32 %6, <2 x i32> %8) %564 = call float @llvm.SI.load.const(<16 x i8> %559, i32 0) %565 = fsub float %563, %564 %566 = call float @llvm.SI.fs.interp(i32 2, i32 3, i32 %6, <2 x i32> %8) %567 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %568 = load <16 x i8>, <16 x i8> addrspace(2)* %567, align 16, !invariant.load !0 %569 = call float @llvm.SI.load.const(<16 x i8> %568, i32 4) %570 = fsub float %566, %569 %571 = call float @llvm.SI.fs.interp(i32 3, i32 3, i32 %6, <2 x i32> %8) %572 = call float @llvm.SI.load.const(<16 x i8> %568, i32 8) %573 = fsub float %571, %572 %574 = fmul float %565, %565 %575 = fmul float %570, %570 %576 = fadd float %575, %574 %577 = fmul float %573, %573 %578 = fadd float %576, %577 %579 = call float @llvm.sqrt.f32(float %578) %580 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %581 = load <16 x i8>, <16 x i8> addrspace(2)* %580, align 16, !invariant.load !0 %582 = call float @llvm.SI.load.const(<16 x i8> %581, i32 144) %583 = call float @llvm.SI.load.const(<16 x i8> %581, i32 128) %584 = fsub float %579, %583 %585 = call float @llvm.SI.load.const(<16 x i8> %581, i32 132) %586 = fdiv float 1.000000e+00, %585, !fpmath !1 %587 = fmul float %584, %586 %588 = call float @llvm.AMDGPU.clamp.(float %587, float 0.000000e+00, float 1.000000e+00) %589 = fmul float %582, %588 %590 = fmul float %589, 0xBFF7154760000000 %591 = call float @llvm.exp2.f32(float %590) %592 = fsub float 1.000000e+00, %591 %593 = fmul float %582, 0xBFF7154760000000 %594 = call float @llvm.exp2.f32(float %593) %595 = fsub float 1.000000e+00, %594 %596 = fdiv float 1.000000e+00, %595, !fpmath !1 %597 = fmul float %592, %596 %598 = call float @llvm.AMDGPU.clamp.(float %597, float 0.000000e+00, float 1.000000e+00) %599 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %600 = load <16 x i8>, <16 x i8> addrspace(2)* %599, align 16, !invariant.load !0 %601 = call float @llvm.SI.load.const(<16 x i8> %600, i32 100) %602 = fcmp ogt float %601, 0.000000e+00 br i1 %602, label %if159, label %endif197 if159: ; preds = %endif122 %603 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %604 = load <16 x i8>, <16 x i8> addrspace(2)* %603, align 16, !invariant.load !0 %605 = call float @llvm.SI.load.const(<16 x i8> %604, i32 96) %606 = call float @llvm.SI.load.const(<16 x i8> %604, i32 0) %607 = call float @llvm.SI.load.const(<16 x i8> %604, i32 4) %608 = call float @llvm.SI.load.const(<16 x i8> %604, i32 8) %609 = fmul float %606, 0.000000e+00 %610 = fadd float %609, %607 %611 = fmul float %608, 0.000000e+00 %612 = fadd float %610, %611 %613 = fadd float %612, %605 %614 = fcmp ole float %613, 0.000000e+00 %615 = uitofp i1 %614 to float %616 = call float @llvm.SI.fs.interp(i32 1, i32 3, i32 %6, <2 x i32> %8) %617 = call float @llvm.SI.fs.interp(i32 2, i32 3, i32 %6, <2 x i32> %8) %618 = call float @llvm.SI.fs.interp(i32 3, i32 3, i32 %6, <2 x i32> %8) %619 = fmul float %616, 0.000000e+00 %620 = fadd float %619, %617 %621 = fmul float %618, 0.000000e+00 %622 = fadd float %620, %621 %623 = fadd float %622, %605 %624 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %625 = load <16 x i8>, <16 x i8> addrspace(2)* %624, align 16, !invariant.load !0 %626 = call float @llvm.SI.load.const(<16 x i8> %625, i32 0) %627 = call float @llvm.SI.fs.interp(i32 1, i32 3, i32 %6, <2 x i32> %8) %628 = fsub float %626, %627 %629 = call float @llvm.SI.load.const(<16 x i8> %625, i32 4) %630 = call float @llvm.SI.fs.interp(i32 2, i32 3, i32 %6, <2 x i32> %8) %631 = fsub float %629, %630 %632 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %633 = load <16 x i8>, <16 x i8> addrspace(2)* %632, align 16, !invariant.load !0 %634 = call float @llvm.SI.load.const(<16 x i8> %633, i32 8) %635 = call float @llvm.SI.fs.interp(i32 3, i32 3, i32 %6, <2 x i32> %8) %636 = fsub float %634, %635 %637 = fmul float %615, 2.000000e+00 %638 = fsub float 1.000000e+00, %637 %639 = fmul float %638, %623 %640 = call float @llvm.minnum.f32(float %639, float 0.000000e+00) %641 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %642 = load <16 x i8>, <16 x i8> addrspace(2)* %641, align 16, !invariant.load !0 %643 = call float @llvm.SI.load.const(<16 x i8> %642, i32 104) %644 = fmul float %643, %579 %645 = fadd float %623, %613 %646 = fmul float %640, %640 %647 = fmul float %628, 0.000000e+00 %648 = fadd float %647, %631 %649 = fmul float %636, 0.000000e+00 %650 = fadd float %648, %649 %651 = fmul float %605, 0.000000e+00 %652 = fadd float %650, %651 %653 = call float @llvm.fabs.f32(float %652) %654 = fdiv float 1.000000e+00, %653, !fpmath !1 %655 = fmul float %646, %654 %656 = fmul float %615, %645 %657 = fsub float %656, %655 %658 = fmul float %644, %657 %659 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %660 = load <16 x i8>, <16 x i8> addrspace(2)* %659, align 16, !invariant.load !0 %661 = call float @llvm.SI.load.const(<16 x i8> %660, i32 100) %662 = fmul float %658, %661 %663 = fmul float %662, 0x3FF7154760000000 %664 = call float @llvm.exp2.f32(float %663) %665 = call float @llvm.AMDGPU.clamp.(float %664, float 0.000000e+00, float 1.000000e+00) %666 = fsub float 1.000000e+00, %665 %667 = call float @llvm.maxnum.f32(float %598, float %666) br label %endif197 endif197: ; preds = %if159, %endif122 %.02 = phi float [ %667, %if159 ], [ %598, %endif122 ] %668 = call float @llvm.AMDGPU.clamp.(float %.02, float 0.000000e+00, float 1.000000e+00) %669 = fsub float 1.000000e+00, %668 %670 = fsub float 1.000000e+00, %668 %671 = fsub float 1.000000e+00, %668 %672 = fmul float %554, %669 %673 = fmul float %557, %670 %674 = fmul float %562, %671 %675 = call float @llvm.AMDGPU.clamp.(float %.02, float 0.000000e+00, float 1.000000e+00) %676 = fsub float 1.000000e+00, %675 %677 = fmul float %73, %676 %678 = bitcast float %5 to i32 %679 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> undef, i32 %678, 10 %680 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %679, float %672, 11 %681 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %680, float %673, 12 %682 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %681, float %674, 13 %683 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %682, float %677, 14 %684 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %683, float %21, 24 ret <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %684 } ; Function Attrs: nounwind readnone declare float @llvm.SI.fs.interp(i32, i32, i32, <2 x i32>) #1 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.sqrt.f32(float) #1 ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.AMDGPU.clamp.(float, float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.maxnum.f32(float, float) #1 ; Function Attrs: nounwind declare void @llvm.AMDGPU.kill(float) #2 ; Function Attrs: nounwind readnone declare float @llvm.pow.f32(float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.exp2.f32(float) #1 ; Function Attrs: nounwind readnone declare float @llvm.minnum.f32(float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.fabs.f32(float) #1 attributes #0 = { "InitialPSInputAddr"="36983" } attributes #1 = { nounwind readnone } attributes #2 = { nounwind } !0 = !{} !1 = !{float 2.500000e+00} SHADER KEY instance_divisors = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} as_es = 0 as_ls = 0 export_prim_id = 0 Vertex Shader as VS: Shader prolog disassembly: v_add_i32_e32 v4, vcc, s12, v0 ; 3208000C v_mov_b32_e32 v5, v4 ; 7E0A0304 v_mov_b32_e32 v6, v4 ; 7E0C0304 v_mov_b32_e32 v7, v4 ; 7E0E0304 v_mov_b32_e32 v8, v4 ; 7E100304 Shader main disassembly: s_load_dwordx4 s[4:7], s[10:11], 0x0 ; C00A0105 00000000 s_load_dwordx4 s[12:15], s[10:11], 0x10 ; C00A0305 00000010 s_load_dwordx4 s[16:19], s[10:11], 0x20 ; C00A0405 00000020 s_load_dwordx4 s[20:23], s[10:11], 0x30 ; C00A0505 00000030 s_load_dwordx4 s[0:3], s[2:3], 0x0 ; C00A0001 00000000 s_waitcnt lgkmcnt(0) ; BF8C007F buffer_load_format_xyzw v[9:12], v4, s[4:7], 0 idxen ; E00C2000 80010904 s_nop 0 ; BF800000 buffer_load_format_xyzw v[13:16], v5, s[12:15], 0 idxen ; E00C2000 80030D05 s_nop 0 ; BF800000 buffer_load_format_xyzw v[3:6], v6, s[16:19], 0 idxen ; E00C2000 80040306 s_waitcnt vmcnt(1) ; BF8C0F71 buffer_load_format_xyzw v[16:19], v7, s[20:23], 0 idxen ; E00C2000 80051007 s_buffer_load_dword s12, s[0:3], 0x98 ; C0220300 00000098 s_load_dwordx4 s[4:7], s[10:11], 0x40 ; C00A0105 00000040 s_buffer_load_dword s16, s[0:3], 0xa8 ; C0220400 000000A8 s_buffer_load_dword s10, s[0:3], 0x90 ; C0220280 00000090 s_buffer_load_dword s17, s[0:3], 0xac ; C0220440 000000AC s_buffer_load_dword s14, s[0:3], 0xa0 ; C0220380 000000A0 s_buffer_load_dword s15, s[0:3], 0xa4 ; C02203C0 000000A4 s_waitcnt lgkmcnt(0) ; BF8C007F v_mov_b32_e32 v0, s12 ; 7E00020C v_mov_b32_e32 v7, s16 ; 7E0E0210 s_buffer_load_dword s13, s[0:3], 0x9c ; C0220340 0000009C s_buffer_load_dword s18, s[0:3], 0x50 ; C0220480 00000050 s_buffer_load_dword s11, s[0:3], 0x94 ; C02202C0 00000094 s_buffer_load_dword s21, s[0:3], 0x60 ; C0220540 00000060 s_buffer_load_dword s25, s[0:3], 0x40 ; C0220640 00000040 s_buffer_load_dword s22, s[0:3], 0x64 ; C0220580 00000064 s_buffer_load_dword s8, s[0:3], 0x68 ; C0220200 00000068 s_waitcnt lgkmcnt(0) ; BF8C007F v_mov_b32_e32 v1, s13 ; 7E02020D s_buffer_load_dword s19, s[0:3], 0x54 ; C02204C0 00000054 s_buffer_load_dword s26, s[0:3], 0x44 ; C0220680 00000044 s_buffer_load_dword s36, s[0:3], 0xbc ; C0220900 000000BC s_buffer_load_dword s40, s[0:3], 0xcc ; C0220A00 000000CC s_buffer_load_dword s44, s[0:3], 0xdc ; C0220B00 000000DC s_buffer_load_dword s28, s[0:3], 0x0 ; C0220700 00000000 s_buffer_load_dword s29, s[0:3], 0x4 ; C0220740 00000004 s_buffer_load_dword s31, s[0:3], 0x10 ; C02207C0 00000010 s_buffer_load_dword s27, s[0:3], 0x48 ; C02206C0 00000048 s_buffer_load_dword s30, s[0:3], 0x8 ; C0220780 00000008 s_buffer_load_dword s32, s[0:3], 0x14 ; C0220800 00000014 s_buffer_load_dword s20, s[0:3], 0x58 ; C0220500 00000058 s_buffer_load_dword s12, s[0:3], 0x28 ; C0220300 00000028 s_buffer_load_dword s33, s[0:3], 0xb0 ; C0220840 000000B0 s_buffer_load_dword s34, s[0:3], 0xb4 ; C0220880 000000B4 s_buffer_load_dword s35, s[0:3], 0xb8 ; C02208C0 000000B8 s_buffer_load_dword s37, s[0:3], 0xc0 ; C0220940 000000C0 s_buffer_load_dword s38, s[0:3], 0xc4 ; C0220980 000000C4 s_buffer_load_dword s39, s[0:3], 0xc8 ; C02209C0 000000C8 s_buffer_load_dword s9, s[0:3], 0x8c ; C0220240 0000008C s_buffer_load_dword s41, s[0:3], 0xd0 ; C0220A40 000000D0 s_buffer_load_dword s42, s[0:3], 0xd4 ; C0220A80 000000D4 s_buffer_load_dword s43, s[0:3], 0xd8 ; C0220AC0 000000D8 s_buffer_load_dword s23, s[0:3], 0x34 ; C02205C0 00000034 s_buffer_load_dword s24, s[0:3], 0x38 ; C0220600 00000038 s_buffer_load_dword s45, s[0:3], 0xe0 ; C0220B40 000000E0 s_buffer_load_dword s46, s[0:3], 0xe4 ; C0220B80 000000E4 s_buffer_load_dword s47, s[0:3], 0xe8 ; C0220BC0 000000E8 s_waitcnt vmcnt(0) lgkmcnt(0) ; BF8C0070 v_mul_f32_e32 v19, s33, v9 ; 0A261221 v_mul_f32_e32 v18, s18, v13 ; 0A241A12 v_mac_f32_e32 v7, s14, v3 ; 2C0E060E v_mac_f32_e32 v0, s10, v16 ; 2C00200A v_mov_b32_e32 v16, s17 ; 7E200211 v_mac_f32_e32 v16, s15, v4 ; 2C20080F buffer_load_format_xyzw v[3:6], v8, s[4:7], 0 idxen ; E00C2000 80010308 v_mac_f32_e32 v1, s11, v17 ; 2C02220B v_mul_f32_e32 v17, s25, v13 ; 0A221A19 v_mul_f32_e32 v13, s21, v13 ; 0A1A1A15 v_mac_f32_e32 v13, s22, v14 ; 2C1A1C16 v_mac_f32_e32 v13, s8, v15 ; 2C1A1E08 s_buffer_load_dword s8, s[0:3], 0xec ; C0220200 000000EC v_mac_f32_e32 v17, s26, v14 ; 2C221C1A v_mac_f32_e32 v18, s19, v14 ; 2C241C13 v_mul_f32_e32 v14, s36, v9 ; 0A1C1224 v_mac_f32_e32 v14, s40, v10 ; 2C1C1428 v_mac_f32_e32 v14, s44, v11 ; 2C1C162C s_buffer_load_dword s10, s[0:3], 0x20 ; C0220280 00000020 s_waitcnt lgkmcnt(0) ; BF8C007F v_mac_f32_e32 v14, s8, v12 ; 2C1C1808 s_buffer_load_dword s8, s[0:3], 0x18 ; C0220200 00000018 s_buffer_load_dword s11, s[0:3], 0x24 ; C02202C0 00000024 exp 15, 32, 0, 0, 0, v0, v1, v7, v16 ; C400020F 10070100 v_mac_f32_e32 v17, s27, v15 ; 2C221E1B v_mac_f32_e32 v18, s20, v15 ; 2C241E14 v_mul_f32_e32 v8, v17, v17 ; 0A102311 v_mac_f32_e32 v8, v18, v18 ; 2C102512 v_mac_f32_e32 v8, v13, v13 ; 2C101B0D v_rsq_f32_e32 v8, v8 ; 7E104908 v_mul_f32_e32 v20, s34, v9 ; 0A281222 v_mul_f32_e32 v21, s35, v9 ; 0A2A1223 v_mul_f32_e32 v15, s28, v9 ; 0A1E121C v_mul_f32_e32 v22, s29, v9 ; 0A2C121D v_mul_f32_e32 v9, s30, v9 ; 0A12121E s_buffer_load_dword s0, s[0:3], 0x30 ; C0220000 00000030 s_waitcnt expcnt(0) ; BF8C0F0F v_mul_f32_e32 v7, v8, v18 ; 0A0E2508 v_mac_f32_e32 v19, s37, v10 ; 2C261425 v_mac_f32_e32 v20, s38, v10 ; 2C281426 v_mac_f32_e32 v21, s39, v10 ; 2C2A1427 v_mac_f32_e32 v15, s31, v10 ; 2C1E141F v_mac_f32_e32 v22, s32, v10 ; 2C2C1420 s_waitcnt lgkmcnt(0) ; BF8C007F v_mac_f32_e32 v9, s8, v10 ; 2C121408 v_mac_f32_e32 v19, s41, v11 ; 2C261629 v_mac_f32_e32 v20, s42, v11 ; 2C28162A v_mac_f32_e32 v21, s43, v11 ; 2C2A162B v_mac_f32_e32 v15, s10, v11 ; 2C1E160A v_mac_f32_e32 v22, s11, v11 ; 2C2C160B v_mac_f32_e32 v9, s12, v11 ; 2C12160C v_mac_f32_e32 v15, s0, v12 ; 2C1E1800 v_mac_f32_e32 v22, s23, v12 ; 2C2C1817 v_mac_f32_e32 v9, s24, v12 ; 2C121818 v_mac_f32_e32 v19, s45, v12 ; 2C26182D v_mac_f32_e32 v20, s46, v12 ; 2C28182E v_mac_f32_e32 v21, s47, v12 ; 2C2A182F s_waitcnt vmcnt(0) ; BF8C0F70 v_mul_f32_e32 v0, s28, v3 ; 0A00061C v_mul_f32_e32 v1, s29, v3 ; 0A02061D v_mac_f32_e32 v0, s31, v4 ; 2C00081F v_mul_f32_e32 v3, s30, v3 ; 0A06061E v_mac_f32_e32 v1, s32, v4 ; 2C020820 v_mac_f32_e32 v0, s10, v5 ; 2C000A0A v_mac_f32_e32 v3, s8, v4 ; 2C060808 v_mac_f32_e32 v1, s11, v5 ; 2C020A0B v_mul_f32_e32 v4, v0, v0 ; 0A080100 v_mac_f32_e32 v3, s12, v5 ; 2C060A0C v_mac_f32_e32 v4, v1, v1 ; 2C080301 v_mac_f32_e32 v4, v3, v3 ; 2C080703 v_rsq_f32_e32 v4, v4 ; 7E084904 v_mul_f32_e32 v5, v8, v17 ; 0A0A2308 v_mul_f32_e32 v8, v8, v13 ; 0A101B08 v_mul_f32_e32 v6, s9, v6 ; 0A0C0C09 v_mul_f32_e32 v1, v4, v1 ; 0A020304 v_mul_f32_e32 v0, v4, v0 ; 0A000104 v_mul_f32_e32 v3, v4, v3 ; 0A060704 v_mul_f32_e32 v4, v1, v8 ; 0A081101 v_mul_f32_e32 v10, v3, v5 ; 0A140B03 v_mul_f32_e32 v11, v0, v7 ; 0A160F00 v_mad_f32 v4, v7, v3, -v4 ; D1C10004 84120707 v_mad_f32 v10, v8, v0, -v10 ; D1C1000A 842A0108 v_mul_f32_e32 v4, v6, v4 ; 0A080906 v_mad_f32 v11, v5, v1, -v11 ; D1C1000B 842E0305 v_mul_f32_e32 v10, v6, v10 ; 0A141506 v_mul_f32_e32 v6, v6, v11 ; 0A0C1706 exp 15, 33, 0, 0, 0, v0, v4, v5, v1 ; C400021F 01050400 exp 15, 34, 0, 0, 0, v10, v7, v3, v6 ; C400022F 0603070A exp 15, 35, 0, 0, 0, v8, v15, v22, v9 ; C400023F 09160F08 exp 15, 12, 0, 1, 0, v19, v20, v21, v14 ; C40008CF 0E151413 s_waitcnt expcnt(0) ; BF8C0F0F Shader epilog disassembly: s_endpgm ; BF810000 *** SHADER STATS *** SGPRS: 96 VGPRS: 24 Spilled SGPRs: 0 Spilled VGPRs: 0 Code Size: 892 bytes LDS: 0 blocks Scratch: 0 bytes per wave Max Waves: 8 ******************** SHADER KEY prolog.color_two_side = 0 prolog.flatshade_colors = 0 prolog.poly_stipple = 0 prolog.force_persp_sample_interp = 0 prolog.force_linear_sample_interp = 0 prolog.force_persp_center_interp = 0 prolog.force_linear_center_interp = 0 prolog.bc_optimize_for_persp = 0 prolog.bc_optimize_for_linear = 0 epilog.spi_shader_col_format = 0x4 epilog.color_is_int8 = 0x0 epilog.last_cbuf = 0 epilog.alpha_func = 7 epilog.alpha_to_one = 0 epilog.poly_line_smoothing = 0 epilog.clamp_color = 0 Pixel Shader: Shader main disassembly: s_mov_b64 s[0:1], exec ; BE80017E s_wqm_b64 exec, exec ; BEFE077E s_mov_b32 m0, s11 ; BEFC000B v_interp_p1_f32 v10, v2, 3, 1, [m0] ; D4280702 v_interp_p2_f32 v10, [v10], v3, 3, 1, [m0] ; D4290703 v_interp_p1_f32 v11, v2, 0, 2, [m0] ; D42C0802 v_interp_p2_f32 v11, [v11], v3, 0, 2, [m0] ; D42D0803 v_interp_p1_f32 v12, v2, 1, 2, [m0] ; D4300902 v_interp_p2_f32 v12, [v12], v3, 1, 2, [m0] ; D4310903 v_interp_p1_f32 v18, v2, 2, 2, [m0] ; D4480A02 v_interp_p2_f32 v18, [v18], v3, 2, 2, [m0] ; D4490A03 v_interp_p1_f32 v19, v2, 3, 2, [m0] ; D44C0B02 v_interp_p2_f32 v19, [v19], v3, 3, 2, [m0] ; D44D0B03 v_interp_p1_f32 v20, v2, 0, 3, [m0] ; D4500C02 s_load_dwordx4 s[12:15], s[2:3], 0x0 ; C00A0301 00000000 v_interp_p2_f32 v20, [v20], v3, 0, 3, [m0] ; D4510C03 v_interp_p1_f32 v1, v2, 1, 3, [m0] ; D4040D02 v_interp_p2_f32 v1, [v1], v3, 1, 3, [m0] ; D4050D03 v_interp_p1_f32 v0, v2, 2, 3, [m0] ; D4000E02 v_interp_p2_f32 v0, [v0], v3, 2, 3, [m0] ; D4010E03 v_interp_p1_f32 v8, v2, 3, 3, [m0] ; D4200F02 s_load_dwordx8 s[16:23], s[4:5], 0x80 ; C00E0402 00000080 s_load_dwordx4 s[32:35], s[4:5], 0xb0 ; C00A0802 000000B0 v_interp_p2_f32 v8, [v8], v3, 3, 3, [m0] ; D4210F03 v_interp_p1_f32 v21, v2, 2, 1, [m0] ; D4540602 v_interp_p2_f32 v21, [v21], v3, 2, 1, [m0] ; D4550603 v_interp_p1_f32 v32, v2, 2, 0, [m0] ; D4800202 s_waitcnt lgkmcnt(0) ; BF8C007F s_buffer_load_dword s6, s[12:15], 0x4 ; C0220186 00000004 v_interp_p2_f32 v32, [v32], v3, 2, 0, [m0] ; D4810203 v_interp_p1_f32 v33, v2, 3, 0, [m0] ; D4840302 v_interp_p2_f32 v33, [v33], v3, 3, 0, [m0] ; D4850303 s_buffer_load_dword s3, s[12:15], 0x0 ; C02200C6 00000000 s_buffer_load_dword s2, s[12:15], 0x8 ; C0220086 00000008 image_sample v[4:7], v[32:33], s[16:23], s[32:35] dmask:0xf ; F0800F00 01040420 s_load_dwordx8 s[24:31], s[4:5], 0x140 ; C00E0602 00000140 s_load_dwordx4 s[16:19], s[4:5], 0x170 ; C00A0402 00000170 v_interp_p1_f32 v14, v2, 0, 0, [m0] ; D4380002 v_interp_p2_f32 v14, [v14], v3, 0, 0, [m0] ; D4390003 v_interp_p1_f32 v15, v2, 1, 0, [m0] ; D43C0102 s_waitcnt lgkmcnt(0) ; BF8C007F v_mov_b32_e32 v9, s6 ; 7E120206 v_interp_p2_f32 v15, [v15], v3, 1, 0, [m0] ; D43D0103 s_and_b64 exec, exec, s[0:1] ; 86FE007E image_sample v[22:25], v[14:15], s[24:31], s[16:19] dmask:0xf ; F0800F00 0086160E s_load_dwordx4 s[44:47], s[4:5], 0xf0 ; C00A0B02 000000F0 s_load_dwordx8 s[36:43], s[4:5], 0xc0 ; C00E0902 000000C0 s_load_dwordx8 s[28:35], s[4:5], 0x100 ; C00E0702 00000100 s_load_dwordx4 s[48:51], s[4:5], 0x130 ; C00A0C02 00000130 s_buffer_load_dword s0, s[12:15], 0xa0 ; C0220006 000000A0 s_waitcnt vmcnt(0) ; BF8C0F70 v_mad_f32 v4, -v25, v4, v4 ; D1C10004 24120919 s_waitcnt lgkmcnt(0) ; BF8C007F image_sample v[28:31], v[32:33], s[36:43], s[44:47] dmask:0xf ; F0800F00 01691C20 v_mac_f32_e32 v4, v25, v22 ; 2C082D19 image_sample v[14:17], v[14:15], s[28:35], s[48:51] dmask:0xf ; F0800F00 01870E0E s_buffer_load_dword s33, s[12:15], 0x150 ; C0220846 00000150 s_buffer_load_dword s34, s[12:15], 0x154 ; C0220886 00000154 s_buffer_load_dword s35, s[12:15], 0x158 ; C02208C6 00000158 s_buffer_load_dword s1, s[12:15], 0xa4 ; C0220046 000000A4 v_mad_f32 v5, -v25, v5, v5 ; D1C10005 24160B19 s_waitcnt lgkmcnt(0) ; BF8C007F v_mul_f32_e32 v27, s33, v4 ; 0A360821 s_load_dwordx8 s[16:23], s[4:5], 0x40 ; C00E0402 00000040 s_load_dwordx4 s[24:27], s[4:5], 0x70 ; C00A0602 00000070 s_buffer_load_dword s4, s[12:15], 0xa8 ; C0220106 000000A8 v_mad_f32 v6, -v25, v6, v6 ; D1C10006 241A0D19 v_mad_f32 v4, s33, v4, v27 ; D1C10004 046E0821 v_mad_f32 v27, -2.0, v27, 1.0 ; D1C1001B 03CA36F5 v_mac_f32_e32 v5, v25, v23 ; 2C0A2F19 v_mac_f32_e32 v6, v25, v24 ; 2C0C3119 s_waitcnt vmcnt(1) ; BF8C0F71 v_mad_f32 v25, -v25, v31, v31 ; D1C10019 247E3F19 v_mul_f32_e32 v31, s34, v5 ; 0A3E0A22 v_sub_f32_e64 v22, 1.0, s0 ; D1020016 000000F2 v_add_f32_e32 v27, v27, v27 ; 0236371B v_mad_f32 v5, s34, v5, v31 ; D1C10005 047E0A22 v_mad_f32 v31, -2.0, v31, 1.0 ; D1C1001F 03CA3EF5 v_mad_f32 v22, -v27, v22, 1.0 ; D1C10016 23CA2D1B v_mul_f32_e32 v27, s35, v6 ; 0A360C23 v_mad_f32 v6, s35, v6, v27 ; D1C10006 046E0C23 v_mad_f32 v27, -2.0, v27, 1.0 ; D1C1001B 03CA36F5 s_buffer_load_dword s5, s[12:15], 0xac ; C0220146 000000AC v_sub_f32_e64 v23, 1.0, s1 ; D1020017 000002F2 v_add_f32_e32 v31, v31, v31 ; 023E3F1F v_mad_f32 v23, -v31, v23, 1.0 ; D1C10017 23CA2F1F v_mul_f32_e32 v31, s0, v4 ; 0A3E0800 v_cmp_le_f32_e32 vcc, 0.5, v4 ; 7C8608F0 s_waitcnt lgkmcnt(0) ; BF8C007F v_sub_f32_e64 v24, 1.0, s4 ; D1020018 000008F2 v_add_f32_e32 v27, v27, v27 ; 0236371B v_mad_f32 v24, -v27, v24, 1.0 ; D1C10018 23CA311B v_mul_f32_e32 v27, s1, v5 ; 0A360A01 v_mac_f32_e32 v31, s0, v4 ; 2C3E0800 v_cndmask_b32_e64 v35, 0, 1.0, vcc ; D1000023 01A9E480 v_mul_f32_e32 v34, s4, v6 ; 0A440C04 v_mad_f32 v31, -v35, v31, v31 ; D1C1001F 247E3F23 s_buffer_load_dword s7, s[12:15], 0xb0 ; C02201C6 000000B0 v_mac_f32_e32 v27, s1, v5 ; 2C360A01 v_mac_f32_e32 v31, v35, v22 ; 2C3E2D23 v_mad_f32 v22, -v35, v27, v27 ; D1C10016 246E3723 s_buffer_load_dword s8, s[12:15], 0xb4 ; C0220206 000000B4 v_mac_f32_e32 v34, s4, v6 ; 2C440C04 s_waitcnt vmcnt(0) ; BF8C0F70 v_mul_f32_e32 v26, s5, v14 ; 0A341C05 v_mac_f32_e32 v22, v35, v23 ; 2C2C2F23 v_mad_f32 v23, -v35, v34, v34 ; D1C10017 248A4523 s_buffer_load_dword s9, s[12:15], 0xb8 ; C0220246 000000B8 v_mad_f32 v14, -v14, s5, 1.0 ; D1C1000E 23C80B0E v_mac_f32_e32 v23, v35, v24 ; 2C2E3123 v_mad_f32 v24, -v26, v4, v4 ; D1C10018 2412091A v_mad_f32 v4, -v4, v14, 1.0 ; D1C10004 23CA1D04 v_mad_f32 v27, -v26, v5, v5 ; D1C1001B 24160B1A v_mad_f32 v5, -v5, v14, 1.0 ; D1C10005 23CA1D05 v_mad_f32 v4, -v31, v26, v4 ; D1C10004 2412351F v_mad_f32 v14, -v6, v14, 1.0 ; D1C1000E 23CA1D06 v_mad_f32 v5, -v22, v26, v5 ; D1C10005 24163516 v_mac_f32_e32 v27, v26, v22 ; 2C362D1A v_add_f32_e32 v4, v4, v4 ; 02080904 s_waitcnt lgkmcnt(0) ; BF8C007F v_sub_f32_e64 v22, 1.0, s7 ; D1020016 00000EF2 v_mad_f32 v14, -v23, v26, v14 ; D1C1000E 243A3517 v_mad_f32 v4, -v4, v22, 1.0 ; D1C10004 23CA2D04 v_add_f32_e32 v5, v5, v5 ; 020A0B05 v_sub_f32_e64 v22, 1.0, s8 ; D1020016 000010F2 v_mac_f32_e32 v24, v26, v31 ; 2C303F1A v_mad_f32 v5, -v5, v22, 1.0 ; D1C10005 23CA2D05 v_add_f32_e32 v14, v14, v14 ; 021C1D0E v_sub_f32_e64 v22, 1.0, s9 ; D1020016 000012F2 v_mad_f32 v6, -v26, v6, v6 ; D1C10006 241A0D1A v_mad_f32 v14, -v14, v22, 1.0 ; D1C1000E 23CA2D0E v_mul_f32_e32 v22, s7, v24 ; 0A2C3007 v_cmp_le_f32_e32 vcc, 0.5, v24 ; 7C8630F0 v_mac_f32_e32 v6, v26, v23 ; 2C0C2F1A v_mac_f32_e32 v22, s7, v24 ; 2C2C3007 v_cndmask_b32_e64 v23, 0, 1.0, vcc ; D1000017 01A9E480 v_mad_f32 v22, -v23, v22, v22 ; D1C10016 245A2D17 v_mac_f32_e32 v22, v23, v4 ; 2C2C0917 v_mul_f32_e32 v4, s8, v27 ; 0A083608 v_mac_f32_e32 v4, s8, v27 ; 2C083608 s_buffer_load_dword s28, s[12:15], 0xbc ; C0220706 000000BC v_mad_f32 v4, -v23, v4, v4 ; D1C10004 24120917 v_mac_f32_e32 v4, v23, v5 ; 2C080B17 v_mul_f32_e32 v5, s9, v6 ; 0A0A0C09 v_mac_f32_e32 v5, s9, v6 ; 2C0A0C09 s_buffer_load_dword s29, s[12:15], 0xc0 ; C0220746 000000C0 v_mad_f32 v5, -v23, v5, v5 ; D1C10005 24160B17 s_buffer_load_dword s30, s[12:15], 0xc4 ; C0220786 000000C4 v_mac_f32_e32 v5, v23, v14 ; 2C0A1D17 s_waitcnt lgkmcnt(0) ; BF8C007F v_mul_f32_e32 v14, s28, v15 ; 0A1C1E1C v_mad_f32 v15, -v15, s28, 1.0 ; D1C1000F 23C8390F s_buffer_load_dword s31, s[12:15], 0xc8 ; C02207C6 000000C8 v_mad_f32 v23, -v14, v24, v24 ; D1C10017 2462310E v_mad_f32 v24, -v24, v15, 1.0 ; D1C10018 23CA1F18 v_mac_f32_e32 v23, v14, v22 ; 2C2E2D0E v_mad_f32 v22, -v22, v14, v24 ; D1C10016 24621D16 v_mad_f32 v24, -v14, v27, v27 ; D1C10018 246E370E v_mad_f32 v26, -v27, v15, 1.0 ; D1C1001A 23CA1F1B v_mad_f32 v15, -v6, v15, 1.0 ; D1C1000F 23CA1F06 v_mad_f32 v6, -v14, v6, v6 ; D1C10006 241A0D0E v_mac_f32_e32 v24, v14, v4 ; 2C30090E v_mad_f32 v4, -v4, v14, v26 ; D1C10004 246A1D04 v_mac_f32_e32 v6, v14, v5 ; 2C0C0B0E v_mad_f32 v5, -v5, v14, v15 ; D1C10005 243E1D05 v_add_f32_e32 v14, v22, v22 ; 021C2D16 v_sub_f32_e64 v15, 1.0, s29 ; D102000F 00003AF2 v_mad_f32 v14, -v14, v15, 1.0 ; D1C1000E 23CA1F0E v_add_f32_e32 v4, v4, v4 ; 02080904 v_sub_f32_e64 v15, 1.0, s30 ; D102000F 00003CF2 v_mad_f32 v4, -v4, v15, 1.0 ; D1C10004 23CA1F04 v_add_f32_e32 v5, v5, v5 ; 020A0B05 s_waitcnt lgkmcnt(0) ; BF8C007F v_sub_f32_e64 v15, 1.0, s31 ; D102000F 00003EF2 v_mad_f32 v5, -v5, v15, 1.0 ; D1C10005 23CA1F05 v_mul_f32_e32 v15, s29, v23 ; 0A1E2E1D v_cmp_le_f32_e32 vcc, 0.5, v23 ; 7C862EF0 v_mac_f32_e32 v15, s29, v23 ; 2C1E2E1D v_cndmask_b32_e64 v22, 0, 1.0, vcc ; D1000016 01A9E480 v_mad_f32 v15, -v22, v15, v15 ; D1C1000F 243E1F16 s_buffer_load_dword s32, s[12:15], 0xcc ; C0220806 000000CC v_mac_f32_e32 v15, v22, v14 ; 2C1E1D16 v_mul_f32_e32 v14, s30, v24 ; 0A1C301E v_mac_f32_e32 v14, s30, v24 ; 2C1C301E v_mad_f32 v14, -v22, v14, v14 ; D1C1000E 243A1D16 v_mac_f32_e32 v14, v22, v4 ; 2C1C0916 v_mul_f32_e32 v4, s31, v6 ; 0A080C1F v_mac_f32_e32 v4, s31, v6 ; 2C080C1F v_mad_f32 v26, -v22, v4, v4 ; D1C1001A 24120916 s_waitcnt lgkmcnt(0) ; BF8C007F v_mul_f32_e32 v16, s32, v16 ; 0A202020 v_mad_f32 v4, -v16, v23, v23 ; D1C10004 245E2F10 v_mac_f32_e32 v26, v22, v5 ; 2C340B16 v_mad_f32 v5, -v16, v24, v24 ; D1C10005 24623110 v_mad_f32 v6, -v16, v6, v6 ; D1C10006 241A0D10 v_mac_f32_e32 v4, v16, v15 ; 2C081F10 v_mac_f32_e32 v5, v16, v14 ; 2C0A1D10 v_mac_f32_e32 v6, v16, v26 ; 2C0C3510 v_max3_f32 v26, v4, v5, v6 ; D1D3001A 041A0B04 v_mov_b32_e32 v14, 0x3c23d70a ; 7E1C02FF 3C23D70A v_cmp_lt_f32_e32 vcc, v14, v26 ; 7C82350E v_add_f32_e64 v31, v25, 0 clamp ; D101801F 00010119 v_mov_b32_e32 v16, 1.0 ; 7E2002F2 v_mov_b32_e32 v15, 1.0 ; 7E1E02F2 v_mov_b32_e32 v14, 1.0 ; 7E1C02F2 image_sample v[22:25], v[32:33], s[16:23], s[24:27] dmask:0xf ; F0800F00 00C41620 s_and_saveexec_b64 s[0:1], vcc ; BE80206A s_xor_b64 s[0:1], exec, s[0:1] ; 8880007E s_waitcnt vmcnt(0) ; BF8C0F70 v_rcp_f32_e32 v14, v26 ; 7E1C451A v_mul_f32_e32 v15, v14, v4 ; 0A1E090E v_mul_f32_e32 v24, v14, v5 ; 0A300B0E v_mul_f32_e32 v14, v14, v6 ; 0A1C0D0E v_add_f32_e64 v16, v15, 0 clamp ; D1018010 0001010F v_add_f32_e64 v15, v24, 0 clamp ; D101800F 00010118 v_add_f32_e64 v14, v14, 0 clamp ; D101800E 0001010E s_or_b64 exec, exec, s[0:1] ; 87FE007E v_add_f32_e32 v33, v28, v28 ; 0242391C v_mad_f32 v28, 2.0, v28, -1.0 ; D1C1001C 03CE38F4 v_add_f32_e32 v34, v29, v29 ; 02443B1D v_mad_f32 v29, 2.0, v29, -1.0 ; D1C1001D 03CE3AF4 v_mad_f32 v28, v33, v28, -v28 ; D1C1001C 84723921 v_add_f32_e32 v36, v30, v30 ; 02483D1E v_mad_f32 v30, 2.0, v30, -1.0 ; D1C1001E 03CE3CF4 v_mac_f32_e32 v28, v29, v29 ; 2C383B1D v_mac_f32_e32 v28, v30, v30 ; 2C383D1E v_rsq_f32_e32 v28, v28 ; 7E38491C v_sub_f32_e32 v26, s3, v1 ; 04340203 v_sub_f32_e32 v24, s6, v0 ; 04300006 v_mul_f32_e32 v32, v26, v26 ; 0A40351A v_sub_f32_e32 v27, s2, v8 ; 04361002 v_mac_f32_e32 v32, v24, v24 ; 2C403118 v_mac_f32_e32 v32, v27, v27 ; 2C40371B v_mad_f32 v35, v33, v28, -v28 ; D1C10023 84723921 v_mad_f32 v34, v34, v28, -v28 ; D1C10022 84723922 v_mad_f32 v33, v36, v28, -v28 ; D1C10021 84723924 v_rsq_f32_e32 v28, v32 ; 7E384920 s_buffer_load_dword s0, s[12:15], 0x160 ; C0220006 00000160 s_buffer_load_dword s4, s[12:15], 0x30 ; C0220106 00000030 s_buffer_load_dword s7, s[12:15], 0x34 ; C02201C6 00000034 v_mul_f32_e32 v29, v28, v26 ; 0A3A351C s_buffer_load_dword s5, s[12:15], 0x38 ; C0220146 00000038 v_mul_f32_e32 v30, v28, v24 ; 0A3C311C v_mul_f32_e32 v32, v28, v27 ; 0A40371C v_mul_f32_e32 v28, v29, v21 ; 0A382B1D v_mac_f32_e32 v28, v30, v12 ; 2C38191E v_mac_f32_e32 v28, v32, v20 ; 2C382920 v_mul_f32_e32 v23, v23, v23 ; 0A2E2F17 v_mac_f32_e32 v31, 0x3727c5ac, v28 ; 2C3E38FF 3727C5AC v_mul_f32_e32 v28, 0x41800000, v23 ; 0A382EFF 41800000 s_waitcnt lgkmcnt(0) ; BF8C007F v_cmp_gt_f32_e32 vcc, s0, v7 ; 7C880E00 v_mov_b32_e32 v23, 0 ; 7E2E0280 v_cndmask_b32_e64 v36, 0, -1.0, vcc ; D1000024 01A9E680 v_cmpx_le_f32_e32 vcc, 0, v36 ; 7CA64880 s_cbranch_execnz BB0_3 ; BF890000 exp 0, 9, 0, 1, 1, v0, v0, v0, v0 ; C4001890 00000000 s_endpgm ; BF810000 s_mov_b32 m0, s11 ; BEFC000B v_interp_p1_f32 v36, v2, 0, 1, [m0] ; D4900402 v_interp_p2_f32 v36, [v36], v3, 0, 1, [m0] ; D4910403 v_interp_p1_f32 v2, v2, 1, 1, [m0] ; D4080502 v_interp_p2_f32 v2, [v2], v3, 1, 1, [m0] ; D4090503 v_mul_f32_e32 v3, v35, v36 ; 0A064923 v_mac_f32_e32 v3, v34, v2 ; 2C060522 v_mul_f32_e32 v2, v35, v10 ; 0A041523 v_mac_f32_e32 v2, v34, v11 ; 2C041722 v_mul_f32_e32 v10, v35, v18 ; 0A142523 v_mac_f32_e32 v3, v33, v21 ; 2C062B21 v_mac_f32_e32 v10, v34, v19 ; 2C142722 v_mac_f32_e32 v2, v33, v12 ; 2C041921 v_mul_f32_e32 v11, v3, v3 ; 0A160703 v_mac_f32_e32 v10, v33, v20 ; 2C142921 v_mac_f32_e32 v11, v2, v2 ; 2C160502 v_mac_f32_e32 v11, v10, v10 ; 2C16150A s_buffer_load_dword s0, s[12:15], 0x10 ; C0220006 00000010 v_rsq_f32_e32 v18, v11 ; 7E24490B s_buffer_load_dword s1, s[12:15], 0x14 ; C0220046 00000014 s_buffer_load_dword s8, s[12:15], 0x18 ; C0220206 00000018 v_cmp_lt_f32_e32 vcc, 0, v31 ; 7C823E80 v_mul_f32_e32 v11, v18, v2 ; 0A160512 s_waitcnt lgkmcnt(0) ; BF8C007F v_mul_f32_e64 v2, s0, s0 ; D1050002 00000000 v_mac_f32_e64 v2, s1, s1 ; D1160002 00000201 v_mul_f32_e32 v12, v18, v3 ; 0A180712 v_mul_f32_e32 v3, v29, v29 ; 0A063B1D v_mac_f32_e64 v2, s8, s8 ; D1160002 00001008 v_mac_f32_e32 v3, v30, v30 ; 2C063D1E v_rsq_f32_e32 v2, v2 ; 7E044902 v_mac_f32_e32 v3, v32, v32 ; 2C064120 v_rsq_f32_e32 v3, v3 ; 7E064903 v_mul_f32_e32 v10, v18, v10 ; 0A141512 v_mul_f32_e32 v34, s0, v2 ; 0A440400 v_mul_f32_e32 v33, s1, v2 ; 0A420401 v_mul_f32_e32 v20, v3, v29 ; 0A283B03 v_mul_f32_e32 v29, v34, v12 ; 0A3A1922 v_mul_f32_e32 v19, v3, v30 ; 0A263D03 v_mul_f32_e32 v18, v3, v32 ; 0A244103 v_mul_f32_e32 v21, s8, v2 ; 0A2A0408 v_mad_f32 v3, v33, v11, v29 ; D1C10003 04761721 v_mac_f32_e32 v3, v21, v10 ; 2C061515 v_cmp_lt_f32_e64 s[0:1], 0, v28 ; D0410000 00023880 v_mul_f32_e32 v30, v33, v11 ; 0A3C1721 v_mul_f32_e32 v32, v21, v10 ; 0A401515 v_max_f32_e32 v2, 0, v3 ; 16040680 s_and_b64 s[8:9], vcc, s[0:1] ; 8688006A s_and_saveexec_b64 s[0:1], s[8:9] ; BE802008 s_xor_b64 s[0:1], exec, s[0:1] ; 8880007E s_cbranch_execz BB0_5 ; BF880000 v_sub_f32_e64 v23, -v29, v30 ; D1020017 20023D1D v_subrev_f32_e32 v23, v32, v23 ; 062E2F20 v_mul_f32_e32 v29, v12, v23 ; 0A3A2F0C v_mul_f32_e32 v30, v11, v23 ; 0A3C2F0B v_mul_f32_e32 v32, v10, v23 ; 0A402F0A v_mac_f32_e32 v29, v12, v23 ; 2C3A2F0C v_mac_f32_e32 v32, v10, v23 ; 2C402F0A v_mac_f32_e32 v30, v11, v23 ; 2C3C2F0B v_sub_f32_e64 v23, -v29, v34 ; D1020017 2002451D v_sub_f32_e64 v29, -v30, v33 ; D102001D 2002431E v_mul_f32_e32 v23, v23, v20 ; 0A2E2917 v_sub_f32_e64 v21, -v32, v21 ; D1020015 20022B20 v_mac_f32_e32 v23, v29, v19 ; 2C2E271D v_mac_f32_e32 v23, v21, v18 ; 2C2E2515 v_max_f32_e32 v21, 0x3727c5ac, v23 ; 162A2EFF 3727C5AC v_add_f32_e32 v23, v2, v2 ; 022E0502 v_sqrt_f32_e32 v23, v23 ; 7E2E4F17 v_add_f32_e64 v23, v23, 0 clamp ; D1018017 00010117 v_mul_f32_e32 v21, v23, v21 ; 0A2A2B17 v_log_f32_e32 v21, v21 ; 7E2A4315 v_add_f32_e32 v23, 0x3c23d70a, v28 ; 022E38FF 3C23D70A v_mul_f32_e32 v23, 0x42800000, v23 ; 0A2E2EFF 42800000 v_max_f32_e32 v23, 0x38d1b717, v23 ; 162E2EFF 38D1B717 v_mul_legacy_f32_e32 v21, v23, v21 ; 082A2B17 v_exp_f32_e32 v21, v21 ; 7E2A4115 v_mul_f32_e32 v23, v31, v21 ; 0A2E2B1F s_or_b64 exec, exec, s[0:1] ; 87FE007E v_mul_f32_e32 v12, v20, v12 ; 0A181914 v_mac_f32_e32 v12, v19, v11 ; 2C181713 v_mac_f32_e32 v12, v18, v10 ; 2C181512 v_add_f32_e64 v10, v12, 0 clamp ; D101800A 0001010C v_sub_f32_e32 v10, 1.0, v10 ; 041414F2 v_add_f32_e64 v10, v10, 0 clamp ; D101800A 0001010A v_log_f32_e32 v10, v10 ; 7E14430A v_mad_f32 v21, v28, 0.5, 2.0 ; D1C10015 03D1E11C v_max_f32_e32 v11, 0x38d1b717, v21 ; 16162AFF 38D1B717 s_buffer_load_dword s11, s[12:15], 0x80 ; C02202C6 00000080 v_mul_legacy_f32_e32 v10, v11, v10 ; 0814150B v_subrev_f32_e32 v11, s3, v1 ; 06160203 v_subrev_f32_e32 v12, s6, v0 ; 06180006 v_mul_f32_e32 v11, v11, v11 ; 0A16170B s_buffer_load_dword s6, s[12:15], 0x84 ; C0220186 00000084 v_subrev_f32_e32 v18, s2, v8 ; 06241002 v_mac_f32_e32 v11, v12, v12 ; 2C16190C v_mac_f32_e32 v11, v18, v18 ; 2C162512 v_sqrt_f32_e32 v12, v11 ; 7E184F0B s_waitcnt lgkmcnt(0) ; BF8C007F v_subrev_f32_e32 v11, s11, v12 ; 0616180B s_buffer_load_dword s11, s[12:15], 0x90 ; C02202C6 00000090 v_rcp_f32_e32 v19, s6 ; 7E264406 v_mov_b32_e32 v18, 0xbfb8aa3b ; 7E2402FF BFB8AA3B s_buffer_load_dword s9, s[12:15], 0x64 ; C0220246 00000064 s_buffer_load_dword s8, s[12:15], 0x20 ; C0220206 00000020 v_mul_f32_e32 v11, v19, v11 ; 0A161713 s_waitcnt lgkmcnt(0) ; BF8C007F v_mul_f32_e32 v19, s11, v18 ; 0A26240B v_exp_f32_e32 v19, v19 ; 7E264113 v_sub_f32_e32 v19, 1.0, v19 ; 042626F2 v_add_f32_e64 v11, v11, 0 clamp ; D101800B 0001010B v_rcp_f32_e32 v19, v19 ; 7E264513 v_mul_f32_e32 v11, s11, v11 ; 0A16160B s_buffer_load_dword s1, s[12:15], 0x24 ; C0220046 00000024 s_buffer_load_dword s0, s[12:15], 0x28 ; C0220006 00000028 v_mul_f32_e32 v11, v18, v11 ; 0A161712 v_exp_f32_e32 v11, v11 ; 7E16410B v_sub_f32_e32 v3, 0x3eaa7efa, v3 ; 040606FF 3EAA7EFA v_mad_f32 v11, -v11, v19, v19 ; D1C1000B 244E270B v_cmp_ngt_f32_e64 s[16:17], s9, 0 ; D04B0010 00010009 v_add_f32_e64 v3, v3, 0 clamp ; D1018003 00010103 v_exp_f32_e32 v10, v10 ; 7E14410A v_add_f32_e64 v11, v11, 0 clamp ; D101800B 0001010B s_and_b64 vcc, exec, s[16:17] ; 86EA107E s_waitcnt lgkmcnt(0) ; BF8C007F s_cbranch_vccnz BB0_7 ; BF870000 s_buffer_load_dword s6, s[12:15], 0x60 ; C0220186 00000060 v_mad_f32 v9, 0, s3, v9 ; D1C10009 04240680 v_mac_f32_e64 v9, s2, 0 ; D1160009 00010002 v_mac_f32_e32 v0, 0, v1 ; 2C000280 v_mac_f32_e32 v24, 0, v26 ; 2C303480 s_waitcnt lgkmcnt(0) ; BF8C007F v_add_f32_e32 v1, s6, v9 ; 02021206 v_mac_f32_e32 v24, 0, v27 ; 2C303680 v_cmp_ge_f32_e32 vcc, 0, v1 ; 7C8C0280 v_mac_f32_e32 v0, 0, v8 ; 2C001080 v_cndmask_b32_e64 v9, 0, 1.0, vcc ; D1000009 01A9E480 v_mac_f32_e64 v24, s6, 0 ; D1160018 00010006 s_buffer_load_dword s11, s[12:15], 0x68 ; C02202C6 00000068 v_add_f32_e32 v0, s6, v0 ; 02000006 v_mul_f32_e32 v8, -2.0, v9 ; 0A1012F5 v_rcp_f32_e64 v18, |v24| ; D1620112 00000118 v_mad_f32 v8, v0, v8, v0 ; D1C10008 04021100 v_min_f32_e32 v8, 0, v8 ; 14101080 v_add_f32_e32 v0, v1, v0 ; 02000101 v_mul_f32_e32 v1, v8, v8 ; 0A021108 v_mul_f32_e32 v1, v18, v1 ; 0A020312 s_waitcnt lgkmcnt(0) ; BF8C007F v_mul_f32_e32 v12, s11, v12 ; 0A18180B v_mad_f32 v0, v9, v0, -v1 ; D1C10000 84060109 v_mul_f32_e32 v0, v0, v12 ; 0A001900 v_mul_f32_e32 v0, s9, v0 ; 0A000009 v_mul_f32_e32 v0, 0x3fb8aa3b, v0 ; 0A0000FF 3FB8AA3B v_exp_f32_e32 v0, v0 ; 7E004100 v_add_f32_e64 v0, v0, 0 clamp ; D1018000 00010100 v_sub_f32_e32 v0, 1.0, v0 ; 040000F2 v_max_f32_e32 v11, v0, v11 ; 16161700 v_mul_f32_e32 v0, v17, v25 ; 0A003311 v_mad_f32 v1, -v22, s4, s4 ; D1C10001 20100916 v_mad_f32 v8, -v22, s7, s7 ; D1C10008 201C0F16 v_mad_f32 v9, -v22, s5, s5 ; D1C10009 20140B16 v_mac_f32_e32 v1, v22, v16 ; 2C022116 v_mul_f32_e32 v4, s8, v4 ; 0A080808 v_mul_f32_e32 v5, s1, v5 ; 0A0A0A01 v_mac_f32_e32 v8, v22, v15 ; 2C101F16 v_mac_f32_e32 v9, v22, v14 ; 2C121D16 v_mul_f32_e32 v0, v0, v10 ; 0A001500 v_mul_f32_e32 v3, v3, v3 ; 0A060703 v_mul_f32_e32 v6, s0, v6 ; 0A0C0C00 v_mul_f32_e32 v0, v3, v0 ; 0A000103 v_mul_f32_e32 v3, s1, v8 ; 0A061001 v_mul_f32_e32 v5, v2, v5 ; 0A0A0B02 v_mul_f32_e32 v4, v2, v4 ; 0A080902 v_mul_f32_e32 v1, s8, v1 ; 0A020208 v_mul_f32_e32 v8, s0, v9 ; 0A101200 v_mul_f32_e32 v2, v2, v6 ; 0A040D02 v_mac_f32_e32 v5, v23, v3 ; 2C0A0717 v_mac_f32_e32 v4, v23, v1 ; 2C080317 v_mac_f32_e32 v2, v23, v8 ; 2C041117 v_mac_f32_e32 v4, s8, v0 ; 2C080008 v_mac_f32_e32 v5, s1, v0 ; 2C0A0001 v_add_f32_e64 v3, v11, 0 clamp ; D1018003 0001010B v_mac_f32_e32 v2, s0, v0 ; 2C040000 v_mad_f32 v0, -v3, v4, v4 ; D1C10000 24120903 v_mad_f32 v1, -v3, v5, v5 ; D1C10001 24160B03 v_mad_f32 v2, -v3, v2, v2 ; D1C10002 240A0503 v_mad_f32 v3, -v3, v7, v7 ; D1C10003 241E0F03 Shader epilog disassembly: v_cvt_pkrtz_f16_f32_e64 v0, v0, v1 ; D2960000 00020300 v_cvt_pkrtz_f16_f32_e64 v1, v2, v3 ; D2960001 00020702 exp 15, 0, 1, 1, 1, v0, v1, v0, v0 ; C4001C0F 00000100 s_endpgm ; BF810000 *** SHADER CONFIG *** SPI_PS_INPUT_ADDR = 0xd077 SPI_PS_INPUT_ENA = 0x0002 *** SHADER STATS *** SGPRS: 96 VGPRS: 40 Spilled SGPRs: 0 Spilled VGPRs: 0 Code Size: 2492 bytes LDS: 0 blocks Scratch: 0 bytes per wave Max Waves: 6 ******************** VERT PROPERTY NEXT_SHADER FRAG DCL IN[0] DCL IN[1] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] DCL CONST[0..3] DCL TEMP[0..1], LOCAL 0: MUL TEMP[0], CONST[0], IN[0].xxxx 1: MAD TEMP[0], CONST[1], IN[0].yyyy, TEMP[0] 2: MAD TEMP[0], CONST[2], IN[0].zzzz, TEMP[0] 3: MAD TEMP[0], CONST[3], IN[0].wwww, TEMP[0] 4: MOV TEMP[1].xyz, IN[1].xyzx 5: MOV OUT[0], TEMP[0] 6: MOV OUT[1], TEMP[1] 7: END radeonsi: Compiling shader 62 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_vs <{ float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32, i32, i32, i32, i32, i32) { main_body: %16 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 0, !amdgpu.uniform !0 %17 = load <16 x i8>, <16 x i8> addrspace(2)* %16, align 16, !invariant.load !0 %18 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %17, i32 0, i32 %14) %19 = extractelement <4 x float> %18, i32 0 %20 = extractelement <4 x float> %18, i32 1 %21 = extractelement <4 x float> %18, i32 2 %22 = extractelement <4 x float> %18, i32 3 %23 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 1, !amdgpu.uniform !0 %24 = load <16 x i8>, <16 x i8> addrspace(2)* %23, align 16, !invariant.load !0 %25 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %24, i32 0, i32 %15) %26 = extractelement <4 x float> %25, i32 0 %27 = extractelement <4 x float> %25, i32 1 %28 = extractelement <4 x float> %25, i32 2 %29 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %30 = load <16 x i8>, <16 x i8> addrspace(2)* %29, align 16, !invariant.load !0 %31 = call float @llvm.SI.load.const(<16 x i8> %30, i32 0) %32 = fmul float %31, %19 %33 = call float @llvm.SI.load.const(<16 x i8> %30, i32 4) %34 = fmul float %33, %19 %35 = call float @llvm.SI.load.const(<16 x i8> %30, i32 8) %36 = fmul float %35, %19 %37 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %38 = load <16 x i8>, <16 x i8> addrspace(2)* %37, align 16, !invariant.load !0 %39 = call float @llvm.SI.load.const(<16 x i8> %38, i32 12) %40 = fmul float %39, %19 %41 = call float @llvm.SI.load.const(<16 x i8> %38, i32 16) %42 = fmul float %41, %20 %43 = fadd float %42, %32 %44 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %45 = load <16 x i8>, <16 x i8> addrspace(2)* %44, align 16, !invariant.load !0 %46 = call float @llvm.SI.load.const(<16 x i8> %45, i32 20) %47 = fmul float %46, %20 %48 = fadd float %47, %34 %49 = call float @llvm.SI.load.const(<16 x i8> %45, i32 24) %50 = fmul float %49, %20 %51 = fadd float %50, %36 %52 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %53 = load <16 x i8>, <16 x i8> addrspace(2)* %52, align 16, !invariant.load !0 %54 = call float @llvm.SI.load.const(<16 x i8> %53, i32 28) %55 = fmul float %54, %20 %56 = fadd float %55, %40 %57 = call float @llvm.SI.load.const(<16 x i8> %53, i32 32) %58 = fmul float %57, %21 %59 = fadd float %58, %43 %60 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %61 = load <16 x i8>, <16 x i8> addrspace(2)* %60, align 16, !invariant.load !0 %62 = call float @llvm.SI.load.const(<16 x i8> %61, i32 36) %63 = fmul float %62, %21 %64 = fadd float %63, %48 %65 = call float @llvm.SI.load.const(<16 x i8> %61, i32 40) %66 = fmul float %65, %21 %67 = fadd float %66, %51 %68 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %69 = load <16 x i8>, <16 x i8> addrspace(2)* %68, align 16, !invariant.load !0 %70 = call float @llvm.SI.load.const(<16 x i8> %69, i32 44) %71 = fmul float %70, %21 %72 = fadd float %71, %56 %73 = call float @llvm.SI.load.const(<16 x i8> %69, i32 48) %74 = fmul float %73, %22 %75 = fadd float %74, %59 %76 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %77 = load <16 x i8>, <16 x i8> addrspace(2)* %76, align 16, !invariant.load !0 %78 = call float @llvm.SI.load.const(<16 x i8> %77, i32 52) %79 = fmul float %78, %22 %80 = fadd float %79, %64 %81 = call float @llvm.SI.load.const(<16 x i8> %77, i32 56) %82 = fmul float %81, %22 %83 = fadd float %82, %67 %84 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %85 = load <16 x i8>, <16 x i8> addrspace(2)* %84, align 16, !invariant.load !0 %86 = call float @llvm.SI.load.const(<16 x i8> %85, i32 60) %87 = fmul float %86, %22 %88 = fadd float %87, %72 %89 = bitcast i32 %12 to float %90 = insertvalue <{ float, float, float }> undef, float %89, 2 call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 32, i32 0, float %26, float %27, float %28, float undef) call void @llvm.SI.export(i32 15, i32 0, i32 1, i32 12, i32 0, float %75, float %80, float %83, float %88) ret <{ float, float, float }> %90 } ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.vs.load.input(<16 x i8>, i32, i32) #0 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #0 ; Function Attrs: nounwind declare void @llvm.SI.export(i32, i32, i32, i32, i32, float, float, float, float) #1 attributes #0 = { nounwind readnone } attributes #1 = { nounwind } !0 = !{} FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL SVIEW[0], CUBE, FLOAT DCL SVIEW[1], CUBE, FLOAT DCL CONST[0] DCL CONST[3] DCL TEMP[0..2], LOCAL IMM[0] FLT32 { 1.0000, 4.0000, 0.0000, 0.0000} 0: MOV TEMP[0].xyz, IN[0].xyzz 1: TEX TEMP[0], TEMP[0], SAMP[1], CUBE 2: DP3 TEMP[1].x, IN[0].xyzz, IN[0].xyzz 3: RSQ TEMP[1].x, TEMP[1].xxxx 4: MUL TEMP[1].y, IN[0].xyzz, TEMP[1].xxxx 5: MUL TEMP[1].x, TEMP[1].yyyy, IMM[0].yyyy 6: MOV_SAT TEMP[1].x, TEMP[1].xxxx 7: ADD TEMP[1].x, IMM[0].xxxx, -TEMP[1].xxxx 8: MOV TEMP[2].xyz, IN[0].xyzz 9: TEX TEMP[2], TEMP[2], SAMP[0], CUBE 10: MUL TEMP[1].x, TEMP[1].xxxx, TEMP[1].xxxx 11: LRP TEMP[1], TEMP[1].xxxx, CONST[0], TEMP[0] 12: MUL TEMP[0].x, CONST[3].xxxx, TEMP[0].wwww 13: LRP TEMP[0].xyz, TEMP[0].xxxx, TEMP[1], TEMP[2] 14: MOV TEMP[0].xyz, TEMP[0].xyzx 15: MOV TEMP[0].w, IMM[0].zzzz 16: MOV OUT[0], TEMP[0] 17: END radeonsi: Compiling shader 63 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_ps <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), float inreg, i32 inreg, <2 x i32>, <2 x i32>, <2 x i32>, <3 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, float, float, float, float, float, i32, i32, float, i32) #0 { main_body: %23 = call float @llvm.SI.fs.interp(i32 0, i32 0, i32 %6, <2 x i32> %8) %24 = call float @llvm.SI.fs.interp(i32 1, i32 0, i32 %6, <2 x i32> %8) %25 = call float @llvm.SI.fs.interp(i32 2, i32 0, i32 %6, <2 x i32> %8) %26 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 2, !amdgpu.uniform !0 %27 = load <8 x i32>, <8 x i32> addrspace(2)* %26, align 32, !invariant.load !0 %28 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %29 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %28, i64 0, i64 7, !amdgpu.uniform !0 %30 = load <4 x i32>, <4 x i32> addrspace(2)* %29, align 16, !invariant.load !0 %31 = call float @llvm.amdgcn.cubetc(float %23, float %24, float %25) %32 = call float @llvm.amdgcn.cubesc(float %23, float %24, float %25) %33 = call float @llvm.amdgcn.cubema(float %23, float %24, float %25) %34 = call float @llvm.amdgcn.cubeid(float %23, float %24, float %25) %35 = call float @llvm.fabs.f32(float %33) %36 = fdiv float 1.000000e+00, %35, !fpmath !1 %37 = fmul float %31, %36 %38 = fadd float %37, 1.500000e+00 %39 = fmul float %32, %36 %40 = fadd float %39, 1.500000e+00 %41 = bitcast float %40 to i32 %42 = bitcast float %38 to i32 %43 = bitcast float %34 to i32 %44 = insertelement <4 x i32> undef, i32 %41, i32 0 %45 = insertelement <4 x i32> %44, i32 %42, i32 1 %46 = insertelement <4 x i32> %45, i32 %43, i32 2 %47 = call <4 x float> @llvm.SI.image.sample.v4i32(<4 x i32> %46, <8 x i32> %27, <4 x i32> %30, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %48 = extractelement <4 x float> %47, i32 0 %49 = extractelement <4 x float> %47, i32 1 %50 = extractelement <4 x float> %47, i32 2 %51 = extractelement <4 x float> %47, i32 3 %52 = call float @llvm.SI.fs.interp(i32 0, i32 0, i32 %6, <2 x i32> %8) %53 = call float @llvm.SI.fs.interp(i32 1, i32 0, i32 %6, <2 x i32> %8) %54 = call float @llvm.SI.fs.interp(i32 2, i32 0, i32 %6, <2 x i32> %8) %55 = call float @llvm.SI.fs.interp(i32 0, i32 0, i32 %6, <2 x i32> %8) %56 = call float @llvm.SI.fs.interp(i32 1, i32 0, i32 %6, <2 x i32> %8) %57 = call float @llvm.SI.fs.interp(i32 2, i32 0, i32 %6, <2 x i32> %8) %58 = fmul float %52, %55 %59 = fmul float %53, %56 %60 = fadd float %59, %58 %61 = fmul float %54, %57 %62 = fadd float %60, %61 %63 = call float @llvm.sqrt.f32(float %62) %64 = fdiv float 1.000000e+00, %63, !fpmath !1 %65 = call float @llvm.SI.fs.interp(i32 1, i32 0, i32 %6, <2 x i32> %8) %66 = fmul float %65, %64 %67 = fmul float %66, 4.000000e+00 %68 = call float @llvm.AMDGPU.clamp.(float %67, float 0.000000e+00, float 1.000000e+00) %69 = fsub float 1.000000e+00, %68 %70 = call float @llvm.SI.fs.interp(i32 0, i32 0, i32 %6, <2 x i32> %8) %71 = call float @llvm.SI.fs.interp(i32 1, i32 0, i32 %6, <2 x i32> %8) %72 = call float @llvm.SI.fs.interp(i32 2, i32 0, i32 %6, <2 x i32> %8) %73 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 0, !amdgpu.uniform !0 %74 = load <8 x i32>, <8 x i32> addrspace(2)* %73, align 32, !invariant.load !0 %75 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %76 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %75, i64 0, i64 3, !amdgpu.uniform !0 %77 = load <4 x i32>, <4 x i32> addrspace(2)* %76, align 16, !invariant.load !0 %78 = call float @llvm.amdgcn.cubetc(float %70, float %71, float %72) %79 = call float @llvm.amdgcn.cubesc(float %70, float %71, float %72) %80 = call float @llvm.amdgcn.cubema(float %70, float %71, float %72) %81 = call float @llvm.amdgcn.cubeid(float %70, float %71, float %72) %82 = call float @llvm.fabs.f32(float %80) %83 = fdiv float 1.000000e+00, %82, !fpmath !1 %84 = fmul float %78, %83 %85 = fadd float %84, 1.500000e+00 %86 = fmul float %79, %83 %87 = fadd float %86, 1.500000e+00 %88 = bitcast float %87 to i32 %89 = bitcast float %85 to i32 %90 = bitcast float %81 to i32 %91 = insertelement <4 x i32> undef, i32 %88, i32 0 %92 = insertelement <4 x i32> %91, i32 %89, i32 1 %93 = insertelement <4 x i32> %92, i32 %90, i32 2 %94 = call <4 x float> @llvm.SI.image.sample.v4i32(<4 x i32> %93, <8 x i32> %74, <4 x i32> %77, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %95 = extractelement <4 x float> %94, i32 0 %96 = extractelement <4 x float> %94, i32 1 %97 = extractelement <4 x float> %94, i32 2 %98 = fmul float %69, %69 %99 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %100 = load <16 x i8>, <16 x i8> addrspace(2)* %99, align 16, !invariant.load !0 %101 = call float @llvm.SI.load.const(<16 x i8> %100, i32 0) %102 = fsub float 1.000000e+00, %98 %103 = fmul float %101, %98 %104 = fmul float %48, %102 %105 = fadd float %103, %104 %106 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %107 = load <16 x i8>, <16 x i8> addrspace(2)* %106, align 16, !invariant.load !0 %108 = call float @llvm.SI.load.const(<16 x i8> %107, i32 4) %109 = fsub float 1.000000e+00, %98 %110 = fmul float %108, %98 %111 = fmul float %49, %109 %112 = fadd float %110, %111 %113 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %114 = load <16 x i8>, <16 x i8> addrspace(2)* %113, align 16, !invariant.load !0 %115 = call float @llvm.SI.load.const(<16 x i8> %114, i32 8) %116 = fsub float 1.000000e+00, %98 %117 = fmul float %115, %98 %118 = fmul float %50, %116 %119 = fadd float %117, %118 %120 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %121 = load <16 x i8>, <16 x i8> addrspace(2)* %120, align 16, !invariant.load !0 %122 = call float @llvm.SI.load.const(<16 x i8> %121, i32 48) %123 = fmul float %122, %51 %124 = fsub float 1.000000e+00, %123 %125 = fmul float %105, %123 %126 = fmul float %95, %124 %127 = fadd float %125, %126 %128 = fsub float 1.000000e+00, %123 %129 = fmul float %112, %123 %130 = fmul float %96, %128 %131 = fadd float %129, %130 %132 = fsub float 1.000000e+00, %123 %133 = fmul float %119, %123 %134 = fmul float %97, %132 %135 = fadd float %133, %134 %136 = bitcast float %5 to i32 %137 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> undef, i32 %136, 10 %138 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %137, float %127, 11 %139 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %138, float %131, 12 %140 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %139, float %135, 13 %141 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %140, float 0.000000e+00, 14 %142 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %141, float %21, 24 ret <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %142 } ; Function Attrs: nounwind readnone declare float @llvm.SI.fs.interp(i32, i32, i32, <2 x i32>) #1 ; Function Attrs: nounwind readnone declare float @llvm.amdgcn.cubetc(float, float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.amdgcn.cubesc(float, float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.amdgcn.cubema(float, float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.amdgcn.cubeid(float, float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.fabs.f32(float) #1 ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.image.sample.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.sqrt.f32(float) #1 ; Function Attrs: nounwind readnone declare float @llvm.AMDGPU.clamp.(float, float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #1 attributes #0 = { "InitialPSInputAddr"="36983" } attributes #1 = { nounwind readnone } !0 = !{} !1 = !{float 2.500000e+00} radeonsi: Compiling shader 64 Vertex Shader Prolog LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_vs <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float }> @main(i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32, i32, i32, i32) { main_body: %20 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float }> undef, i32 %0, 0 %21 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float }> %20, i32 %1, 1 %22 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float }> %21, i32 %2, 2 %23 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float }> %22, i32 %3, 3 %24 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float }> %23, i32 %4, 4 %25 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float }> %24, i32 %5, 5 %26 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float }> %25, i32 %6, 6 %27 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float }> %26, i32 %7, 7 %28 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float }> %27, i32 %8, 8 %29 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float }> %28, i32 %9, 9 %30 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float }> %29, i32 %10, 10 %31 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float }> %30, i32 %11, 11 %32 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float }> %31, i32 %12, 12 %33 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float }> %32, i32 %13, 13 %34 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float }> %33, i32 %14, 14 %35 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float }> %34, i32 %15, 15 %36 = bitcast i32 %16 to float %37 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float }> %35, float %36, 16 %38 = bitcast i32 %17 to float %39 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float }> %37, float %38, 17 %40 = bitcast i32 %18 to float %41 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float }> %39, float %40, 18 %42 = bitcast i32 %19 to float %43 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float }> %41, float %42, 19 %44 = add i32 %16, %12 %45 = bitcast i32 %44 to float %46 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float }> %43, float %45, 20 %47 = add i32 %16, %12 %48 = bitcast i32 %47 to float %49 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float }> %46, float %48, 21 ret <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float }> %49 } SHADER KEY instance_divisors = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} as_es = 0 as_ls = 0 export_prim_id = 0 Vertex Shader as VS: Shader prolog disassembly: v_add_i32_e32 v4, vcc, s12, v0 ; 3208000C v_mov_b32_e32 v5, v4 ; 7E0A0304 Shader main disassembly: s_load_dwordx4 s[4:7], s[10:11], 0x0 ; C00A0105 00000000 s_load_dwordx4 s[8:11], s[10:11], 0x10 ; C00A0205 00000010 s_load_dwordx4 s[0:3], s[2:3], 0x0 ; C00A0001 00000000 s_waitcnt lgkmcnt(0) ; BF8C007F buffer_load_format_xyzw v[6:9], v4, s[4:7], 0 idxen ; E00C2000 80010604 s_nop 0 ; BF800000 buffer_load_format_xyzw v[10:13], v5, s[8:11], 0 idxen ; E00C2000 80020A05 s_buffer_load_dword s4, s[0:3], 0x0 ; C0220100 00000000 s_buffer_load_dword s5, s[0:3], 0x4 ; C0220140 00000004 s_buffer_load_dword s6, s[0:3], 0x8 ; C0220180 00000008 s_buffer_load_dword s7, s[0:3], 0xc ; C02201C0 0000000C s_buffer_load_dword s8, s[0:3], 0x10 ; C0220200 00000010 s_buffer_load_dword s9, s[0:3], 0x14 ; C0220240 00000014 s_buffer_load_dword s10, s[0:3], 0x18 ; C0220280 00000018 s_buffer_load_dword s11, s[0:3], 0x1c ; C02202C0 0000001C s_buffer_load_dword s12, s[0:3], 0x20 ; C0220300 00000020 s_buffer_load_dword s13, s[0:3], 0x24 ; C0220340 00000024 s_buffer_load_dword s14, s[0:3], 0x28 ; C0220380 00000028 s_buffer_load_dword s15, s[0:3], 0x2c ; C02203C0 0000002C s_buffer_load_dword s16, s[0:3], 0x30 ; C0220400 00000030 s_buffer_load_dword s17, s[0:3], 0x34 ; C0220440 00000034 s_buffer_load_dword s18, s[0:3], 0x38 ; C0220480 00000038 s_buffer_load_dword s0, s[0:3], 0x3c ; C0220000 0000003C s_waitcnt vmcnt(1) lgkmcnt(0) ; BF8C0071 v_mul_f32_e32 v0, s4, v6 ; 0A000C04 v_mul_f32_e32 v1, s5, v6 ; 0A020C05 v_mul_f32_e32 v3, s6, v6 ; 0A060C06 v_mul_f32_e32 v4, s7, v6 ; 0A080C07 v_mac_f32_e32 v0, s8, v7 ; 2C000E08 v_mac_f32_e32 v1, s9, v7 ; 2C020E09 v_mac_f32_e32 v3, s10, v7 ; 2C060E0A v_mac_f32_e32 v4, s11, v7 ; 2C080E0B v_mac_f32_e32 v0, s12, v8 ; 2C00100C v_mac_f32_e32 v1, s13, v8 ; 2C02100D v_mac_f32_e32 v3, s14, v8 ; 2C06100E v_mac_f32_e32 v4, s15, v8 ; 2C08100F v_mac_f32_e32 v0, s16, v9 ; 2C001210 v_mac_f32_e32 v1, s17, v9 ; 2C021211 v_mac_f32_e32 v3, s18, v9 ; 2C061212 v_mac_f32_e32 v4, s0, v9 ; 2C081200 s_waitcnt vmcnt(0) ; BF8C0F70 exp 15, 32, 0, 0, 0, v10, v11, v12, v0 ; C400020F 000C0B0A exp 15, 12, 0, 1, 0, v0, v1, v3, v4 ; C40008CF 04030100 s_waitcnt expcnt(0) ; BF8C0F0F Shader epilog disassembly: s_endpgm ; BF810000 *** SHADER STATS *** SGPRS: 96 VGPRS: 16 Spilled SGPRs: 0 Spilled VGPRs: 0 Code Size: 280 bytes LDS: 0 blocks Scratch: 0 bytes per wave Max Waves: 8 ******************** SHADER KEY prolog.color_two_side = 0 prolog.flatshade_colors = 0 prolog.poly_stipple = 0 prolog.force_persp_sample_interp = 0 prolog.force_linear_sample_interp = 0 prolog.force_persp_center_interp = 0 prolog.force_linear_center_interp = 0 prolog.bc_optimize_for_persp = 0 prolog.bc_optimize_for_linear = 0 epilog.spi_shader_col_format = 0x4 epilog.color_is_int8 = 0x0 epilog.last_cbuf = 0 epilog.alpha_func = 7 epilog.alpha_to_one = 0 epilog.poly_line_smoothing = 0 epilog.clamp_color = 0 Pixel Shader: Shader main disassembly: s_mov_b64 s[0:1], exec ; BE80017E s_wqm_b64 exec, exec ; BEFE077E s_mov_b32 m0, s11 ; BEFC000B v_interp_p1_f32 v4, v2, 0, 0, [m0] ; D4100002 v_interp_p2_f32 v4, [v4], v3, 0, 0, [m0] ; D4110003 v_interp_p1_f32 v7, v2, 1, 0, [m0] ; D41C0102 v_interp_p2_f32 v7, [v7], v3, 1, 0, [m0] ; D41D0103 v_interp_p1_f32 v5, v2, 2, 0, [m0] ; D4140202 v_interp_p2_f32 v5, [v5], v3, 2, 0, [m0] ; D4150203 v_cubema_f32 v0, v4, v7, v5 ; D1C70000 04160F04 v_rcp_f32_e64 v6, |v0| ; D1620106 00000100 s_load_dwordx8 s[12:19], s[4:5], 0x40 ; C00E0302 00000040 s_load_dwordx4 s[20:23], s[4:5], 0x70 ; C00A0502 00000070 v_cubetc_f32 v1, v4, v7, v5 ; D1C60001 04160F04 v_mov_b32_e32 v0, 0x3fc00000 ; 7E0002FF 3FC00000 v_cubesc_f32 v3, v4, v7, v5 ; D1C50003 04160F04 v_mad_f32 v1, v6, v1, v0 ; D1C10001 04020306 v_cubeid_f32 v2, v4, v7, v5 ; D1C40002 04160F04 v_mac_f32_e32 v0, v6, v3 ; 2C000706 s_and_b64 exec, exec, s[0:1] ; 86FE007E v_mul_f32_e32 v3, v4, v4 ; 0A060904 v_mac_f32_e32 v3, v7, v7 ; 2C060F07 v_mac_f32_e32 v3, v5, v5 ; 2C060B05 v_rsq_f32_e32 v8, v3 ; 7E104903 s_waitcnt lgkmcnt(0) ; BF8C007F image_sample v[3:6], v[0:3], s[12:19], s[20:23] dmask:0xf ; F0800F00 00A30300 s_load_dwordx8 s[12:19], s[4:5], 0x0 ; C00E0302 00000000 s_load_dwordx4 s[4:7], s[4:5], 0x30 ; C00A0102 00000030 s_load_dwordx4 s[0:3], s[2:3], 0x0 ; C00A0001 00000000 v_mul_f32_e32 v7, v8, v7 ; 0A0E0F08 v_mul_f32_e32 v7, 4.0, v7 ; 0A0E0EF6 v_add_f32_e64 v10, v7, 0 clamp ; D101800A 00010107 s_waitcnt vmcnt(0) lgkmcnt(0) ; BF8C0070 image_sample v[7:9], v[0:3], s[12:19], s[4:7] dmask:0x7 ; F0800700 00230700 s_buffer_load_dword s4, s[0:3], 0x0 ; C0220100 00000000 s_buffer_load_dword s5, s[0:3], 0x4 ; C0220140 00000004 s_buffer_load_dword s6, s[0:3], 0x8 ; C0220180 00000008 s_buffer_load_dword s0, s[0:3], 0x30 ; C0220000 00000030 v_sub_f32_e32 v11, 1.0, v10 ; 041614F2 v_mad_f32 v0, -v10, v11, v11 ; D1C10000 242E170A v_mad_f32 v1, -v0, v3, v3 ; D1C10001 240E0700 v_mad_f32 v2, -v0, v4, v4 ; D1C10002 24120900 v_mad_f32 v3, -v0, v5, v5 ; D1C10003 24160B00 s_waitcnt lgkmcnt(0) ; BF8C007F v_mul_f32_e32 v4, s0, v6 ; 0A080C00 v_mac_f32_e32 v1, s4, v0 ; 2C020004 v_mac_f32_e32 v2, s5, v0 ; 2C040005 v_mac_f32_e32 v3, s6, v0 ; 2C060006 s_waitcnt vmcnt(0) ; BF8C0F70 v_mad_f32 v0, -v4, v7, v7 ; D1C10000 241E0F04 v_mac_f32_e32 v0, v4, v1 ; 2C000304 v_mad_f32 v1, -v4, v8, v8 ; D1C10001 24221104 v_mac_f32_e32 v1, v4, v2 ; 2C020504 v_mad_f32 v2, -v4, v9, v9 ; D1C10002 24261304 v_mac_f32_e32 v2, v4, v3 ; 2C040704 v_mov_b32_e32 v3, 0 ; 7E060280 Shader epilog disassembly: v_cvt_pkrtz_f16_f32_e64 v0, v0, v1 ; D2960000 00020300 v_cvt_pkrtz_f16_f32_e64 v1, v2, v3 ; D2960001 00020702 exp 15, 0, 1, 1, 1, v0, v1, v0, v0 ; C4001C0F 00000100 s_endpgm ; BF810000 *** SHADER CONFIG *** SPI_PS_INPUT_ADDR = 0xd077 SPI_PS_INPUT_ENA = 0x0002 *** SHADER STATS *** SGPRS: 96 VGPRS: 16 Spilled SGPRs: 0 Spilled VGPRs: 0 Code Size: 356 bytes LDS: 0 blocks Scratch: 0 bytes per wave Max Waves: 8 ******************** FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL IN[1], GENERIC[1], PERSPECTIVE DCL IN[2], GENERIC[2], PERSPECTIVE DCL IN[3], GENERIC[3], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL SAMP[2] DCL SAMP[3] DCL SAMP[4] DCL SVIEW[0], CUBE, FLOAT DCL SVIEW[1], CUBE, FLOAT DCL SVIEW[2], 2D, FLOAT DCL SVIEW[3], 2D, FLOAT DCL SVIEW[4], 2D, FLOAT DCL CONST[0..8] DCL CONST[10] DCL CONST[12..15] DCL CONST[19..20] DCL TEMP[0..12], LOCAL IMM[0] FLT32 { 0.0000, 2.0000, -1.0000, 0.0001} IMM[1] FLT32 { 1.0000, 1.2500, 3.0000, 0.0780} IMM[2] FLT32 { 0.0000, 0.0100, 64.0000, 1.4427} IMM[3] FLT32 { 4.0000, 0.5000, 1.2000, 1.7000} IMM[4] FLT32 { 0.0000, 1.0000, 0.0000, 0.0000} IMM[5] INT32 {1, 0, 0, 0} 0: MOV TEMP[0].x, IN[1].wwww 1: MOV TEMP[0].y, IN[2].wwww 2: MOV TEMP[0].z, IN[3].wwww 3: ADD TEMP[1].xyz, CONST[0].xyzz, -TEMP[0].xyzz 4: DP3 TEMP[2].x, TEMP[1].xyzz, TEMP[1].xyzz 5: RSQ TEMP[2].x, TEMP[2].xxxx 6: MUL TEMP[1].xyz, TEMP[1].xyzz, TEMP[2].xxxx 7: MUL TEMP[2].xyz, IN[1].xyzz, TEMP[1].xxxx 8: MAD TEMP[2].xyz, IN[2].xyzz, TEMP[1].yyyy, TEMP[2].xyzz 9: MAD TEMP[2].z, IN[3].xyzz, TEMP[1].zzzz, TEMP[2].xyzz 10: MOV TEMP[3].xy, IN[0].zwww 11: TEX TEMP[3], TEMP[3], SAMP[3], 2D 12: MOV TEMP[4].xy, IN[0].xyyy 13: TEX TEMP[4].w, TEMP[4], SAMP[4], 2D 14: MAD TEMP[5].xyz, TEMP[3].xyzz, IMM[0].yyyy, IMM[0].zzzz 15: DP3 TEMP[6].x, TEMP[5].xyzz, TEMP[5].xyzz 16: RSQ TEMP[6].x, TEMP[6].xxxx 17: MUL TEMP[5].xyz, TEMP[5].xyzz, TEMP[6].xxxx 18: MOV TEMP[6].xy, IN[0].zwww 19: TEX TEMP[6], TEMP[6], SAMP[2], 2D 20: MUL TEMP[6].xyz, TEMP[6], CONST[19] 21: MUL TEMP[6].xyz, TEMP[6].xyzz, IMM[0].yyyy 22: MAD TEMP[6].xyz, TEMP[4].wwww, IMM[0].wwww, TEMP[6].xyzz 23: DP3 TEMP[7].x, IN[1].xyzz, TEMP[5].xyzz 24: DP3 TEMP[8].x, IN[2].xyzz, TEMP[5].xyzz 25: MOV TEMP[7].y, TEMP[8].xxxx 26: DP3 TEMP[8].x, IN[3].xyzz, TEMP[5].xyzz 27: MOV TEMP[7].z, TEMP[8].xxxx 28: MOV TEMP[8].w, IMM[1].xxxx 29: MOV TEMP[8].xyz, TEMP[6].xyzx 30: MUL TEMP[4], TEMP[8], TEMP[4].wwww 31: DP3 TEMP[8].x, TEMP[7].xyzz, TEMP[7].xyzz 32: RSQ TEMP[8].x, TEMP[8].xxxx 33: MUL TEMP[7].y, TEMP[7].xyzz, TEMP[8].xxxx 34: MOV TEMP[8], CONST[5] 35: FSLT TEMP[9].x, IMM[0].xxxx, TEMP[7].yyyy 36: UIF TEMP[9].xxxx :0 37: MOV_SAT TEMP[9].x, TEMP[7].yyyy 38: MUL TEMP[9].x, TEMP[9].xxxx, IMM[1].yyyy 39: MOV_SAT TEMP[9].x, TEMP[9].xxxx 40: MUL TEMP[10].x, IMM[0].yyyy, TEMP[9].xxxx 41: ADD TEMP[10].x, IMM[1].zzzz, -TEMP[10].xxxx 42: MUL TEMP[10].x, TEMP[9].xxxx, TEMP[10].xxxx 43: MUL TEMP[9].x, TEMP[9].xxxx, TEMP[10].xxxx 44: LRP TEMP[8], TEMP[9].xxxx, CONST[4], CONST[5] 45: ELSE :0 46: MOV_SAT TEMP[7].x, -TEMP[7].yyyy 47: MUL TEMP[7].x, TEMP[7].xxxx, IMM[1].yyyy 48: MOV_SAT TEMP[7].x, TEMP[7].xxxx 49: MUL TEMP[9].x, IMM[0].yyyy, TEMP[7].xxxx 50: ADD TEMP[9].x, IMM[1].zzzz, -TEMP[9].xxxx 51: MUL TEMP[9].x, TEMP[7].xxxx, TEMP[9].xxxx 52: MUL TEMP[7].x, TEMP[7].xxxx, TEMP[9].xxxx 53: LRP TEMP[8], TEMP[7].xxxx, CONST[6], TEMP[8] 54: ENDIF 55: MUL TEMP[4], TEMP[8], TEMP[4] 56: MUL TEMP[7].x, IMM[0].yyyy, CONST[7].xxxx 57: MUL TEMP[4].xyz, TEMP[4], TEMP[7].xxxx 58: FSEQ TEMP[7].x, CONST[20].xxxx, IMM[0].xxxx 59: UIF TEMP[7].xxxx :0 60: MOV TEMP[7].x, IMM[1].wwww 61: ELSE :0 62: MOV TEMP[7].x, CONST[20].xxxx 63: ENDIF 64: MAD TEMP[2].x, TEMP[2].zzzz, IMM[0].wwww, TEMP[7].xxxx 65: DP3 TEMP[7].x, IN[1].xyzz, TEMP[5].xyzz 66: DP3 TEMP[8].x, IN[2].xyzz, TEMP[5].xyzz 67: MOV TEMP[7].y, TEMP[8].xxxx 68: DP3 TEMP[5].x, IN[3].xyzz, TEMP[5].xyzz 69: MOV TEMP[7].z, TEMP[5].xxxx 70: DP3 TEMP[5].x, TEMP[7].xyzz, TEMP[7].xyzz 71: RSQ TEMP[5].x, TEMP[5].xxxx 72: MUL TEMP[5].xyz, TEMP[7].xyzz, TEMP[5].xxxx 73: DP3 TEMP[7].x, CONST[1].xyzz, CONST[1].xyzz 74: RSQ TEMP[7].x, TEMP[7].xxxx 75: MUL TEMP[7].xyz, CONST[1].xyzz, TEMP[7].xxxx 76: DP3 TEMP[8].x, TEMP[1].xyzz, TEMP[1].xyzz 77: RSQ TEMP[8].x, TEMP[8].xxxx 78: MUL TEMP[8].xyz, TEMP[1].xyzz, TEMP[8].xxxx 79: DP3 TEMP[9].x, TEMP[5].xyzz, TEMP[7].xyzz 80: MAX TEMP[9].x, IMM[0].xxxx, TEMP[9].xxxx 81: MOV TEMP[10].x, IMM[0].xxxx 82: FSLT TEMP[11].x, IMM[0].xxxx, TEMP[3].wwww 83: FSLT TEMP[12].x, IMM[0].xxxx, TEMP[2].xxxx 84: AND TEMP[11].x, TEMP[11].xxxx, TEMP[12].xxxx 85: UIF TEMP[11].xxxx :0 86: MOV TEMP[7].xyz, -TEMP[7].xyzx 87: DP3 TEMP[11].x, TEMP[5].xyzz, TEMP[7].xyzz 88: MUL TEMP[5].xyz, TEMP[11].xxxx, TEMP[5].xyzz 89: MUL TEMP[5].xyz, IMM[0].yyyy, TEMP[5].xyzz 90: ADD TEMP[5].xyz, TEMP[7].xyzz, -TEMP[5].xyzz 91: DP3 TEMP[5].x, TEMP[8].xyzz, TEMP[5].xyzz 92: MAX TEMP[5].x, IMM[2].xxxx, TEMP[5].xxxx 93: MUL TEMP[7].x, TEMP[9].xxxx, IMM[0].yyyy 94: SQRT TEMP[7].x, TEMP[7].xxxx 95: MOV_SAT TEMP[7].x, TEMP[7].xxxx 96: MUL TEMP[5].x, TEMP[5].xxxx, TEMP[7].xxxx 97: ADD TEMP[2].x, TEMP[2].xxxx, IMM[2].yyyy 98: MUL TEMP[2].x, TEMP[2].xxxx, IMM[2].zzzz 99: MAX TEMP[2].x, IMM[0].wwww, TEMP[2].xxxx 100: POW TEMP[2].x, TEMP[5].xxxx, TEMP[2].xxxx 101: MUL TEMP[10].x, TEMP[2].xxxx, TEMP[3].wwww 102: ENDIF 103: MUL TEMP[2].xyz, CONST[2].xyzz, CONST[3].xyzz 104: MUL TEMP[3].xyz, TEMP[6].xyzz, CONST[2].xyzz 105: MUL TEMP[3].xyz, TEMP[3].xyzz, TEMP[9].xxxx 106: MAD TEMP[2].xyz, TEMP[2].xyzz, TEMP[10].xxxx, TEMP[3].xyzz 107: ADD TEMP[1].xyz, TEMP[2].xyzz, TEMP[4].xyzz 108: ADD TEMP[2].xyz, TEMP[0].xyzz, -CONST[0].xyzz 109: DP3 TEMP[3].x, TEMP[2].xyzz, TEMP[2].xyzz 110: SQRT TEMP[3].x, TEMP[3].xxxx 111: DP3 TEMP[4].x, TEMP[2].xyzz, TEMP[2].xyzz 112: RSQ TEMP[4].x, TEMP[4].xxxx 113: MUL TEMP[2].xyz, TEMP[2].xyzz, TEMP[4].xxxx 114: MOV TEMP[4].x, -CONST[15].xxxx 115: MUL TEMP[5].x, TEMP[4].xxxx, IMM[2].wwww 116: EX2 TEMP[5].x, TEMP[5].xxxx 117: ADD TEMP[5].x, IMM[1].xxxx, -TEMP[5].xxxx 118: ADD TEMP[6].x, CONST[14].wwww, -CONST[14].zzzz 119: ADD TEMP[6].x, TEMP[3].xxxx, -TEMP[6].xxxx 120: RCP TEMP[7].x, CONST[14].zzzz 121: MUL TEMP[6].x, TEMP[6].xxxx, TEMP[7].xxxx 122: MOV_SAT TEMP[6].x, TEMP[6].xxxx 123: MUL TEMP[6].x, TEMP[6].xxxx, TEMP[4].xxxx 124: MUL TEMP[6].x, TEMP[6].xxxx, IMM[2].wwww 125: EX2 TEMP[6].x, TEMP[6].xxxx 126: ADD TEMP[6].x, IMM[1].xxxx, -TEMP[6].xxxx 127: RCP TEMP[7].x, TEMP[5].xxxx 128: MUL TEMP[6].x, TEMP[6].xxxx, TEMP[7].xxxx 129: MOV_SAT TEMP[6].x, TEMP[6].xxxx 130: ADD TEMP[7].x, TEMP[3].xxxx, -CONST[14].xxxx 131: RCP TEMP[8].x, CONST[14].yyyy 132: MUL TEMP[7].x, TEMP[7].xxxx, TEMP[8].xxxx 133: MOV_SAT TEMP[7].x, TEMP[7].xxxx 134: MUL TEMP[4].x, TEMP[7].xxxx, TEMP[4].xxxx 135: MUL TEMP[4].x, TEMP[4].xxxx, IMM[2].wwww 136: EX2 TEMP[4].x, TEMP[4].xxxx 137: ADD TEMP[4].x, IMM[1].xxxx, -TEMP[4].xxxx 138: RCP TEMP[5].x, TEMP[5].xxxx 139: MUL TEMP[4].x, TEMP[4].xxxx, TEMP[5].xxxx 140: MOV_SAT TEMP[4].x, TEMP[4].xxxx 141: MOV TEMP[5].xyz, TEMP[2].xyzz 142: TEX TEMP[5], TEMP[5], SAMP[1], CUBE 143: MUL TEMP[5], TEMP[5], CONST[10] 144: DP3 TEMP[7].x, TEMP[2].xyzz, TEMP[2].xyzz 145: RSQ TEMP[7].x, TEMP[7].xxxx 146: MUL TEMP[7].y, TEMP[2].xyzz, TEMP[7].xxxx 147: MOV TEMP[8], CONST[5] 148: FSLT TEMP[9].x, IMM[0].xxxx, TEMP[7].yyyy 149: UIF TEMP[9].xxxx :0 150: MOV_SAT TEMP[9].x, TEMP[7].yyyy 151: MUL TEMP[9].x, TEMP[9].xxxx, IMM[1].yyyy 152: MOV_SAT TEMP[9].x, TEMP[9].xxxx 153: MUL TEMP[10].x, IMM[0].yyyy, TEMP[9].xxxx 154: ADD TEMP[10].x, IMM[1].zzzz, -TEMP[10].xxxx 155: MUL TEMP[10].x, TEMP[9].xxxx, TEMP[10].xxxx 156: MUL TEMP[9].x, TEMP[9].xxxx, TEMP[10].xxxx 157: LRP TEMP[8], TEMP[9].xxxx, CONST[4], CONST[5] 158: ELSE :0 159: MOV_SAT TEMP[7].x, -TEMP[7].yyyy 160: MUL TEMP[7].x, TEMP[7].xxxx, IMM[1].yyyy 161: MOV_SAT TEMP[7].x, TEMP[7].xxxx 162: MUL TEMP[9].x, IMM[0].yyyy, TEMP[7].xxxx 163: ADD TEMP[9].x, IMM[1].zzzz, -TEMP[9].xxxx 164: MUL TEMP[9].x, TEMP[7].xxxx, TEMP[9].xxxx 165: MUL TEMP[7].x, TEMP[7].xxxx, TEMP[9].xxxx 166: LRP TEMP[8], TEMP[7].xxxx, CONST[6], TEMP[8] 167: ENDIF 168: DP3 TEMP[7].x, TEMP[2].xyzz, TEMP[2].xyzz 169: RSQ TEMP[7].x, TEMP[7].xxxx 170: MUL TEMP[7].xyz, TEMP[2].xyzz, TEMP[7].xxxx 171: MUL TEMP[7].xyz, TEMP[7].xyzz, CONST[14].wwww 172: MUL TEMP[7].xyz, TEMP[7].xyzz, IMM[3].xxxx 173: MOV TEMP[9].xz, TEMP[7].xxzx 174: ADD TEMP[7].x, TEMP[7].yyyy, CONST[0].yyyy 175: MOV TEMP[9].y, TEMP[7].xxxx 176: MOV TEMP[7].xyz, TEMP[9].xyzz 177: TEX TEMP[7], TEMP[7], SAMP[0], CUBE 178: MUL TEMP[7].xyz, TEMP[7], CONST[8] 179: MUL TEMP[7].xyz, TEMP[7].xyzz, IMM[0].yyyy 180: LRP TEMP[6].xyz, TEMP[6].xxxx, TEMP[7].xyzz, CONST[13].xyzz 181: MUL TEMP[5].xyz, TEMP[5].xyzz, IMM[3].yyyy 182: MUL TEMP[7], TEMP[8], CONST[8] 183: MUL TEMP[8].x, IMM[0].yyyy, CONST[7].xxxx 184: MUL TEMP[7].xyz, TEMP[7], TEMP[8].xxxx 185: MAD TEMP[5].xyz, TEMP[7].xyzz, IMM[3].yyyy, TEMP[5].xyzz 186: MUL TEMP[7].x, TEMP[3].xxxx, CONST[15].zzzz 187: MUL TEMP[7].x, TEMP[7].xxxx, IMM[3].wwww 188: MUL TEMP[7].x, -TEMP[7].xxxx, IMM[2].wwww 189: EX2 TEMP[7].x, TEMP[7].xxxx 190: ADD TEMP[7].x, IMM[3].zzzz, -TEMP[7].xxxx 191: MUL TEMP[7].x, TEMP[5].wwww, TEMP[7].xxxx 192: MUL TEMP[7].x, TEMP[7].xxxx, IMM[1].yyyy 193: MOV_SAT TEMP[7].x, TEMP[7].xxxx 194: LRP TEMP[2].xyz, TEMP[7].xxxx, TEMP[5].xyzz, TEMP[6].xyzz 195: MAX TEMP[4].x, TEMP[4].xxxx, TEMP[7].xxxx 196: MOV TEMP[2].w, TEMP[4].xxxx 197: FSLT TEMP[5].x, IMM[0].xxxx, CONST[12].yyyy 198: UIF TEMP[5].xxxx :0 199: MOV TEMP[5].xyz, IMM[4].xyxx 200: MOV TEMP[5].w, CONST[12].xxxx 201: MOV TEMP[6].w, IMM[1].xxxx 202: MOV TEMP[6].xyz, CONST[0].xyzx 203: DP4 TEMP[6].x, TEMP[5], TEMP[6] 204: FSGE TEMP[7].x, IMM[0].xxxx, TEMP[6].xxxx 205: UIF TEMP[7].xxxx :0 206: MOV TEMP[7].x, IMM[5].xxxx 207: ELSE :0 208: MOV TEMP[7].x, IMM[5].yyyy 209: ENDIF 210: I2F TEMP[7].x, TEMP[7].xxxx 211: MOV TEMP[8].w, IMM[1].xxxx 212: MOV TEMP[8].xyz, TEMP[0].xyzx 213: DP4 TEMP[8].x, TEMP[5], TEMP[8] 214: MOV TEMP[9].w, IMM[0].xxxx 215: ADD TEMP[9].xyz, CONST[0].xyzz, -TEMP[0].xyzz 216: MUL TEMP[10].x, IMM[0].yyyy, TEMP[7].xxxx 217: ADD TEMP[10].x, IMM[1].xxxx, -TEMP[10].xxxx 218: MUL TEMP[10].x, TEMP[10].xxxx, TEMP[8].xxxx 219: MIN TEMP[10].x, IMM[0].xxxx, TEMP[10].xxxx 220: MUL TEMP[3].x, CONST[12].zzzz, TEMP[3].xxxx 221: ADD TEMP[6].x, TEMP[8].xxxx, TEMP[6].xxxx 222: MUL TEMP[8].x, TEMP[10].xxxx, TEMP[10].xxxx 223: DP4 TEMP[5].x, TEMP[5], TEMP[9] 224: ABS TEMP[5].x, TEMP[5].xxxx 225: RCP TEMP[5].x, TEMP[5].xxxx 226: MUL TEMP[5].x, TEMP[8].xxxx, TEMP[5].xxxx 227: MAD TEMP[5].x, TEMP[7].xxxx, TEMP[6].xxxx, -TEMP[5].xxxx 228: MUL TEMP[3].x, -TEMP[3].xxxx, TEMP[5].xxxx 229: MUL TEMP[3].x, -TEMP[3].xxxx, CONST[12].yyyy 230: MUL TEMP[3].x, TEMP[3].xxxx, IMM[2].wwww 231: EX2 TEMP[3].x, TEMP[3].xxxx 232: MOV_SAT TEMP[3].x, TEMP[3].xxxx 233: ADD TEMP[3].x, IMM[1].xxxx, -TEMP[3].xxxx 234: MAX TEMP[3].x, TEMP[4].xxxx, TEMP[3].xxxx 235: MOV TEMP[2].w, TEMP[3].xxxx 236: ENDIF 237: MOV_SAT TEMP[3].x, TEMP[2].wwww 238: LRP TEMP[0].xyz, TEMP[3].xxxx, TEMP[2].xyzz, TEMP[1].xyzz 239: MOV TEMP[0].w, IMM[0].xxxx 240: MOV OUT[0], TEMP[0] 241: END radeonsi: Compiling shader 65 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_ps <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), float inreg, i32 inreg, <2 x i32>, <2 x i32>, <2 x i32>, <3 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, float, float, float, float, float, i32, i32, float, i32) #0 { main_body: %23 = call float @llvm.SI.fs.interp(i32 3, i32 1, i32 %6, <2 x i32> %8) %24 = call float @llvm.SI.fs.interp(i32 3, i32 2, i32 %6, <2 x i32> %8) %25 = call float @llvm.SI.fs.interp(i32 3, i32 3, i32 %6, <2 x i32> %8) %26 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %27 = load <16 x i8>, <16 x i8> addrspace(2)* %26, align 16, !invariant.load !0 %28 = call float @llvm.SI.load.const(<16 x i8> %27, i32 0) %29 = fsub float %28, %23 %30 = call float @llvm.SI.load.const(<16 x i8> %27, i32 4) %31 = fsub float %30, %24 %32 = call float @llvm.SI.load.const(<16 x i8> %27, i32 8) %33 = fsub float %32, %25 %34 = fmul float %29, %29 %35 = fmul float %31, %31 %36 = fadd float %35, %34 %37 = fmul float %33, %33 %38 = fadd float %36, %37 %39 = call float @llvm.sqrt.f32(float %38) %40 = fdiv float 1.000000e+00, %39, !fpmath !1 %41 = fmul float %29, %40 %42 = fmul float %31, %40 %43 = fmul float %33, %40 %44 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %45 = fmul float %44, %41 %46 = call float @llvm.SI.fs.interp(i32 2, i32 2, i32 %6, <2 x i32> %8) %47 = fmul float %46, %42 %48 = fadd float %47, %45 %49 = call float @llvm.SI.fs.interp(i32 2, i32 3, i32 %6, <2 x i32> %8) %50 = fmul float %49, %43 %51 = fadd float %50, %48 %52 = call float @llvm.SI.fs.interp(i32 2, i32 0, i32 %6, <2 x i32> %8) %53 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %6, <2 x i32> %8) %54 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 6, !amdgpu.uniform !0 %55 = load <8 x i32>, <8 x i32> addrspace(2)* %54, align 32, !invariant.load !0 %56 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %57 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %56, i64 0, i64 15, !amdgpu.uniform !0 %58 = load <4 x i32>, <4 x i32> addrspace(2)* %57, align 16, !invariant.load !0 %59 = bitcast float %52 to i32 %60 = bitcast float %53 to i32 %61 = insertelement <2 x i32> undef, i32 %59, i32 0 %62 = insertelement <2 x i32> %61, i32 %60, i32 1 %63 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %62, <8 x i32> %55, <4 x i32> %58, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %64 = extractelement <4 x float> %63, i32 0 %65 = extractelement <4 x float> %63, i32 1 %66 = extractelement <4 x float> %63, i32 2 %67 = extractelement <4 x float> %63, i32 3 %68 = call float @llvm.SI.fs.interp(i32 0, i32 0, i32 %6, <2 x i32> %8) %69 = call float @llvm.SI.fs.interp(i32 1, i32 0, i32 %6, <2 x i32> %8) %70 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 8, !amdgpu.uniform !0 %71 = load <8 x i32>, <8 x i32> addrspace(2)* %70, align 32, !invariant.load !0 %72 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %73 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %72, i64 0, i64 19, !amdgpu.uniform !0 %74 = load <4 x i32>, <4 x i32> addrspace(2)* %73, align 16, !invariant.load !0 %75 = bitcast float %68 to i32 %76 = bitcast float %69 to i32 %77 = insertelement <2 x i32> undef, i32 %75, i32 0 %78 = insertelement <2 x i32> %77, i32 %76, i32 1 %79 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %78, <8 x i32> %71, <4 x i32> %74, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %80 = extractelement <4 x float> %79, i32 3 %81 = fmul float %64, 2.000000e+00 %82 = fadd float %81, -1.000000e+00 %83 = fmul float %65, 2.000000e+00 %84 = fadd float %83, -1.000000e+00 %85 = fmul float %66, 2.000000e+00 %86 = fadd float %85, -1.000000e+00 %87 = fmul float %82, %82 %88 = fmul float %84, %84 %89 = fadd float %88, %87 %90 = fmul float %86, %86 %91 = fadd float %89, %90 %92 = call float @llvm.sqrt.f32(float %91) %93 = fdiv float 1.000000e+00, %92, !fpmath !1 %94 = fmul float %82, %93 %95 = fmul float %84, %93 %96 = fmul float %86, %93 %97 = call float @llvm.SI.fs.interp(i32 2, i32 0, i32 %6, <2 x i32> %8) %98 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %6, <2 x i32> %8) %99 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 4, !amdgpu.uniform !0 %100 = load <8 x i32>, <8 x i32> addrspace(2)* %99, align 32, !invariant.load !0 %101 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %102 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %101, i64 0, i64 11, !amdgpu.uniform !0 %103 = load <4 x i32>, <4 x i32> addrspace(2)* %102, align 16, !invariant.load !0 %104 = bitcast float %97 to i32 %105 = bitcast float %98 to i32 %106 = insertelement <2 x i32> undef, i32 %104, i32 0 %107 = insertelement <2 x i32> %106, i32 %105, i32 1 %108 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %107, <8 x i32> %100, <4 x i32> %103, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %109 = extractelement <4 x float> %108, i32 0 %110 = extractelement <4 x float> %108, i32 1 %111 = extractelement <4 x float> %108, i32 2 %112 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %113 = load <16 x i8>, <16 x i8> addrspace(2)* %112, align 16, !invariant.load !0 %114 = call float @llvm.SI.load.const(<16 x i8> %113, i32 304) %115 = fmul float %109, %114 %116 = call float @llvm.SI.load.const(<16 x i8> %113, i32 308) %117 = fmul float %110, %116 %118 = call float @llvm.SI.load.const(<16 x i8> %113, i32 312) %119 = fmul float %111, %118 %120 = fmul float %115, 2.000000e+00 %121 = fmul float %117, 2.000000e+00 %122 = fmul float %119, 2.000000e+00 %123 = fmul float %80, 0x3F1A36E2E0000000 %124 = fadd float %123, %120 %125 = fmul float %80, 0x3F1A36E2E0000000 %126 = fadd float %125, %121 %127 = fmul float %80, 0x3F1A36E2E0000000 %128 = fadd float %127, %122 %129 = call float @llvm.SI.fs.interp(i32 0, i32 1, i32 %6, <2 x i32> %8) %130 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %131 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %132 = fmul float %129, %94 %133 = fmul float %130, %95 %134 = fadd float %133, %132 %135 = fmul float %131, %96 %136 = fadd float %134, %135 %137 = call float @llvm.SI.fs.interp(i32 0, i32 2, i32 %6, <2 x i32> %8) %138 = call float @llvm.SI.fs.interp(i32 1, i32 2, i32 %6, <2 x i32> %8) %139 = call float @llvm.SI.fs.interp(i32 2, i32 2, i32 %6, <2 x i32> %8) %140 = fmul float %137, %94 %141 = fmul float %138, %95 %142 = fadd float %141, %140 %143 = fmul float %139, %96 %144 = fadd float %142, %143 %145 = call float @llvm.SI.fs.interp(i32 0, i32 3, i32 %6, <2 x i32> %8) %146 = call float @llvm.SI.fs.interp(i32 1, i32 3, i32 %6, <2 x i32> %8) %147 = call float @llvm.SI.fs.interp(i32 2, i32 3, i32 %6, <2 x i32> %8) %148 = fmul float %145, %94 %149 = fmul float %146, %95 %150 = fadd float %149, %148 %151 = fmul float %147, %96 %152 = fadd float %150, %151 %153 = fmul float %124, %80 %154 = fmul float %126, %80 %155 = fmul float %128, %80 %156 = fmul float %136, %136 %157 = fmul float %144, %144 %158 = fadd float %157, %156 %159 = fmul float %152, %152 %160 = fadd float %158, %159 %161 = call float @llvm.sqrt.f32(float %160) %162 = fdiv float 1.000000e+00, %161, !fpmath !1 %163 = fmul float %144, %162 %164 = fcmp ogt float %163, 0.000000e+00 br i1 %164, label %if36, label %else45 if36: ; preds = %main_body %165 = call float @llvm.AMDGPU.clamp.(float %163, float 0.000000e+00, float 1.000000e+00) %166 = fmul float %165, 1.250000e+00 %167 = call float @llvm.AMDGPU.clamp.(float %166, float 0.000000e+00, float 1.000000e+00) %168 = fmul float %167, 2.000000e+00 %169 = fsub float 3.000000e+00, %168 %170 = fmul float %167, %169 %171 = fmul float %167, %170 %172 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %173 = load <16 x i8>, <16 x i8> addrspace(2)* %172, align 16, !invariant.load !0 %174 = call float @llvm.SI.load.const(<16 x i8> %173, i32 64) %175 = call float @llvm.SI.load.const(<16 x i8> %173, i32 80) %176 = fsub float 1.000000e+00, %171 %177 = fmul float %174, %171 %178 = fmul float %175, %176 %179 = fadd float %177, %178 %180 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %181 = load <16 x i8>, <16 x i8> addrspace(2)* %180, align 16, !invariant.load !0 %182 = call float @llvm.SI.load.const(<16 x i8> %181, i32 68) %183 = call float @llvm.SI.load.const(<16 x i8> %181, i32 84) %184 = fsub float 1.000000e+00, %171 %185 = fmul float %182, %171 %186 = fmul float %183, %184 %187 = fadd float %185, %186 %188 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %189 = load <16 x i8>, <16 x i8> addrspace(2)* %188, align 16, !invariant.load !0 %190 = call float @llvm.SI.load.const(<16 x i8> %189, i32 72) %191 = call float @llvm.SI.load.const(<16 x i8> %189, i32 88) %192 = fmul float %190, %171 br label %endif54 else45: ; preds = %main_body %193 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %194 = load <16 x i8>, <16 x i8> addrspace(2)* %193, align 16, !invariant.load !0 %195 = call float @llvm.SI.load.const(<16 x i8> %194, i32 88) %196 = call float @llvm.SI.load.const(<16 x i8> %194, i32 84) %197 = call float @llvm.SI.load.const(<16 x i8> %194, i32 80) %198 = fsub float -0.000000e+00, %163 %199 = call float @llvm.AMDGPU.clamp.(float %198, float 0.000000e+00, float 1.000000e+00) %200 = fmul float %199, 1.250000e+00 %201 = call float @llvm.AMDGPU.clamp.(float %200, float 0.000000e+00, float 1.000000e+00) %202 = fmul float %201, 2.000000e+00 %203 = fsub float 3.000000e+00, %202 %204 = fmul float %201, %203 %205 = fmul float %201, %204 %206 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %207 = load <16 x i8>, <16 x i8> addrspace(2)* %206, align 16, !invariant.load !0 %208 = call float @llvm.SI.load.const(<16 x i8> %207, i32 96) %209 = fsub float 1.000000e+00, %205 %210 = fmul float %208, %205 %211 = fmul float %197, %209 %212 = fadd float %210, %211 %213 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %214 = load <16 x i8>, <16 x i8> addrspace(2)* %213, align 16, !invariant.load !0 %215 = call float @llvm.SI.load.const(<16 x i8> %214, i32 100) %216 = fsub float 1.000000e+00, %205 %217 = fmul float %215, %205 %218 = fmul float %196, %216 %219 = fadd float %217, %218 %220 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %221 = load <16 x i8>, <16 x i8> addrspace(2)* %220, align 16, !invariant.load !0 %222 = call float @llvm.SI.load.const(<16 x i8> %221, i32 104) %223 = fmul float %222, %205 br label %endif54 endif54: ; preds = %else45, %if36 %.pn = phi float [ %205, %else45 ], [ %171, %if36 ] %.sink13 = phi float [ %195, %else45 ], [ %191, %if36 ] %.sink = phi float [ %223, %else45 ], [ %192, %if36 ] %.08 = phi float [ %212, %else45 ], [ %179, %if36 ] %.06 = phi float [ %219, %else45 ], [ %187, %if36 ] %.sink14 = fsub float 1.000000e+00, %.pn %224 = fmul float %.sink13, %.sink14 %225 = fadd float %.sink, %224 %226 = fmul float %.08, %153 %227 = fmul float %.06, %154 %228 = fmul float %225, %155 %229 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %230 = load <16 x i8>, <16 x i8> addrspace(2)* %229, align 16, !invariant.load !0 %231 = call float @llvm.SI.load.const(<16 x i8> %230, i32 112) %232 = fmul float %231, 2.000000e+00 %233 = fmul float %226, %232 %234 = fmul float %227, %232 %235 = fmul float %228, %232 %236 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %237 = load <16 x i8>, <16 x i8> addrspace(2)* %236, align 16, !invariant.load !0 %238 = call float @llvm.SI.load.const(<16 x i8> %237, i32 320) %239 = fcmp oeq float %238, 0.000000e+00 br i1 %239, label %endif63, label %else61 else61: ; preds = %endif54 %240 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %241 = load <16 x i8>, <16 x i8> addrspace(2)* %240, align 16, !invariant.load !0 %242 = call float @llvm.SI.load.const(<16 x i8> %241, i32 320) br label %endif63 endif63: ; preds = %endif54, %else61 %.010 = phi float [ %242, %else61 ], [ 0x3FB3F7CEE0000000, %endif54 ] %243 = fmul float %51, 0x3F1A36E2E0000000 %244 = fadd float %243, %.010 %245 = call float @llvm.SI.fs.interp(i32 0, i32 1, i32 %6, <2 x i32> %8) %246 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %247 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %248 = fmul float %245, %94 %249 = fmul float %246, %95 %250 = fadd float %249, %248 %251 = fmul float %247, %96 %252 = fadd float %250, %251 %253 = call float @llvm.SI.fs.interp(i32 0, i32 2, i32 %6, <2 x i32> %8) %254 = call float @llvm.SI.fs.interp(i32 1, i32 2, i32 %6, <2 x i32> %8) %255 = call float @llvm.SI.fs.interp(i32 2, i32 2, i32 %6, <2 x i32> %8) %256 = fmul float %253, %94 %257 = fmul float %254, %95 %258 = fadd float %257, %256 %259 = fmul float %255, %96 %260 = fadd float %258, %259 %261 = call float @llvm.SI.fs.interp(i32 0, i32 3, i32 %6, <2 x i32> %8) %262 = call float @llvm.SI.fs.interp(i32 1, i32 3, i32 %6, <2 x i32> %8) %263 = call float @llvm.SI.fs.interp(i32 2, i32 3, i32 %6, <2 x i32> %8) %264 = fmul float %261, %94 %265 = fmul float %262, %95 %266 = fadd float %265, %264 %267 = fmul float %263, %96 %268 = fadd float %266, %267 %269 = fmul float %252, %252 %270 = fmul float %260, %260 %271 = fadd float %270, %269 %272 = fmul float %268, %268 %273 = fadd float %271, %272 %274 = call float @llvm.sqrt.f32(float %273) %275 = fdiv float 1.000000e+00, %274, !fpmath !1 %276 = fmul float %252, %275 %277 = fmul float %260, %275 %278 = fmul float %268, %275 %279 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %280 = load <16 x i8>, <16 x i8> addrspace(2)* %279, align 16, !invariant.load !0 %281 = call float @llvm.SI.load.const(<16 x i8> %280, i32 16) %282 = call float @llvm.SI.load.const(<16 x i8> %280, i32 20) %283 = call float @llvm.SI.load.const(<16 x i8> %280, i32 24) %284 = call float @llvm.SI.load.const(<16 x i8> %280, i32 16) %285 = call float @llvm.SI.load.const(<16 x i8> %280, i32 20) %286 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %287 = load <16 x i8>, <16 x i8> addrspace(2)* %286, align 16, !invariant.load !0 %288 = call float @llvm.SI.load.const(<16 x i8> %287, i32 24) %289 = fmul float %281, %284 %290 = fmul float %282, %285 %291 = fadd float %290, %289 %292 = fmul float %283, %288 %293 = fadd float %291, %292 %294 = call float @llvm.sqrt.f32(float %293) %295 = fdiv float 1.000000e+00, %294, !fpmath !1 %296 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %297 = load <16 x i8>, <16 x i8> addrspace(2)* %296, align 16, !invariant.load !0 %298 = call float @llvm.SI.load.const(<16 x i8> %297, i32 16) %299 = fmul float %298, %295 %300 = call float @llvm.SI.load.const(<16 x i8> %297, i32 20) %301 = fmul float %300, %295 %302 = call float @llvm.SI.load.const(<16 x i8> %297, i32 24) %303 = fmul float %302, %295 %304 = fmul float %41, %41 %305 = fmul float %42, %42 %306 = fadd float %305, %304 %307 = fmul float %43, %43 %308 = fadd float %306, %307 %309 = call float @llvm.sqrt.f32(float %308) %310 = fdiv float 1.000000e+00, %309, !fpmath !1 %311 = fmul float %276, %299 %312 = fmul float %277, %301 %313 = fadd float %312, %311 %314 = fmul float %278, %303 %315 = fadd float %313, %314 %316 = call float @llvm.maxnum.f32(float %315, float 0.000000e+00) %317 = fcmp ogt float %67, 0.000000e+00 %318 = fcmp ogt float %244, 0.000000e+00 %319 = and i1 %317, %318 br i1 %319, label %if85, label %endif102 if85: ; preds = %endif63 %320 = fmul float %43, %310 %321 = fmul float %42, %310 %322 = fmul float %41, %310 %323 = fmul float %299, %276 %324 = fsub float -0.000000e+00, %323 %325 = fmul float %301, %277 %326 = fsub float %324, %325 %327 = fmul float %303, %278 %328 = fsub float %326, %327 %329 = fmul float %328, %276 %330 = fmul float %328, %277 %331 = fmul float %328, %278 %332 = fmul float %329, 2.000000e+00 %333 = fmul float %330, 2.000000e+00 %334 = fmul float %331, 2.000000e+00 %335 = fsub float -0.000000e+00, %332 %336 = fsub float %335, %299 %337 = fsub float -0.000000e+00, %333 %338 = fsub float %337, %301 %339 = fsub float -0.000000e+00, %334 %340 = fsub float %339, %303 %341 = fmul float %322, %336 %342 = fmul float %321, %338 %343 = fadd float %342, %341 %344 = fmul float %320, %340 %345 = fadd float %343, %344 %346 = call float @llvm.maxnum.f32(float %345, float 0x3EE4F8B580000000) %347 = fmul float %316, 2.000000e+00 %348 = call float @llvm.sqrt.f32(float %347) %349 = call float @llvm.AMDGPU.clamp.(float %348, float 0.000000e+00, float 1.000000e+00) %350 = fmul float %346, %349 %351 = fadd float %244, 0x3F847AE140000000 %352 = fmul float %351, 6.400000e+01 %353 = call float @llvm.maxnum.f32(float %352, float 0x3F1A36E2E0000000) %354 = call float @llvm.pow.f32(float %350, float %353) %355 = fmul float %354, %67 br label %endif102 endif102: ; preds = %if85, %endif63 %.02 = phi float [ %355, %if85 ], [ 0.000000e+00, %endif63 ] %356 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %357 = load <16 x i8>, <16 x i8> addrspace(2)* %356, align 16, !invariant.load !0 %358 = call float @llvm.SI.load.const(<16 x i8> %357, i32 32) %359 = call float @llvm.SI.load.const(<16 x i8> %357, i32 48) %360 = fmul float %358, %359 %361 = call float @llvm.SI.load.const(<16 x i8> %357, i32 36) %362 = call float @llvm.SI.load.const(<16 x i8> %357, i32 52) %363 = fmul float %361, %362 %364 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %365 = load <16 x i8>, <16 x i8> addrspace(2)* %364, align 16, !invariant.load !0 %366 = call float @llvm.SI.load.const(<16 x i8> %365, i32 40) %367 = call float @llvm.SI.load.const(<16 x i8> %365, i32 56) %368 = fmul float %366, %367 %369 = call float @llvm.SI.load.const(<16 x i8> %365, i32 32) %370 = fmul float %124, %369 %371 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %372 = load <16 x i8>, <16 x i8> addrspace(2)* %371, align 16, !invariant.load !0 %373 = call float @llvm.SI.load.const(<16 x i8> %372, i32 36) %374 = fmul float %126, %373 %375 = call float @llvm.SI.load.const(<16 x i8> %372, i32 40) %376 = fmul float %128, %375 %377 = fmul float %370, %316 %378 = fmul float %374, %316 %379 = fmul float %376, %316 %380 = fmul float %360, %.02 %381 = fadd float %380, %377 %382 = fmul float %363, %.02 %383 = fadd float %382, %378 %384 = fmul float %368, %.02 %385 = fadd float %384, %379 %386 = fadd float %381, %233 %387 = fadd float %383, %234 %388 = fadd float %385, %235 %389 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %390 = load <16 x i8>, <16 x i8> addrspace(2)* %389, align 16, !invariant.load !0 %391 = call float @llvm.SI.load.const(<16 x i8> %390, i32 0) %392 = fsub float %23, %391 %393 = call float @llvm.SI.load.const(<16 x i8> %390, i32 4) %394 = fsub float %24, %393 %395 = call float @llvm.SI.load.const(<16 x i8> %390, i32 8) %396 = fsub float %25, %395 %397 = fmul float %392, %392 %398 = fmul float %394, %394 %399 = fadd float %398, %397 %400 = fmul float %396, %396 %401 = fadd float %399, %400 %402 = call float @llvm.sqrt.f32(float %401) %403 = fmul float %392, %392 %404 = fmul float %394, %394 %405 = fadd float %404, %403 %406 = fmul float %396, %396 %407 = fadd float %405, %406 %408 = call float @llvm.sqrt.f32(float %407) %409 = fdiv float 1.000000e+00, %408, !fpmath !1 %410 = fmul float %392, %409 %411 = fmul float %394, %409 %412 = fmul float %396, %409 %413 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %414 = load <16 x i8>, <16 x i8> addrspace(2)* %413, align 16, !invariant.load !0 %415 = call float @llvm.SI.load.const(<16 x i8> %414, i32 240) %416 = fsub float -0.000000e+00, %415 %417 = fmul float %415, 0xBFF7154760000000 %418 = call float @llvm.exp2.f32(float %417) %419 = fsub float 1.000000e+00, %418 %420 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %421 = load <16 x i8>, <16 x i8> addrspace(2)* %420, align 16, !invariant.load !0 %422 = call float @llvm.SI.load.const(<16 x i8> %421, i32 236) %423 = call float @llvm.SI.load.const(<16 x i8> %421, i32 232) %424 = fsub float %422, %423 %425 = fsub float %402, %424 %426 = call float @llvm.SI.load.const(<16 x i8> %421, i32 232) %427 = fdiv float 1.000000e+00, %426, !fpmath !1 %428 = fmul float %425, %427 %429 = call float @llvm.AMDGPU.clamp.(float %428, float 0.000000e+00, float 1.000000e+00) %430 = fmul float %429, %416 %431 = fmul float %430, 0x3FF7154760000000 %432 = call float @llvm.exp2.f32(float %431) %433 = fsub float 1.000000e+00, %432 %434 = fdiv float 1.000000e+00, %419, !fpmath !1 %435 = fmul float %433, %434 %436 = call float @llvm.AMDGPU.clamp.(float %435, float 0.000000e+00, float 1.000000e+00) %437 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %438 = load <16 x i8>, <16 x i8> addrspace(2)* %437, align 16, !invariant.load !0 %439 = call float @llvm.SI.load.const(<16 x i8> %438, i32 224) %440 = fsub float %402, %439 %441 = call float @llvm.SI.load.const(<16 x i8> %438, i32 228) %442 = fdiv float 1.000000e+00, %441, !fpmath !1 %443 = fmul float %440, %442 %444 = call float @llvm.AMDGPU.clamp.(float %443, float 0.000000e+00, float 1.000000e+00) %445 = fmul float %444, %416 %446 = fmul float %445, 0x3FF7154760000000 %447 = call float @llvm.exp2.f32(float %446) %448 = fsub float 1.000000e+00, %447 %449 = fdiv float 1.000000e+00, %419, !fpmath !1 %450 = fmul float %448, %449 %451 = call float @llvm.AMDGPU.clamp.(float %450, float 0.000000e+00, float 1.000000e+00) %452 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 2, !amdgpu.uniform !0 %453 = load <8 x i32>, <8 x i32> addrspace(2)* %452, align 32, !invariant.load !0 %454 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %455 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %454, i64 0, i64 7, !amdgpu.uniform !0 %456 = load <4 x i32>, <4 x i32> addrspace(2)* %455, align 16, !invariant.load !0 %457 = call float @llvm.amdgcn.cubetc(float %410, float %411, float %412) %458 = call float @llvm.amdgcn.cubesc(float %410, float %411, float %412) %459 = call float @llvm.amdgcn.cubema(float %410, float %411, float %412) %460 = call float @llvm.amdgcn.cubeid(float %410, float %411, float %412) %461 = call float @llvm.fabs.f32(float %459) %462 = fdiv float 1.000000e+00, %461, !fpmath !1 %463 = fmul float %457, %462 %464 = fadd float %463, 1.500000e+00 %465 = fmul float %458, %462 %466 = fadd float %465, 1.500000e+00 %467 = bitcast float %466 to i32 %468 = bitcast float %464 to i32 %469 = bitcast float %460 to i32 %470 = insertelement <4 x i32> undef, i32 %467, i32 0 %471 = insertelement <4 x i32> %470, i32 %468, i32 1 %472 = insertelement <4 x i32> %471, i32 %469, i32 2 %473 = call <4 x float> @llvm.SI.image.sample.v4i32(<4 x i32> %472, <8 x i32> %453, <4 x i32> %456, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %474 = extractelement <4 x float> %473, i32 0 %475 = extractelement <4 x float> %473, i32 1 %476 = extractelement <4 x float> %473, i32 2 %477 = extractelement <4 x float> %473, i32 3 %478 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %479 = load <16 x i8>, <16 x i8> addrspace(2)* %478, align 16, !invariant.load !0 %480 = call float @llvm.SI.load.const(<16 x i8> %479, i32 160) %481 = fmul float %474, %480 %482 = call float @llvm.SI.load.const(<16 x i8> %479, i32 164) %483 = fmul float %475, %482 %484 = call float @llvm.SI.load.const(<16 x i8> %479, i32 168) %485 = fmul float %476, %484 %486 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %487 = load <16 x i8>, <16 x i8> addrspace(2)* %486, align 16, !invariant.load !0 %488 = call float @llvm.SI.load.const(<16 x i8> %487, i32 172) %489 = fmul float %477, %488 %490 = fmul float %410, %410 %491 = fmul float %411, %411 %492 = fadd float %491, %490 %493 = fmul float %412, %412 %494 = fadd float %492, %493 %495 = call float @llvm.sqrt.f32(float %494) %496 = fdiv float 1.000000e+00, %495, !fpmath !1 %497 = fmul float %411, %496 %498 = fcmp ogt float %497, 0.000000e+00 br i1 %498, label %if149, label %else158 if149: ; preds = %endif102 %499 = call float @llvm.AMDGPU.clamp.(float %497, float 0.000000e+00, float 1.000000e+00) %500 = fmul float %499, 1.250000e+00 %501 = call float @llvm.AMDGPU.clamp.(float %500, float 0.000000e+00, float 1.000000e+00) %502 = fmul float %501, 2.000000e+00 %503 = fsub float 3.000000e+00, %502 %504 = fmul float %501, %503 %505 = fmul float %501, %504 %506 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %507 = load <16 x i8>, <16 x i8> addrspace(2)* %506, align 16, !invariant.load !0 %508 = call float @llvm.SI.load.const(<16 x i8> %507, i32 64) %509 = call float @llvm.SI.load.const(<16 x i8> %507, i32 80) %510 = fsub float 1.000000e+00, %505 %511 = fmul float %508, %505 %512 = fmul float %509, %510 %513 = fadd float %511, %512 %514 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %515 = load <16 x i8>, <16 x i8> addrspace(2)* %514, align 16, !invariant.load !0 %516 = call float @llvm.SI.load.const(<16 x i8> %515, i32 68) %517 = call float @llvm.SI.load.const(<16 x i8> %515, i32 84) %518 = fsub float 1.000000e+00, %505 %519 = fmul float %516, %505 %520 = fmul float %517, %518 %521 = fadd float %519, %520 %522 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %523 = load <16 x i8>, <16 x i8> addrspace(2)* %522, align 16, !invariant.load !0 %524 = call float @llvm.SI.load.const(<16 x i8> %523, i32 72) %525 = call float @llvm.SI.load.const(<16 x i8> %523, i32 88) %526 = fmul float %524, %505 br label %endif167 else158: ; preds = %endif102 %527 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %528 = load <16 x i8>, <16 x i8> addrspace(2)* %527, align 16, !invariant.load !0 %529 = call float @llvm.SI.load.const(<16 x i8> %528, i32 88) %530 = call float @llvm.SI.load.const(<16 x i8> %528, i32 84) %531 = call float @llvm.SI.load.const(<16 x i8> %528, i32 80) %532 = fsub float -0.000000e+00, %497 %533 = call float @llvm.AMDGPU.clamp.(float %532, float 0.000000e+00, float 1.000000e+00) %534 = fmul float %533, 1.250000e+00 %535 = call float @llvm.AMDGPU.clamp.(float %534, float 0.000000e+00, float 1.000000e+00) %536 = fmul float %535, 2.000000e+00 %537 = fsub float 3.000000e+00, %536 %538 = fmul float %535, %537 %539 = fmul float %535, %538 %540 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %541 = load <16 x i8>, <16 x i8> addrspace(2)* %540, align 16, !invariant.load !0 %542 = call float @llvm.SI.load.const(<16 x i8> %541, i32 96) %543 = fsub float 1.000000e+00, %539 %544 = fmul float %542, %539 %545 = fmul float %531, %543 %546 = fadd float %544, %545 %547 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %548 = load <16 x i8>, <16 x i8> addrspace(2)* %547, align 16, !invariant.load !0 %549 = call float @llvm.SI.load.const(<16 x i8> %548, i32 100) %550 = fsub float 1.000000e+00, %539 %551 = fmul float %549, %539 %552 = fmul float %530, %550 %553 = fadd float %551, %552 %554 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %555 = load <16 x i8>, <16 x i8> addrspace(2)* %554, align 16, !invariant.load !0 %556 = call float @llvm.SI.load.const(<16 x i8> %555, i32 104) %557 = fmul float %556, %539 br label %endif167 endif167: ; preds = %else158, %if149 %.pn19 = phi float [ %539, %else158 ], [ %505, %if149 ] %.sink17 = phi float [ %529, %else158 ], [ %525, %if149 ] %.sink15 = phi float [ %557, %else158 ], [ %526, %if149 ] %.19 = phi float [ %546, %else158 ], [ %513, %if149 ] %.17 = phi float [ %553, %else158 ], [ %521, %if149 ] %.sink18 = fsub float 1.000000e+00, %.pn19 %558 = fmul float %.sink17, %.sink18 %559 = fadd float %.sink15, %558 %560 = fmul float %410, %410 %561 = fmul float %411, %411 %562 = fadd float %561, %560 %563 = fmul float %412, %412 %564 = fadd float %562, %563 %565 = call float @llvm.sqrt.f32(float %564) %566 = fdiv float 1.000000e+00, %565, !fpmath !1 %567 = fmul float %410, %566 %568 = fmul float %411, %566 %569 = fmul float %412, %566 %570 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %571 = load <16 x i8>, <16 x i8> addrspace(2)* %570, align 16, !invariant.load !0 %572 = call float @llvm.SI.load.const(<16 x i8> %571, i32 236) %573 = fmul float %567, %572 %574 = call float @llvm.SI.load.const(<16 x i8> %571, i32 236) %575 = fmul float %568, %574 %576 = call float @llvm.SI.load.const(<16 x i8> %571, i32 236) %577 = fmul float %569, %576 %578 = fmul float %573, 4.000000e+00 %579 = fmul float %575, 4.000000e+00 %580 = fmul float %577, 4.000000e+00 %581 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %582 = load <16 x i8>, <16 x i8> addrspace(2)* %581, align 16, !invariant.load !0 %583 = call float @llvm.SI.load.const(<16 x i8> %582, i32 4) %584 = fadd float %579, %583 %585 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 0, !amdgpu.uniform !0 %586 = load <8 x i32>, <8 x i32> addrspace(2)* %585, align 32, !invariant.load !0 %587 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %588 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %587, i64 0, i64 3, !amdgpu.uniform !0 %589 = load <4 x i32>, <4 x i32> addrspace(2)* %588, align 16, !invariant.load !0 %590 = call float @llvm.amdgcn.cubetc(float %578, float %584, float %580) %591 = call float @llvm.amdgcn.cubesc(float %578, float %584, float %580) %592 = call float @llvm.amdgcn.cubema(float %578, float %584, float %580) %593 = call float @llvm.amdgcn.cubeid(float %578, float %584, float %580) %594 = call float @llvm.fabs.f32(float %592) %595 = fdiv float 1.000000e+00, %594, !fpmath !1 %596 = fmul float %590, %595 %597 = fadd float %596, 1.500000e+00 %598 = fmul float %591, %595 %599 = fadd float %598, 1.500000e+00 %600 = bitcast float %599 to i32 %601 = bitcast float %597 to i32 %602 = bitcast float %593 to i32 %603 = insertelement <4 x i32> undef, i32 %600, i32 0 %604 = insertelement <4 x i32> %603, i32 %601, i32 1 %605 = insertelement <4 x i32> %604, i32 %602, i32 2 %606 = call <4 x float> @llvm.SI.image.sample.v4i32(<4 x i32> %605, <8 x i32> %586, <4 x i32> %589, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %607 = extractelement <4 x float> %606, i32 0 %608 = extractelement <4 x float> %606, i32 1 %609 = extractelement <4 x float> %606, i32 2 %610 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %611 = load <16 x i8>, <16 x i8> addrspace(2)* %610, align 16, !invariant.load !0 %612 = call float @llvm.SI.load.const(<16 x i8> %611, i32 128) %613 = fmul float %607, %612 %614 = call float @llvm.SI.load.const(<16 x i8> %611, i32 132) %615 = fmul float %608, %614 %616 = call float @llvm.SI.load.const(<16 x i8> %611, i32 136) %617 = fmul float %609, %616 %618 = fmul float %613, 2.000000e+00 %619 = fmul float %615, 2.000000e+00 %620 = fmul float %617, 2.000000e+00 %621 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %622 = load <16 x i8>, <16 x i8> addrspace(2)* %621, align 16, !invariant.load !0 %623 = call float @llvm.SI.load.const(<16 x i8> %622, i32 208) %624 = fsub float 1.000000e+00, %436 %625 = fmul float %618, %436 %626 = fmul float %623, %624 %627 = fadd float %625, %626 %628 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %629 = load <16 x i8>, <16 x i8> addrspace(2)* %628, align 16, !invariant.load !0 %630 = call float @llvm.SI.load.const(<16 x i8> %629, i32 212) %631 = fsub float 1.000000e+00, %436 %632 = fmul float %619, %436 %633 = fmul float %630, %631 %634 = fadd float %632, %633 %635 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %636 = load <16 x i8>, <16 x i8> addrspace(2)* %635, align 16, !invariant.load !0 %637 = call float @llvm.SI.load.const(<16 x i8> %636, i32 216) %638 = fsub float 1.000000e+00, %436 %639 = fmul float %620, %436 %640 = fmul float %637, %638 %641 = fadd float %639, %640 %642 = fmul float %481, 5.000000e-01 %643 = fmul float %483, 5.000000e-01 %644 = fmul float %485, 5.000000e-01 %645 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %646 = load <16 x i8>, <16 x i8> addrspace(2)* %645, align 16, !invariant.load !0 %647 = call float @llvm.SI.load.const(<16 x i8> %646, i32 128) %648 = fmul float %.19, %647 %649 = call float @llvm.SI.load.const(<16 x i8> %646, i32 132) %650 = fmul float %.17, %649 %651 = call float @llvm.SI.load.const(<16 x i8> %646, i32 136) %652 = fmul float %559, %651 %653 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %654 = load <16 x i8>, <16 x i8> addrspace(2)* %653, align 16, !invariant.load !0 %655 = call float @llvm.SI.load.const(<16 x i8> %654, i32 112) %656 = fmul float %655, 2.000000e+00 %657 = fmul float %648, %656 %658 = fmul float %650, %656 %659 = fmul float %652, %656 %660 = fmul float %657, 5.000000e-01 %661 = fadd float %660, %642 %662 = fmul float %658, 5.000000e-01 %663 = fadd float %662, %643 %664 = fmul float %659, 5.000000e-01 %665 = fadd float %664, %644 %666 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %667 = load <16 x i8>, <16 x i8> addrspace(2)* %666, align 16, !invariant.load !0 %668 = call float @llvm.SI.load.const(<16 x i8> %667, i32 248) %669 = fmul float %402, %668 %670 = fmul float %669, 0x3FFB333340000000 %671 = fmul float %670, 0xBFF7154760000000 %672 = call float @llvm.exp2.f32(float %671) %673 = fsub float 0x3FF3333340000000, %672 %674 = fmul float %489, %673 %675 = fmul float %674, 1.250000e+00 %676 = call float @llvm.AMDGPU.clamp.(float %675, float 0.000000e+00, float 1.000000e+00) %677 = fsub float 1.000000e+00, %676 %678 = fmul float %661, %676 %679 = fmul float %627, %677 %680 = fadd float %678, %679 %681 = fsub float 1.000000e+00, %676 %682 = fmul float %663, %676 %683 = fmul float %634, %681 %684 = fadd float %682, %683 %685 = fsub float 1.000000e+00, %676 %686 = fmul float %665, %676 %687 = fmul float %641, %685 %688 = fadd float %686, %687 %689 = call float @llvm.maxnum.f32(float %451, float %676) %690 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %691 = load <16 x i8>, <16 x i8> addrspace(2)* %690, align 16, !invariant.load !0 %692 = call float @llvm.SI.load.const(<16 x i8> %691, i32 196) %693 = fcmp ogt float %692, 0.000000e+00 br i1 %693, label %if198, label %endif236 if198: ; preds = %endif167 %694 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %695 = load <16 x i8>, <16 x i8> addrspace(2)* %694, align 16, !invariant.load !0 %696 = call float @llvm.SI.load.const(<16 x i8> %695, i32 192) %697 = call float @llvm.SI.load.const(<16 x i8> %695, i32 0) %698 = call float @llvm.SI.load.const(<16 x i8> %695, i32 4) %699 = call float @llvm.SI.load.const(<16 x i8> %695, i32 8) %700 = fmul float %697, 0.000000e+00 %701 = fadd float %700, %698 %702 = fmul float %699, 0.000000e+00 %703 = fadd float %701, %702 %704 = fadd float %703, %696 %705 = fcmp ole float %704, 0.000000e+00 %706 = uitofp i1 %705 to float %707 = fmul float %23, 0.000000e+00 %708 = fadd float %707, %24 %709 = fmul float %25, 0.000000e+00 %710 = fadd float %708, %709 %711 = fadd float %710, %696 %712 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %713 = load <16 x i8>, <16 x i8> addrspace(2)* %712, align 16, !invariant.load !0 %714 = call float @llvm.SI.load.const(<16 x i8> %713, i32 0) %715 = fsub float %714, %23 %716 = call float @llvm.SI.load.const(<16 x i8> %713, i32 4) %717 = fsub float %716, %24 %718 = call float @llvm.SI.load.const(<16 x i8> %713, i32 8) %719 = fsub float %718, %25 %720 = fmul float %706, 2.000000e+00 %721 = fsub float 1.000000e+00, %720 %722 = fmul float %721, %711 %723 = call float @llvm.minnum.f32(float %722, float 0.000000e+00) %724 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %725 = load <16 x i8>, <16 x i8> addrspace(2)* %724, align 16, !invariant.load !0 %726 = call float @llvm.SI.load.const(<16 x i8> %725, i32 200) %727 = fmul float %726, %402 %728 = fadd float %711, %704 %729 = fmul float %723, %723 %730 = fmul float %715, 0.000000e+00 %731 = fadd float %730, %717 %732 = fmul float %719, 0.000000e+00 %733 = fadd float %731, %732 %734 = fmul float %696, 0.000000e+00 %735 = fadd float %733, %734 %736 = call float @llvm.fabs.f32(float %735) %737 = fdiv float 1.000000e+00, %736, !fpmath !1 %738 = fmul float %729, %737 %739 = fmul float %706, %728 %740 = fsub float %739, %738 %741 = fmul float %727, %740 %742 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %743 = load <16 x i8>, <16 x i8> addrspace(2)* %742, align 16, !invariant.load !0 %744 = call float @llvm.SI.load.const(<16 x i8> %743, i32 196) %745 = fmul float %741, %744 %746 = fmul float %745, 0x3FF7154760000000 %747 = call float @llvm.exp2.f32(float %746) %748 = call float @llvm.AMDGPU.clamp.(float %747, float 0.000000e+00, float 1.000000e+00) %749 = fsub float 1.000000e+00, %748 %750 = call float @llvm.maxnum.f32(float %689, float %749) br label %endif236 endif236: ; preds = %if198, %endif167 %.0 = phi float [ %750, %if198 ], [ %689, %endif167 ] %751 = call float @llvm.AMDGPU.clamp.(float %.0, float 0.000000e+00, float 1.000000e+00) %752 = fsub float 1.000000e+00, %751 %753 = fmul float %680, %751 %754 = fmul float %386, %752 %755 = fadd float %753, %754 %756 = fsub float 1.000000e+00, %751 %757 = fmul float %684, %751 %758 = fmul float %387, %756 %759 = fadd float %757, %758 %760 = fsub float 1.000000e+00, %751 %761 = fmul float %688, %751 %762 = fmul float %388, %760 %763 = fadd float %761, %762 %764 = bitcast float %5 to i32 %765 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> undef, i32 %764, 10 %766 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %765, float %755, 11 %767 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %766, float %759, 12 %768 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %767, float %763, 13 %769 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %768, float 0.000000e+00, 14 %770 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %769, float %21, 24 ret <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %770 } ; Function Attrs: nounwind readnone declare float @llvm.SI.fs.interp(i32, i32, i32, <2 x i32>) #1 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.sqrt.f32(float) #1 ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.AMDGPU.clamp.(float, float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.maxnum.f32(float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.pow.f32(float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.exp2.f32(float) #1 ; Function Attrs: nounwind readnone declare float @llvm.amdgcn.cubetc(float, float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.amdgcn.cubesc(float, float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.amdgcn.cubema(float, float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.amdgcn.cubeid(float, float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.fabs.f32(float) #1 ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.image.sample.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.minnum.f32(float, float) #1 attributes #0 = { "InitialPSInputAddr"="36983" } attributes #1 = { nounwind readnone } !0 = !{} !1 = !{float 2.500000e+00} FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL IN[1], GENERIC[1], PERSPECTIVE DCL IN[2], GENERIC[2], PERSPECTIVE DCL IN[3], GENERIC[3], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL SAMP[2] DCL SAMP[3] DCL SVIEW[0], 2D, FLOAT DCL SVIEW[1], 2D, FLOAT DCL SVIEW[2], 2D, FLOAT DCL SVIEW[3], 2D, FLOAT DCL CONST[0..3] DCL CONST[5..12] DCL CONST[16..17] DCL TEMP[0..10], LOCAL IMM[0] FLT32 { 0.0000, 2.0000, -1.0000, 0.0001} IMM[1] FLT32 { 0.0780, 0.0000, 0.0100, 64.0000} IMM[2] FLT32 { 1.0000, 1.4427, 0.0000, 0.0000} IMM[3] INT32 {1, 0, 0, 0} 0: MOV TEMP[0].x, IN[1].wwww 1: MOV TEMP[0].yz, IN[2].yxyy 2: MOV TEMP[1].xy, IN[2].zwzz 3: MOV TEMP[1].z, IN[3].xxxx 4: ADD TEMP[2].xyz, CONST[1].xyzz, -IN[3].yzww 5: DP3 TEMP[3].x, TEMP[2].xyzz, TEMP[2].xyzz 6: RSQ TEMP[3].x, TEMP[3].xxxx 7: MUL TEMP[2].xyz, TEMP[2].xyzz, TEMP[3].xxxx 8: ADD TEMP[3].xyz, CONST[0].xyzz, -IN[3].yzww 9: DP3 TEMP[4].x, TEMP[3].xyzz, TEMP[3].xyzz 10: RSQ TEMP[4].x, TEMP[4].xxxx 11: MUL TEMP[3].xyz, TEMP[3].xyzz, TEMP[4].xxxx 12: MUL TEMP[4].xyz, IN[1].xyzz, TEMP[3].xxxx 13: MAD TEMP[4].xyz, TEMP[0].xyzz, TEMP[3].yyyy, TEMP[4].xyzz 14: MAD TEMP[4].z, TEMP[1].xyzz, TEMP[3].zzzz, TEMP[4].xyzz 15: MOV TEMP[5].xy, IN[0].zwww 16: TEX TEMP[5], TEMP[5], SAMP[2], 2D 17: MAD TEMP[6].xyz, TEMP[5].xyzz, IMM[0].yyyy, IMM[0].zzzz 18: DP3 TEMP[7].x, TEMP[6].xyzz, TEMP[6].xyzz 19: RSQ TEMP[7].x, TEMP[7].xxxx 20: MUL TEMP[6].xyz, TEMP[6].xyzz, TEMP[7].xxxx 21: MOV TEMP[7].xy, IN[0].xyyy 22: TEX TEMP[7].w, TEMP[7], SAMP[3], 2D 23: MOV TEMP[8].xy, IN[0].zwww 24: TEX TEMP[8], TEMP[8], SAMP[1], 2D 25: MUL TEMP[8].xyz, TEMP[8], CONST[16] 26: MUL TEMP[8].xyz, TEMP[8].xyzz, IMM[0].yyyy 27: MAD TEMP[7].xyz, TEMP[7].wwww, IMM[0].wwww, TEMP[8].xyzz 28: FSEQ TEMP[8].x, CONST[17].xxxx, IMM[0].xxxx 29: UIF TEMP[8].xxxx :0 30: MOV TEMP[8].x, IMM[1].xxxx 31: ELSE :0 32: MOV TEMP[8].x, CONST[17].xxxx 33: ENDIF 34: MAD TEMP[4].x, TEMP[4].zzzz, IMM[0].wwww, TEMP[8].xxxx 35: MUL TEMP[8], CONST[5], IN[3].yyyy 36: MAD TEMP[8], CONST[6], IN[3].zzzz, TEMP[8] 37: MAD TEMP[8], CONST[7], IN[3].wwww, TEMP[8] 38: ADD TEMP[8].xyz, TEMP[8], CONST[8] 39: DP3 TEMP[9].x, IN[1].xyzz, TEMP[6].xyzz 40: DP3 TEMP[0].x, TEMP[0].xyzz, TEMP[6].xyzz 41: MOV TEMP[9].y, TEMP[0].xxxx 42: DP3 TEMP[0].x, TEMP[1].xyzz, TEMP[6].xyzz 43: MOV TEMP[9].z, TEMP[0].xxxx 44: DP3 TEMP[0].x, TEMP[8].xyzz, TEMP[8].xyzz 45: MOV TEMP[0].xy, TEMP[0].xxxx 46: TEX TEMP[0].w, TEMP[0], SAMP[0], 2D 47: MUL TEMP[0].xyz, CONST[2].xyzz, TEMP[0].wwww 48: DP3 TEMP[1].x, TEMP[9].xyzz, TEMP[9].xyzz 49: RSQ TEMP[1].x, TEMP[1].xxxx 50: MUL TEMP[1].xyz, TEMP[9].xyzz, TEMP[1].xxxx 51: DP3 TEMP[6].x, TEMP[2].xyzz, TEMP[2].xyzz 52: RSQ TEMP[6].x, TEMP[6].xxxx 53: MUL TEMP[2].xyz, TEMP[2].xyzz, TEMP[6].xxxx 54: DP3 TEMP[6].x, TEMP[3].xyzz, TEMP[3].xyzz 55: RSQ TEMP[6].x, TEMP[6].xxxx 56: MUL TEMP[3].xyz, TEMP[3].xyzz, TEMP[6].xxxx 57: DP3 TEMP[6].x, TEMP[1].xyzz, TEMP[2].xyzz 58: MAX TEMP[6].x, IMM[0].xxxx, TEMP[6].xxxx 59: MOV TEMP[8].x, IMM[0].xxxx 60: FSLT TEMP[9].x, IMM[0].xxxx, TEMP[5].wwww 61: FSLT TEMP[10].x, IMM[0].xxxx, TEMP[4].xxxx 62: AND TEMP[9].x, TEMP[9].xxxx, TEMP[10].xxxx 63: UIF TEMP[9].xxxx :0 64: MOV TEMP[2].xyz, -TEMP[2].xyzx 65: DP3 TEMP[9].x, TEMP[1].xyzz, TEMP[2].xyzz 66: MUL TEMP[1].xyz, TEMP[9].xxxx, TEMP[1].xyzz 67: MUL TEMP[1].xyz, IMM[0].yyyy, TEMP[1].xyzz 68: ADD TEMP[1].xyz, TEMP[2].xyzz, -TEMP[1].xyzz 69: DP3 TEMP[1].x, TEMP[3].xyzz, TEMP[1].xyzz 70: MAX TEMP[1].x, IMM[1].yyyy, TEMP[1].xxxx 71: MUL TEMP[2].x, TEMP[6].xxxx, IMM[0].yyyy 72: SQRT TEMP[2].x, TEMP[2].xxxx 73: MOV_SAT TEMP[2].x, TEMP[2].xxxx 74: MUL TEMP[1].x, TEMP[1].xxxx, TEMP[2].xxxx 75: ADD TEMP[2].x, TEMP[4].xxxx, IMM[1].zzzz 76: MUL TEMP[2].x, TEMP[2].xxxx, IMM[1].wwww 77: MAX TEMP[2].x, IMM[0].wwww, TEMP[2].xxxx 78: POW TEMP[1].x, TEMP[1].xxxx, TEMP[2].xxxx 79: MUL TEMP[8].x, TEMP[1].xxxx, TEMP[5].wwww 80: ENDIF 81: MUL TEMP[1].xyz, TEMP[0].xyzz, CONST[3].xyzz 82: MUL TEMP[0].xyz, TEMP[7].xyzz, TEMP[0].xyzz 83: MUL TEMP[0].xyz, TEMP[0].xyzz, TEMP[6].xxxx 84: MAD TEMP[0].xyz, TEMP[1].xyzz, TEMP[8].xxxx, TEMP[0].xyzz 85: ADD TEMP[1].xyz, IN[3].yzww, -CONST[0].xyzz 86: DP3 TEMP[1].x, TEMP[1].xyzz, TEMP[1].xyzz 87: SQRT TEMP[1].x, TEMP[1].xxxx 88: MOV TEMP[2].x, -CONST[12].xxxx 89: ADD TEMP[3].x, TEMP[1].xxxx, -CONST[11].xxxx 90: RCP TEMP[4].x, CONST[11].yyyy 91: MUL TEMP[3].x, TEMP[3].xxxx, TEMP[4].xxxx 92: MOV_SAT TEMP[3].x, TEMP[3].xxxx 93: MUL TEMP[3].x, TEMP[3].xxxx, TEMP[2].xxxx 94: MUL TEMP[3].x, TEMP[3].xxxx, IMM[2].yyyy 95: EX2 TEMP[3].x, TEMP[3].xxxx 96: ADD TEMP[3].x, IMM[2].xxxx, -TEMP[3].xxxx 97: MUL TEMP[2].x, TEMP[2].xxxx, IMM[2].yyyy 98: EX2 TEMP[2].x, TEMP[2].xxxx 99: ADD TEMP[2].x, IMM[2].xxxx, -TEMP[2].xxxx 100: RCP TEMP[2].x, TEMP[2].xxxx 101: MUL TEMP[2].x, TEMP[3].xxxx, TEMP[2].xxxx 102: MOV_SAT TEMP[2].x, TEMP[2].xxxx 103: MOV TEMP[3].w, TEMP[2].xxxx 104: FSLT TEMP[4].x, IMM[0].xxxx, CONST[9].yyyy 105: UIF TEMP[4].xxxx :0 106: MOV TEMP[4].xyz, IMM[2].zxzz 107: MOV TEMP[4].w, CONST[9].xxxx 108: MOV TEMP[5].w, IMM[2].xxxx 109: MOV TEMP[5].xyz, CONST[0].xyzx 110: DP4 TEMP[5].x, TEMP[4], TEMP[5] 111: FSGE TEMP[6].x, IMM[0].xxxx, TEMP[5].xxxx 112: UIF TEMP[6].xxxx :0 113: MOV TEMP[6].x, IMM[3].xxxx 114: ELSE :0 115: MOV TEMP[6].x, IMM[3].yyyy 116: ENDIF 117: I2F TEMP[6].x, TEMP[6].xxxx 118: MOV TEMP[7].w, IMM[2].xxxx 119: MOV TEMP[7].xyz, IN[3].yzwy 120: DP4 TEMP[7].x, TEMP[4], TEMP[7] 121: MOV TEMP[8].w, IMM[0].xxxx 122: ADD TEMP[8].xyz, CONST[0].xyzz, -IN[3].yzww 123: MUL TEMP[9].x, IMM[0].yyyy, TEMP[6].xxxx 124: ADD TEMP[9].x, IMM[2].xxxx, -TEMP[9].xxxx 125: MUL TEMP[9].x, TEMP[9].xxxx, TEMP[7].xxxx 126: MIN TEMP[9].x, IMM[0].xxxx, TEMP[9].xxxx 127: MUL TEMP[1].x, CONST[9].zzzz, TEMP[1].xxxx 128: ADD TEMP[5].x, TEMP[7].xxxx, TEMP[5].xxxx 129: MUL TEMP[7].x, TEMP[9].xxxx, TEMP[9].xxxx 130: DP4 TEMP[4].x, TEMP[4], TEMP[8] 131: ABS TEMP[4].x, TEMP[4].xxxx 132: RCP TEMP[4].x, TEMP[4].xxxx 133: MUL TEMP[4].x, TEMP[7].xxxx, TEMP[4].xxxx 134: MAD TEMP[4].x, TEMP[6].xxxx, TEMP[5].xxxx, -TEMP[4].xxxx 135: MUL TEMP[1].x, -TEMP[1].xxxx, TEMP[4].xxxx 136: MUL TEMP[1].x, -TEMP[1].xxxx, CONST[9].yyyy 137: MUL TEMP[1].x, TEMP[1].xxxx, IMM[2].yyyy 138: EX2 TEMP[1].x, TEMP[1].xxxx 139: MOV_SAT TEMP[1].x, TEMP[1].xxxx 140: ADD TEMP[1].x, IMM[2].xxxx, -TEMP[1].xxxx 141: MAX TEMP[1].x, TEMP[2].xxxx, TEMP[1].xxxx 142: MOV TEMP[3].w, TEMP[1].xxxx 143: ENDIF 144: MOV_SAT TEMP[1].x, TEMP[3].wwww 145: ADD TEMP[1].xyz, IMM[2].xxxx, -TEMP[1].xxxx 146: MUL TEMP[0].xyz, TEMP[0].xyzz, TEMP[1].xyzz 147: MOV TEMP[0].w, IMM[0].xxxx 148: MOV OUT[0], TEMP[0] 149: END radeonsi: Compiling shader 66 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_ps <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), float inreg, i32 inreg, <2 x i32>, <2 x i32>, <2 x i32>, <3 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, float, float, float, float, float, i32, i32, float, i32) #0 { main_body: %23 = call float @llvm.SI.fs.interp(i32 3, i32 1, i32 %6, <2 x i32> %8) %24 = call float @llvm.SI.fs.interp(i32 0, i32 2, i32 %6, <2 x i32> %8) %25 = call float @llvm.SI.fs.interp(i32 1, i32 2, i32 %6, <2 x i32> %8) %26 = call float @llvm.SI.fs.interp(i32 2, i32 2, i32 %6, <2 x i32> %8) %27 = call float @llvm.SI.fs.interp(i32 3, i32 2, i32 %6, <2 x i32> %8) %28 = call float @llvm.SI.fs.interp(i32 0, i32 3, i32 %6, <2 x i32> %8) %29 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %30 = load <16 x i8>, <16 x i8> addrspace(2)* %29, align 16, !invariant.load !0 %31 = call float @llvm.SI.load.const(<16 x i8> %30, i32 16) %32 = call float @llvm.SI.fs.interp(i32 1, i32 3, i32 %6, <2 x i32> %8) %33 = fsub float %31, %32 %34 = call float @llvm.SI.load.const(<16 x i8> %30, i32 20) %35 = call float @llvm.SI.fs.interp(i32 2, i32 3, i32 %6, <2 x i32> %8) %36 = fsub float %34, %35 %37 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %38 = load <16 x i8>, <16 x i8> addrspace(2)* %37, align 16, !invariant.load !0 %39 = call float @llvm.SI.load.const(<16 x i8> %38, i32 24) %40 = call float @llvm.SI.fs.interp(i32 3, i32 3, i32 %6, <2 x i32> %8) %41 = fsub float %39, %40 %42 = fmul float %33, %33 %43 = fmul float %36, %36 %44 = fadd float %43, %42 %45 = fmul float %41, %41 %46 = fadd float %44, %45 %47 = call float @llvm.sqrt.f32(float %46) %48 = fdiv float 1.000000e+00, %47, !fpmath !1 %49 = fmul float %33, %48 %50 = fmul float %36, %48 %51 = fmul float %41, %48 %52 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %53 = load <16 x i8>, <16 x i8> addrspace(2)* %52, align 16, !invariant.load !0 %54 = call float @llvm.SI.load.const(<16 x i8> %53, i32 0) %55 = call float @llvm.SI.fs.interp(i32 1, i32 3, i32 %6, <2 x i32> %8) %56 = fsub float %54, %55 %57 = call float @llvm.SI.load.const(<16 x i8> %53, i32 4) %58 = call float @llvm.SI.fs.interp(i32 2, i32 3, i32 %6, <2 x i32> %8) %59 = fsub float %57, %58 %60 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %61 = load <16 x i8>, <16 x i8> addrspace(2)* %60, align 16, !invariant.load !0 %62 = call float @llvm.SI.load.const(<16 x i8> %61, i32 8) %63 = call float @llvm.SI.fs.interp(i32 3, i32 3, i32 %6, <2 x i32> %8) %64 = fsub float %62, %63 %65 = fmul float %56, %56 %66 = fmul float %59, %59 %67 = fadd float %66, %65 %68 = fmul float %64, %64 %69 = fadd float %67, %68 %70 = call float @llvm.sqrt.f32(float %69) %71 = fdiv float 1.000000e+00, %70, !fpmath !1 %72 = fmul float %56, %71 %73 = fmul float %59, %71 %74 = fmul float %64, %71 %75 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %76 = fmul float %75, %72 %77 = fmul float %25, %73 %78 = fadd float %77, %76 %79 = fmul float %28, %74 %80 = fadd float %79, %78 %81 = call float @llvm.SI.fs.interp(i32 2, i32 0, i32 %6, <2 x i32> %8) %82 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %6, <2 x i32> %8) %83 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 4, !amdgpu.uniform !0 %84 = load <8 x i32>, <8 x i32> addrspace(2)* %83, align 32, !invariant.load !0 %85 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %86 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %85, i64 0, i64 11, !amdgpu.uniform !0 %87 = load <4 x i32>, <4 x i32> addrspace(2)* %86, align 16, !invariant.load !0 %88 = bitcast float %81 to i32 %89 = bitcast float %82 to i32 %90 = insertelement <2 x i32> undef, i32 %88, i32 0 %91 = insertelement <2 x i32> %90, i32 %89, i32 1 %92 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %91, <8 x i32> %84, <4 x i32> %87, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %93 = extractelement <4 x float> %92, i32 0 %94 = extractelement <4 x float> %92, i32 1 %95 = extractelement <4 x float> %92, i32 2 %96 = extractelement <4 x float> %92, i32 3 %97 = fmul float %93, 2.000000e+00 %98 = fadd float %97, -1.000000e+00 %99 = fmul float %94, 2.000000e+00 %100 = fadd float %99, -1.000000e+00 %101 = fmul float %95, 2.000000e+00 %102 = fadd float %101, -1.000000e+00 %103 = fmul float %98, %98 %104 = fmul float %100, %100 %105 = fadd float %104, %103 %106 = fmul float %102, %102 %107 = fadd float %105, %106 %108 = call float @llvm.sqrt.f32(float %107) %109 = fdiv float 1.000000e+00, %108, !fpmath !1 %110 = fmul float %98, %109 %111 = fmul float %100, %109 %112 = fmul float %102, %109 %113 = call float @llvm.SI.fs.interp(i32 0, i32 0, i32 %6, <2 x i32> %8) %114 = call float @llvm.SI.fs.interp(i32 1, i32 0, i32 %6, <2 x i32> %8) %115 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 6, !amdgpu.uniform !0 %116 = load <8 x i32>, <8 x i32> addrspace(2)* %115, align 32, !invariant.load !0 %117 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %118 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %117, i64 0, i64 15, !amdgpu.uniform !0 %119 = load <4 x i32>, <4 x i32> addrspace(2)* %118, align 16, !invariant.load !0 %120 = bitcast float %113 to i32 %121 = bitcast float %114 to i32 %122 = insertelement <2 x i32> undef, i32 %120, i32 0 %123 = insertelement <2 x i32> %122, i32 %121, i32 1 %124 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %123, <8 x i32> %116, <4 x i32> %119, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %125 = extractelement <4 x float> %124, i32 3 %126 = call float @llvm.SI.fs.interp(i32 2, i32 0, i32 %6, <2 x i32> %8) %127 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %6, <2 x i32> %8) %128 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 2, !amdgpu.uniform !0 %129 = load <8 x i32>, <8 x i32> addrspace(2)* %128, align 32, !invariant.load !0 %130 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %131 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %130, i64 0, i64 7, !amdgpu.uniform !0 %132 = load <4 x i32>, <4 x i32> addrspace(2)* %131, align 16, !invariant.load !0 %133 = bitcast float %126 to i32 %134 = bitcast float %127 to i32 %135 = insertelement <2 x i32> undef, i32 %133, i32 0 %136 = insertelement <2 x i32> %135, i32 %134, i32 1 %137 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %136, <8 x i32> %129, <4 x i32> %132, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %138 = extractelement <4 x float> %137, i32 0 %139 = extractelement <4 x float> %137, i32 1 %140 = extractelement <4 x float> %137, i32 2 %141 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %142 = load <16 x i8>, <16 x i8> addrspace(2)* %141, align 16, !invariant.load !0 %143 = call float @llvm.SI.load.const(<16 x i8> %142, i32 256) %144 = fmul float %138, %143 %145 = call float @llvm.SI.load.const(<16 x i8> %142, i32 260) %146 = fmul float %139, %145 %147 = call float @llvm.SI.load.const(<16 x i8> %142, i32 264) %148 = fmul float %140, %147 %149 = fmul float %144, 2.000000e+00 %150 = fmul float %146, 2.000000e+00 %151 = fmul float %148, 2.000000e+00 %152 = fmul float %125, 0x3F1A36E2E0000000 %153 = fadd float %152, %149 %154 = fmul float %125, 0x3F1A36E2E0000000 %155 = fadd float %154, %150 %156 = fmul float %125, 0x3F1A36E2E0000000 %157 = fadd float %156, %151 %158 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %159 = load <16 x i8>, <16 x i8> addrspace(2)* %158, align 16, !invariant.load !0 %160 = call float @llvm.SI.load.const(<16 x i8> %159, i32 272) %161 = fcmp oeq float %160, 0.000000e+00 br i1 %161, label %endif33, label %else31 else31: ; preds = %main_body %162 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %163 = load <16 x i8>, <16 x i8> addrspace(2)* %162, align 16, !invariant.load !0 %164 = call float @llvm.SI.load.const(<16 x i8> %163, i32 272) br label %endif33 endif33: ; preds = %main_body, %else31 %.0 = phi float [ %164, %else31 ], [ 0x3FB3F7CEE0000000, %main_body ] %165 = fmul float %80, 0x3F1A36E2E0000000 %166 = fadd float %165, %.0 %167 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %168 = load <16 x i8>, <16 x i8> addrspace(2)* %167, align 16, !invariant.load !0 %169 = call float @llvm.SI.load.const(<16 x i8> %168, i32 80) %170 = call float @llvm.SI.fs.interp(i32 1, i32 3, i32 %6, <2 x i32> %8) %171 = fmul float %169, %170 %172 = call float @llvm.SI.load.const(<16 x i8> %168, i32 84) %173 = call float @llvm.SI.fs.interp(i32 1, i32 3, i32 %6, <2 x i32> %8) %174 = fmul float %172, %173 %175 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %176 = load <16 x i8>, <16 x i8> addrspace(2)* %175, align 16, !invariant.load !0 %177 = call float @llvm.SI.load.const(<16 x i8> %176, i32 88) %178 = call float @llvm.SI.fs.interp(i32 1, i32 3, i32 %6, <2 x i32> %8) %179 = fmul float %177, %178 %180 = call float @llvm.SI.load.const(<16 x i8> %176, i32 96) %181 = call float @llvm.SI.fs.interp(i32 2, i32 3, i32 %6, <2 x i32> %8) %182 = fmul float %180, %181 %183 = fadd float %182, %171 %184 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %185 = load <16 x i8>, <16 x i8> addrspace(2)* %184, align 16, !invariant.load !0 %186 = call float @llvm.SI.load.const(<16 x i8> %185, i32 100) %187 = call float @llvm.SI.fs.interp(i32 2, i32 3, i32 %6, <2 x i32> %8) %188 = fmul float %186, %187 %189 = fadd float %188, %174 %190 = call float @llvm.SI.load.const(<16 x i8> %185, i32 104) %191 = call float @llvm.SI.fs.interp(i32 2, i32 3, i32 %6, <2 x i32> %8) %192 = fmul float %190, %191 %193 = fadd float %192, %179 %194 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %195 = load <16 x i8>, <16 x i8> addrspace(2)* %194, align 16, !invariant.load !0 %196 = call float @llvm.SI.load.const(<16 x i8> %195, i32 112) %197 = call float @llvm.SI.fs.interp(i32 3, i32 3, i32 %6, <2 x i32> %8) %198 = fmul float %196, %197 %199 = fadd float %198, %183 %200 = call float @llvm.SI.load.const(<16 x i8> %195, i32 116) %201 = call float @llvm.SI.fs.interp(i32 3, i32 3, i32 %6, <2 x i32> %8) %202 = fmul float %200, %201 %203 = fadd float %202, %189 %204 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %205 = load <16 x i8>, <16 x i8> addrspace(2)* %204, align 16, !invariant.load !0 %206 = call float @llvm.SI.load.const(<16 x i8> %205, i32 120) %207 = call float @llvm.SI.fs.interp(i32 3, i32 3, i32 %6, <2 x i32> %8) %208 = fmul float %206, %207 %209 = fadd float %208, %193 %210 = call float @llvm.SI.load.const(<16 x i8> %205, i32 128) %211 = fadd float %199, %210 %212 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %213 = load <16 x i8>, <16 x i8> addrspace(2)* %212, align 16, !invariant.load !0 %214 = call float @llvm.SI.load.const(<16 x i8> %213, i32 132) %215 = fadd float %203, %214 %216 = call float @llvm.SI.load.const(<16 x i8> %213, i32 136) %217 = fadd float %209, %216 %218 = call float @llvm.SI.fs.interp(i32 0, i32 1, i32 %6, <2 x i32> %8) %219 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %220 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %221 = fmul float %218, %110 %222 = fmul float %219, %111 %223 = fadd float %222, %221 %224 = fmul float %220, %112 %225 = fadd float %223, %224 %226 = fmul float %23, %110 %227 = fmul float %24, %111 %228 = fadd float %227, %226 %229 = fmul float %25, %112 %230 = fadd float %228, %229 %231 = fmul float %26, %110 %232 = fmul float %27, %111 %233 = fadd float %232, %231 %234 = fmul float %28, %112 %235 = fadd float %233, %234 %236 = fmul float %211, %211 %237 = fmul float %215, %215 %238 = fadd float %237, %236 %239 = fmul float %217, %217 %240 = fadd float %238, %239 %241 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 0, !amdgpu.uniform !0 %242 = load <8 x i32>, <8 x i32> addrspace(2)* %241, align 32, !invariant.load !0 %243 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %244 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %243, i64 0, i64 3, !amdgpu.uniform !0 %245 = load <4 x i32>, <4 x i32> addrspace(2)* %244, align 16, !invariant.load !0 %246 = bitcast float %240 to i32 %247 = bitcast float %240 to i32 %248 = insertelement <2 x i32> undef, i32 %246, i32 0 %249 = insertelement <2 x i32> %248, i32 %247, i32 1 %250 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %249, <8 x i32> %242, <4 x i32> %245, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %251 = extractelement <4 x float> %250, i32 3 %252 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %253 = load <16 x i8>, <16 x i8> addrspace(2)* %252, align 16, !invariant.load !0 %254 = call float @llvm.SI.load.const(<16 x i8> %253, i32 32) %255 = fmul float %254, %251 %256 = call float @llvm.SI.load.const(<16 x i8> %253, i32 36) %257 = fmul float %256, %251 %258 = call float @llvm.SI.load.const(<16 x i8> %253, i32 40) %259 = fmul float %258, %251 %260 = fmul float %225, %225 %261 = fmul float %230, %230 %262 = fadd float %261, %260 %263 = fmul float %235, %235 %264 = fadd float %262, %263 %265 = call float @llvm.sqrt.f32(float %264) %266 = fdiv float 1.000000e+00, %265, !fpmath !1 %267 = fmul float %225, %266 %268 = fmul float %230, %266 %269 = fmul float %235, %266 %270 = fmul float %49, %49 %271 = fmul float %50, %50 %272 = fadd float %271, %270 %273 = fmul float %51, %51 %274 = fadd float %272, %273 %275 = call float @llvm.sqrt.f32(float %274) %276 = fdiv float 1.000000e+00, %275, !fpmath !1 %277 = fmul float %49, %276 %278 = fmul float %50, %276 %279 = fmul float %51, %276 %280 = fmul float %72, %72 %281 = fmul float %73, %73 %282 = fadd float %281, %280 %283 = fmul float %74, %74 %284 = fadd float %282, %283 %285 = call float @llvm.sqrt.f32(float %284) %286 = fdiv float 1.000000e+00, %285, !fpmath !1 %287 = fmul float %267, %277 %288 = fmul float %268, %278 %289 = fadd float %288, %287 %290 = fmul float %269, %279 %291 = fadd float %289, %290 %292 = call float @llvm.maxnum.f32(float %291, float 0.000000e+00) %293 = fcmp ogt float %96, 0.000000e+00 %294 = fcmp ogt float %166, 0.000000e+00 %295 = and i1 %293, %294 br i1 %295, label %if63, label %endif80 if63: ; preds = %endif33 %296 = fmul float %74, %286 %297 = fmul float %73, %286 %298 = fmul float %72, %286 %299 = fmul float %277, %267 %300 = fsub float -0.000000e+00, %299 %301 = fmul float %278, %268 %302 = fsub float %300, %301 %303 = fmul float %279, %269 %304 = fsub float %302, %303 %305 = fmul float %304, %267 %306 = fmul float %304, %268 %307 = fmul float %304, %269 %308 = fmul float %305, 2.000000e+00 %309 = fmul float %306, 2.000000e+00 %310 = fmul float %307, 2.000000e+00 %311 = fsub float -0.000000e+00, %308 %312 = fsub float %311, %277 %313 = fsub float -0.000000e+00, %309 %314 = fsub float %313, %278 %315 = fsub float -0.000000e+00, %310 %316 = fsub float %315, %279 %317 = fmul float %298, %312 %318 = fmul float %297, %314 %319 = fadd float %318, %317 %320 = fmul float %296, %316 %321 = fadd float %319, %320 %322 = call float @llvm.maxnum.f32(float %321, float 0x3EE4F8B580000000) %323 = fmul float %292, 2.000000e+00 %324 = call float @llvm.sqrt.f32(float %323) %325 = call float @llvm.AMDGPU.clamp.(float %324, float 0.000000e+00, float 1.000000e+00) %326 = fmul float %322, %325 %327 = fadd float %166, 0x3F847AE140000000 %328 = fmul float %327, 6.400000e+01 %329 = call float @llvm.maxnum.f32(float %328, float 0x3F1A36E2E0000000) %330 = call float @llvm.pow.f32(float %326, float %329) %331 = fmul float %330, %96 br label %endif80 endif80: ; preds = %if63, %endif33 %.1 = phi float [ %331, %if63 ], [ 0.000000e+00, %endif33 ] %332 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %333 = load <16 x i8>, <16 x i8> addrspace(2)* %332, align 16, !invariant.load !0 %334 = call float @llvm.SI.load.const(<16 x i8> %333, i32 48) %335 = fmul float %255, %334 %336 = call float @llvm.SI.load.const(<16 x i8> %333, i32 52) %337 = fmul float %257, %336 %338 = call float @llvm.SI.load.const(<16 x i8> %333, i32 56) %339 = fmul float %259, %338 %340 = fmul float %153, %255 %341 = fmul float %155, %257 %342 = fmul float %157, %259 %343 = fmul float %340, %292 %344 = fmul float %341, %292 %345 = fmul float %342, %292 %346 = fmul float %335, %.1 %347 = fadd float %346, %343 %348 = fmul float %337, %.1 %349 = fadd float %348, %344 %350 = fmul float %339, %.1 %351 = fadd float %350, %345 %352 = call float @llvm.SI.fs.interp(i32 1, i32 3, i32 %6, <2 x i32> %8) %353 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %354 = load <16 x i8>, <16 x i8> addrspace(2)* %353, align 16, !invariant.load !0 %355 = call float @llvm.SI.load.const(<16 x i8> %354, i32 0) %356 = fsub float %352, %355 %357 = call float @llvm.SI.fs.interp(i32 2, i32 3, i32 %6, <2 x i32> %8) %358 = call float @llvm.SI.load.const(<16 x i8> %354, i32 4) %359 = fsub float %357, %358 %360 = call float @llvm.SI.fs.interp(i32 3, i32 3, i32 %6, <2 x i32> %8) %361 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %362 = load <16 x i8>, <16 x i8> addrspace(2)* %361, align 16, !invariant.load !0 %363 = call float @llvm.SI.load.const(<16 x i8> %362, i32 8) %364 = fsub float %360, %363 %365 = fmul float %356, %356 %366 = fmul float %359, %359 %367 = fadd float %366, %365 %368 = fmul float %364, %364 %369 = fadd float %367, %368 %370 = call float @llvm.sqrt.f32(float %369) %371 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %372 = load <16 x i8>, <16 x i8> addrspace(2)* %371, align 16, !invariant.load !0 %373 = call float @llvm.SI.load.const(<16 x i8> %372, i32 192) %374 = call float @llvm.SI.load.const(<16 x i8> %372, i32 176) %375 = fsub float %370, %374 %376 = call float @llvm.SI.load.const(<16 x i8> %372, i32 180) %377 = fdiv float 1.000000e+00, %376, !fpmath !1 %378 = fmul float %375, %377 %379 = call float @llvm.AMDGPU.clamp.(float %378, float 0.000000e+00, float 1.000000e+00) %380 = fmul float %373, %379 %381 = fmul float %380, 0xBFF7154760000000 %382 = call float @llvm.exp2.f32(float %381) %383 = fsub float 1.000000e+00, %382 %384 = fmul float %373, 0xBFF7154760000000 %385 = call float @llvm.exp2.f32(float %384) %386 = fsub float 1.000000e+00, %385 %387 = fdiv float 1.000000e+00, %386, !fpmath !1 %388 = fmul float %383, %387 %389 = call float @llvm.AMDGPU.clamp.(float %388, float 0.000000e+00, float 1.000000e+00) %390 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %391 = load <16 x i8>, <16 x i8> addrspace(2)* %390, align 16, !invariant.load !0 %392 = call float @llvm.SI.load.const(<16 x i8> %391, i32 148) %393 = fcmp ogt float %392, 0.000000e+00 br i1 %393, label %if105, label %endif143 if105: ; preds = %endif80 %394 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %395 = load <16 x i8>, <16 x i8> addrspace(2)* %394, align 16, !invariant.load !0 %396 = call float @llvm.SI.load.const(<16 x i8> %395, i32 144) %397 = call float @llvm.SI.load.const(<16 x i8> %395, i32 0) %398 = call float @llvm.SI.load.const(<16 x i8> %395, i32 4) %399 = call float @llvm.SI.load.const(<16 x i8> %395, i32 8) %400 = fmul float %397, 0.000000e+00 %401 = fadd float %400, %398 %402 = fmul float %399, 0.000000e+00 %403 = fadd float %401, %402 %404 = fadd float %403, %396 %405 = fcmp ole float %404, 0.000000e+00 %406 = uitofp i1 %405 to float %407 = call float @llvm.SI.fs.interp(i32 1, i32 3, i32 %6, <2 x i32> %8) %408 = call float @llvm.SI.fs.interp(i32 2, i32 3, i32 %6, <2 x i32> %8) %409 = call float @llvm.SI.fs.interp(i32 3, i32 3, i32 %6, <2 x i32> %8) %410 = fmul float %407, 0.000000e+00 %411 = fadd float %410, %408 %412 = fmul float %409, 0.000000e+00 %413 = fadd float %411, %412 %414 = fadd float %413, %396 %415 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %416 = load <16 x i8>, <16 x i8> addrspace(2)* %415, align 16, !invariant.load !0 %417 = call float @llvm.SI.load.const(<16 x i8> %416, i32 0) %418 = call float @llvm.SI.fs.interp(i32 1, i32 3, i32 %6, <2 x i32> %8) %419 = fsub float %417, %418 %420 = call float @llvm.SI.load.const(<16 x i8> %416, i32 4) %421 = call float @llvm.SI.fs.interp(i32 2, i32 3, i32 %6, <2 x i32> %8) %422 = fsub float %420, %421 %423 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %424 = load <16 x i8>, <16 x i8> addrspace(2)* %423, align 16, !invariant.load !0 %425 = call float @llvm.SI.load.const(<16 x i8> %424, i32 8) %426 = call float @llvm.SI.fs.interp(i32 3, i32 3, i32 %6, <2 x i32> %8) %427 = fsub float %425, %426 %428 = fmul float %406, 2.000000e+00 %429 = fsub float 1.000000e+00, %428 %430 = fmul float %429, %414 %431 = call float @llvm.minnum.f32(float %430, float 0.000000e+00) %432 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %433 = load <16 x i8>, <16 x i8> addrspace(2)* %432, align 16, !invariant.load !0 %434 = call float @llvm.SI.load.const(<16 x i8> %433, i32 152) %435 = fmul float %434, %370 %436 = fadd float %414, %404 %437 = fmul float %431, %431 %438 = fmul float %419, 0.000000e+00 %439 = fadd float %438, %422 %440 = fmul float %427, 0.000000e+00 %441 = fadd float %439, %440 %442 = fmul float %396, 0.000000e+00 %443 = fadd float %441, %442 %444 = call float @llvm.fabs.f32(float %443) %445 = fdiv float 1.000000e+00, %444, !fpmath !1 %446 = fmul float %437, %445 %447 = fmul float %406, %436 %448 = fsub float %447, %446 %449 = fmul float %435, %448 %450 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %451 = load <16 x i8>, <16 x i8> addrspace(2)* %450, align 16, !invariant.load !0 %452 = call float @llvm.SI.load.const(<16 x i8> %451, i32 148) %453 = fmul float %449, %452 %454 = fmul float %453, 0x3FF7154760000000 %455 = call float @llvm.exp2.f32(float %454) %456 = call float @llvm.AMDGPU.clamp.(float %455, float 0.000000e+00, float 1.000000e+00) %457 = fsub float 1.000000e+00, %456 %458 = call float @llvm.maxnum.f32(float %389, float %457) br label %endif143 endif143: ; preds = %if105, %endif80 %.03 = phi float [ %458, %if105 ], [ %389, %endif80 ] %459 = call float @llvm.AMDGPU.clamp.(float %.03, float 0.000000e+00, float 1.000000e+00) %460 = fsub float 1.000000e+00, %459 %461 = fsub float 1.000000e+00, %459 %462 = fsub float 1.000000e+00, %459 %463 = fmul float %347, %460 %464 = fmul float %349, %461 %465 = fmul float %351, %462 %466 = bitcast float %5 to i32 %467 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> undef, i32 %466, 10 %468 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %467, float %463, 11 %469 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %468, float %464, 12 %470 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %469, float %465, 13 %471 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %470, float 0.000000e+00, 14 %472 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %471, float %21, 24 ret <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %472 } ; Function Attrs: nounwind readnone declare float @llvm.SI.fs.interp(i32, i32, i32, <2 x i32>) #1 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.sqrt.f32(float) #1 ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.maxnum.f32(float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.AMDGPU.clamp.(float, float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.pow.f32(float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.exp2.f32(float) #1 ; Function Attrs: nounwind readnone declare float @llvm.minnum.f32(float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.fabs.f32(float) #1 attributes #0 = { "InitialPSInputAddr"="36983" } attributes #1 = { nounwind readnone } !0 = !{} !1 = !{float 2.500000e+00} FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL IN[1], GENERIC[1], PERSPECTIVE DCL IN[2], GENERIC[2], PERSPECTIVE DCL IN[3], GENERIC[3], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL SAMP[2] DCL SVIEW[0], 2D, FLOAT DCL SVIEW[1], 2D, FLOAT DCL SVIEW[2], 2D, FLOAT DCL CONST[3..8] DCL TEMP[0..4], LOCAL IMM[0] FLT32 { 1.0000, 0.0000, 2.0000, -1.0000} IMM[1] FLT32 { 0.0001, 0.0000, 0.0780, 0.3053} IMM[2] FLT32 { 0.6822, 0.0125, 0.0103, 0.0200} IMM[3] FLT32 { 255.0000, 0.0039, 0.0000, 0.0000} 0: MOV TEMP[0].xy, IN[0].zwww 1: TEX TEMP[0].xyz, TEMP[0], SAMP[1], 2D 2: MAD TEMP[0].xyz, TEMP[0].xyzz, IMM[0].zzzz, IMM[0].wwww 3: DP3 TEMP[1].x, TEMP[0].xyzz, TEMP[0].xyzz 4: RSQ TEMP[1].x, TEMP[1].xxxx 5: MUL TEMP[0].xyz, TEMP[0].xyzz, TEMP[1].xxxx 6: MOV TEMP[1].xy, IN[0].xyyy 7: TEX TEMP[1].w, TEMP[1], SAMP[2], 2D 8: MOV TEMP[2].xy, IN[0].zwww 9: TEX TEMP[2], TEMP[2], SAMP[0], 2D 10: MUL TEMP[2].xyz, TEMP[2], CONST[3] 11: MUL TEMP[2].xyz, TEMP[2].xyzz, IMM[0].zzzz 12: MAD TEMP[1].xyz, TEMP[1].wwww, IMM[1].xxxx, TEMP[2].xyzz 13: DP3 TEMP[2].x, IN[1].xyzz, TEMP[0].xyzz 14: DP3 TEMP[3].x, IN[2].xyzz, TEMP[0].xyzz 15: MOV TEMP[2].y, TEMP[3].xxxx 16: DP3 TEMP[0].x, IN[3].xyzz, TEMP[0].xyzz 17: MOV TEMP[2].z, TEMP[0].xxxx 18: MOV TEMP[0].x, IMM[0].yyyy 19: MUL TEMP[2].xyz, TEMP[2].xyzz, IMM[1].yyyy 20: MOV TEMP[0].yz, TEMP[2].yxyz 21: FSEQ TEMP[2].x, CONST[4].xxxx, IMM[0].yyyy 22: UIF TEMP[2].xxxx :0 23: ELSE :0 24: ENDIF 25: MOV TEMP[2], IMM[0].yyyy 26: UIF CONST[5].xxxx :0 27: MOV TEMP[2].w, IMM[0].xxxx 28: MOV_SAT TEMP[3].x, CONST[6].xxxx 29: POW TEMP[4].x, TEMP[1].xxxx, TEMP[3].xxxx 30: POW TEMP[4].y, TEMP[1].yyyy, TEMP[3].xxxx 31: POW TEMP[4].z, TEMP[1].zzzz, TEMP[3].xxxx 32: MAX TEMP[1].xyz, TEMP[4].xyzz, IMM[0].yyyy 33: MIN TEMP[2].xyz, TEMP[1].xyzz, CONST[7].xxxx 34: ENDIF 35: UIF CONST[5].yyyy :0 36: FSNE TEMP[1].x, CONST[8].xxxx, IMM[0].yyyy 37: UIF TEMP[1].xxxx :0 38: MOV TEMP[1].xyz, TEMP[0].xyzx 39: ELSE :0 40: MAD TEMP[3].xyz, TEMP[0].xyzz, IMM[1].wwww, IMM[2].xxxx 41: MAD TEMP[3].xyz, TEMP[0].xyzz, TEMP[3].xyzz, IMM[2].yyyy 42: MUL TEMP[1].xyz, TEMP[0].xyzz, TEMP[3].xyzz 43: ENDIF 44: MUL TEMP[0].xyz, TEMP[1].xyzz, IMM[2].zzzz 45: MAX TEMP[3].x, TEMP[0].xxxx, TEMP[0].yyyy 46: MAX TEMP[4].x, TEMP[0].zzzz, IMM[2].wwww 47: MAX TEMP[3].x, TEMP[3].xxxx, TEMP[4].xxxx 48: MUL TEMP[3].x, TEMP[3].xxxx, IMM[3].xxxx 49: CEIL TEMP[3].x, TEMP[3].xxxx 50: MUL TEMP[3].x, TEMP[3].xxxx, IMM[3].yyyy 51: MAX TEMP[3].x, TEMP[3].xxxx, IMM[2].wwww 52: MOV TEMP[1].w, TEMP[3].xxxx 53: RCP TEMP[3].x, TEMP[3].xxxx 54: MUL TEMP[1].xyz, TEMP[0].xyzz, TEMP[3].xxxx 55: MOV TEMP[2], TEMP[1] 56: ENDIF 57: MOV OUT[0], TEMP[2] 58: END radeonsi: Compiling shader 67 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_ps <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), float inreg, i32 inreg, <2 x i32>, <2 x i32>, <2 x i32>, <3 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, float, float, float, float, float, i32, i32, float, i32) #0 { main_body: %23 = call float @llvm.SI.fs.interp(i32 2, i32 0, i32 %6, <2 x i32> %8) %24 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %6, <2 x i32> %8) %25 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 2, !amdgpu.uniform !0 %26 = load <8 x i32>, <8 x i32> addrspace(2)* %25, align 32, !invariant.load !0 %27 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %28 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %27, i64 0, i64 7, !amdgpu.uniform !0 %29 = load <4 x i32>, <4 x i32> addrspace(2)* %28, align 16, !invariant.load !0 %30 = bitcast float %23 to i32 %31 = bitcast float %24 to i32 %32 = insertelement <2 x i32> undef, i32 %30, i32 0 %33 = insertelement <2 x i32> %32, i32 %31, i32 1 %34 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %33, <8 x i32> %26, <4 x i32> %29, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %35 = extractelement <4 x float> %34, i32 0 %36 = extractelement <4 x float> %34, i32 1 %37 = extractelement <4 x float> %34, i32 2 %38 = fmul float %35, 2.000000e+00 %39 = fadd float %38, -1.000000e+00 %40 = fmul float %36, 2.000000e+00 %41 = fadd float %40, -1.000000e+00 %42 = fmul float %37, 2.000000e+00 %43 = fadd float %42, -1.000000e+00 %44 = fmul float %39, %39 %45 = fmul float %41, %41 %46 = fadd float %45, %44 %47 = fmul float %43, %43 %48 = fadd float %46, %47 %49 = call float @llvm.sqrt.f32(float %48) %50 = fdiv float 1.000000e+00, %49, !fpmath !1 %51 = fmul float %39, %50 %52 = fmul float %41, %50 %53 = fmul float %43, %50 %54 = call float @llvm.SI.fs.interp(i32 0, i32 0, i32 %6, <2 x i32> %8) %55 = call float @llvm.SI.fs.interp(i32 1, i32 0, i32 %6, <2 x i32> %8) %56 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 4, !amdgpu.uniform !0 %57 = load <8 x i32>, <8 x i32> addrspace(2)* %56, align 32, !invariant.load !0 %58 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %59 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %58, i64 0, i64 11, !amdgpu.uniform !0 %60 = load <4 x i32>, <4 x i32> addrspace(2)* %59, align 16, !invariant.load !0 %61 = bitcast float %54 to i32 %62 = bitcast float %55 to i32 %63 = insertelement <2 x i32> undef, i32 %61, i32 0 %64 = insertelement <2 x i32> %63, i32 %62, i32 1 %65 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %64, <8 x i32> %57, <4 x i32> %60, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %66 = extractelement <4 x float> %65, i32 3 %67 = call float @llvm.SI.fs.interp(i32 2, i32 0, i32 %6, <2 x i32> %8) %68 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %6, <2 x i32> %8) %69 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 0, !amdgpu.uniform !0 %70 = load <8 x i32>, <8 x i32> addrspace(2)* %69, align 32, !invariant.load !0 %71 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %72 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %71, i64 0, i64 3, !amdgpu.uniform !0 %73 = load <4 x i32>, <4 x i32> addrspace(2)* %72, align 16, !invariant.load !0 %74 = bitcast float %67 to i32 %75 = bitcast float %68 to i32 %76 = insertelement <2 x i32> undef, i32 %74, i32 0 %77 = insertelement <2 x i32> %76, i32 %75, i32 1 %78 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %77, <8 x i32> %70, <4 x i32> %73, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %79 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %80 = load <16 x i8>, <16 x i8> addrspace(2)* %79, align 16, !invariant.load !0 %81 = call float @llvm.SI.fs.interp(i32 0, i32 1, i32 %6, <2 x i32> %8) %82 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %83 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %84 = fmul float %81, %51 %85 = fmul float %82, %52 %86 = fadd float %85, %84 %87 = fmul float %83, %53 %88 = fadd float %86, %87 %89 = call float @llvm.SI.fs.interp(i32 0, i32 2, i32 %6, <2 x i32> %8) %90 = call float @llvm.SI.fs.interp(i32 1, i32 2, i32 %6, <2 x i32> %8) %91 = call float @llvm.SI.fs.interp(i32 2, i32 2, i32 %6, <2 x i32> %8) %92 = fmul float %89, %51 %93 = fmul float %90, %52 %94 = fadd float %93, %92 %95 = fmul float %91, %53 %96 = fadd float %94, %95 %97 = fmul float %88, 0x3EB0C6F7A0000000 %98 = fmul float %96, 0x3EB0C6F7A0000000 %99 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %100 = load <16 x i8>, <16 x i8> addrspace(2)* %99, align 16, !invariant.load !0 %101 = call float @llvm.SI.load.const(<16 x i8> %100, i32 80) %102 = bitcast float %101 to i32 %103 = icmp eq i32 %102, 0 br i1 %103, label %endif34, label %if26 if26: ; preds = %main_body %104 = fmul float %66, 0x3F1A36E2E0000000 %105 = extractelement <4 x float> %78, i32 2 %106 = call float @llvm.SI.load.const(<16 x i8> %80, i32 56) %107 = fmul float %105, %106 %108 = fmul float %107, 2.000000e+00 %109 = fadd float %104, %108 %110 = fmul float %66, 0x3F1A36E2E0000000 %111 = extractelement <4 x float> %78, i32 1 %112 = call float @llvm.SI.load.const(<16 x i8> %80, i32 52) %113 = fmul float %111, %112 %114 = fmul float %113, 2.000000e+00 %115 = fadd float %110, %114 %116 = fmul float %66, 0x3F1A36E2E0000000 %117 = extractelement <4 x float> %78, i32 0 %118 = call float @llvm.SI.load.const(<16 x i8> %80, i32 48) %119 = fmul float %117, %118 %120 = fmul float %119, 2.000000e+00 %121 = fadd float %116, %120 %122 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %123 = load <16 x i8>, <16 x i8> addrspace(2)* %122, align 16, !invariant.load !0 %124 = call float @llvm.SI.load.const(<16 x i8> %123, i32 96) %125 = call float @llvm.AMDGPU.clamp.(float %124, float 0.000000e+00, float 1.000000e+00) %126 = call float @llvm.pow.f32(float %121, float %125) %127 = call float @llvm.pow.f32(float %115, float %125) %128 = call float @llvm.pow.f32(float %109, float %125) %129 = call float @llvm.maxnum.f32(float %126, float 0.000000e+00) %130 = call float @llvm.maxnum.f32(float %127, float 0.000000e+00) %131 = call float @llvm.maxnum.f32(float %128, float 0.000000e+00) %132 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %133 = load <16 x i8>, <16 x i8> addrspace(2)* %132, align 16, !invariant.load !0 %134 = call float @llvm.SI.load.const(<16 x i8> %133, i32 112) %135 = call float @llvm.minnum.f32(float %129, float %134) %136 = call float @llvm.SI.load.const(<16 x i8> %133, i32 112) %137 = call float @llvm.minnum.f32(float %130, float %136) %138 = call float @llvm.SI.load.const(<16 x i8> %133, i32 112) %139 = call float @llvm.minnum.f32(float %131, float %138) br label %endif34 endif34: ; preds = %main_body, %if26 %.09 = phi float [ %135, %if26 ], [ 0.000000e+00, %main_body ] %.07 = phi float [ %137, %if26 ], [ 0.000000e+00, %main_body ] %.05 = phi float [ %139, %if26 ], [ 0.000000e+00, %main_body ] %.04 = phi float [ 1.000000e+00, %if26 ], [ 0.000000e+00, %main_body ] %140 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %141 = load <16 x i8>, <16 x i8> addrspace(2)* %140, align 16, !invariant.load !0 %142 = call float @llvm.SI.load.const(<16 x i8> %141, i32 84) %143 = bitcast float %142 to i32 %144 = icmp eq i32 %143, 0 br i1 %144, label %endif56, label %if35 if35: ; preds = %endif34 %145 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %146 = load <16 x i8>, <16 x i8> addrspace(2)* %145, align 16, !invariant.load !0 %147 = call float @llvm.SI.load.const(<16 x i8> %146, i32 128) %148 = fcmp une float %147, 0.000000e+00 br i1 %148, label %endif43, label %else39 else39: ; preds = %if35 %149 = fmul float %97, 0x3FD38A2220000000 %150 = fadd float %149, 0x3FE5D45880000000 %151 = fmul float %98, 0x3FD38A2220000000 %152 = fadd float %151, 0x3FE5D45880000000 %153 = fmul float %97, %150 %154 = fadd float %153, 0x3F89A59880000000 %155 = fmul float %98, %152 %156 = fadd float %155, 0x3F89A59880000000 %157 = fmul float %97, %154 %158 = fmul float %98, %156 br label %endif43 endif43: ; preds = %if35, %else39 %.03 = phi float [ %158, %else39 ], [ %98, %if35 ] %.02 = phi float [ %157, %else39 ], [ %97, %if35 ] %159 = fmul float %.02, 0x3F851D0820000000 %160 = fmul float %.03, 0x3F851D0820000000 %161 = call float @llvm.maxnum.f32(float %159, float 0.000000e+00) %162 = call float @llvm.maxnum.f32(float %160, float 0x3F947AE140000000) %163 = call float @llvm.maxnum.f32(float %161, float %162) %164 = fmul float %163, 2.550000e+02 %165 = call float @llvm.ceil.f32(float %164) %166 = fmul float %165, 0x3F70101020000000 %167 = call float @llvm.maxnum.f32(float %166, float 0x3F947AE140000000) %168 = fdiv float 1.000000e+00, %167, !fpmath !1 %169 = fmul float %168, 0.000000e+00 %170 = fmul float %159, %168 %171 = fmul float %160, %168 br label %endif56 endif56: ; preds = %endif34, %endif43 %.110 = phi float [ %169, %endif43 ], [ %.09, %endif34 ] %.18 = phi float [ %170, %endif43 ], [ %.07, %endif34 ] %.16 = phi float [ %171, %endif43 ], [ %.05, %endif34 ] %.1 = phi float [ %167, %endif43 ], [ %.04, %endif34 ] %172 = bitcast float %5 to i32 %173 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> undef, i32 %172, 10 %174 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %173, float %.110, 11 %175 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %174, float %.18, 12 %176 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %175, float %.16, 13 %177 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %176, float %.1, 14 %178 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %177, float %21, 24 ret <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %178 } ; Function Attrs: nounwind readnone declare float @llvm.SI.fs.interp(i32, i32, i32, <2 x i32>) #1 ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.sqrt.f32(float) #1 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.AMDGPU.clamp.(float, float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.pow.f32(float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.maxnum.f32(float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.minnum.f32(float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.ceil.f32(float) #1 attributes #0 = { "InitialPSInputAddr"="36983" } attributes #1 = { nounwind readnone } !0 = !{} !1 = !{float 2.500000e+00} VERT PROPERTY NEXT_SHADER FRAG DCL IN[0] DCL IN[1] DCL IN[2] DCL IN[3] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] DCL OUT[2], GENERIC[1] DCL OUT[3], GENERIC[2] DCL OUT[4], GENERIC[3] DCL CONST[0..13] DCL TEMP[0..5], LOCAL 0: MUL TEMP[0], CONST[0], IN[0].xxxx 1: MAD TEMP[0], CONST[1], IN[0].yyyy, TEMP[0] 2: MAD TEMP[0], CONST[2], IN[0].zzzz, TEMP[0] 3: MAD TEMP[0].xyz, CONST[3], IN[0].wwww, TEMP[0] 4: MOV TEMP[1].x, CONST[4].xxxx 5: MOV TEMP[1].y, CONST[5].xxxx 6: MOV TEMP[1].z, CONST[6].xxxx 7: MOV TEMP[2].x, CONST[4].yyyy 8: MOV TEMP[2].y, CONST[5].yyyy 9: MOV TEMP[2].z, CONST[6].yyyy 10: MOV TEMP[3].x, CONST[4].zzzz 11: MOV TEMP[3].y, CONST[5].zzzz 12: MOV TEMP[3].z, CONST[6].zzzz 13: MUL TEMP[1].xyz, TEMP[1].xyzz, IN[1].xxxx 14: MAD TEMP[1].xyz, TEMP[2].xyzz, IN[1].yyyy, TEMP[1].xyzz 15: MAD TEMP[1].xyz, TEMP[3].xyzz, IN[1].zzzz, TEMP[1].xyzz 16: DP3 TEMP[2].x, TEMP[1].xyzz, TEMP[1].xyzz 17: RSQ TEMP[2].x, TEMP[2].xxxx 18: MUL TEMP[1].xyz, TEMP[1].xyzz, TEMP[2].xxxx 19: MUL TEMP[2].xyz, CONST[0].xyzz, IN[3].xxxx 20: MAD TEMP[2].xyz, CONST[1].xyzz, IN[3].yyyy, TEMP[2].xyzz 21: MAD TEMP[2].xyz, CONST[2].xyzz, IN[3].zzzz, TEMP[2].xyzz 22: DP3 TEMP[3].x, TEMP[2].xyzz, TEMP[2].xyzz 23: RSQ TEMP[3].x, TEMP[3].xxxx 24: MUL TEMP[2].xyz, TEMP[2].xyzz, TEMP[3].xxxx 25: MUL TEMP[3].xyz, TEMP[1].zxyy, TEMP[2].yzxx 26: MAD TEMP[3].xyz, TEMP[1].yzxx, TEMP[2].zxyy, -TEMP[3].xyzz 27: MUL TEMP[4].x, IN[3].wwww, CONST[8].wwww 28: MUL TEMP[3].xyz, TEMP[3].xyzz, TEMP[4].xxxx 29: MOV TEMP[4].x, TEMP[2].xxxx 30: MOV TEMP[4].y, TEMP[3].xxxx 31: MOV TEMP[4].z, TEMP[1].xxxx 32: MOV TEMP[4].w, TEMP[0].xxxx 33: MOV TEMP[5].x, TEMP[2].yyyy 34: MOV TEMP[5].y, TEMP[3].yyyy 35: MOV TEMP[5].z, TEMP[1].yyyy 36: MOV TEMP[5].w, TEMP[0].yyyy 37: MOV TEMP[2].x, TEMP[2].zzzz 38: MOV TEMP[2].y, TEMP[3].zzzz 39: MOV TEMP[2].z, TEMP[1].zzzz 40: MOV TEMP[2].w, TEMP[0].zzzz 41: MUL TEMP[0], CONST[10], IN[0].xxxx 42: MAD TEMP[0], CONST[11], IN[0].yyyy, TEMP[0] 43: MAD TEMP[0], CONST[12], IN[0].zzzz, TEMP[0] 44: MAD TEMP[0], CONST[13], IN[0].wwww, TEMP[0] 45: MAD TEMP[1].xy, IN[2].xyyy, CONST[9].xyyy, CONST[9].zwww 46: MOV OUT[3], TEMP[2] 47: MOV OUT[4], TEMP[1] 48: MOV OUT[0], TEMP[0] 49: MOV OUT[1], TEMP[4] 50: MOV OUT[2], TEMP[5] 51: END radeonsi: Compiling shader 68 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_vs <{ float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32, i32, i32, i32, i32, i32, i32, i32) { main_body: %18 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 0, !amdgpu.uniform !0 %19 = load <16 x i8>, <16 x i8> addrspace(2)* %18, align 16, !invariant.load !0 %20 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %19, i32 0, i32 %14) %21 = extractelement <4 x float> %20, i32 0 %22 = extractelement <4 x float> %20, i32 1 %23 = extractelement <4 x float> %20, i32 2 %24 = extractelement <4 x float> %20, i32 3 %25 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 1, !amdgpu.uniform !0 %26 = load <16 x i8>, <16 x i8> addrspace(2)* %25, align 16, !invariant.load !0 %27 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %26, i32 0, i32 %15) %28 = extractelement <4 x float> %27, i32 0 %29 = extractelement <4 x float> %27, i32 1 %30 = extractelement <4 x float> %27, i32 2 %31 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 2, !amdgpu.uniform !0 %32 = load <16 x i8>, <16 x i8> addrspace(2)* %31, align 16, !invariant.load !0 %33 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %32, i32 0, i32 %16) %34 = extractelement <4 x float> %33, i32 0 %35 = extractelement <4 x float> %33, i32 1 %36 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %5, i64 0, i64 3, !amdgpu.uniform !0 %37 = load <16 x i8>, <16 x i8> addrspace(2)* %36, align 16, !invariant.load !0 %38 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %37, i32 0, i32 %17) %39 = extractelement <4 x float> %38, i32 0 %40 = extractelement <4 x float> %38, i32 1 %41 = extractelement <4 x float> %38, i32 2 %42 = extractelement <4 x float> %38, i32 3 %43 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %44 = load <16 x i8>, <16 x i8> addrspace(2)* %43, align 16, !invariant.load !0 %45 = call float @llvm.SI.load.const(<16 x i8> %44, i32 0) %46 = fmul float %45, %21 %47 = call float @llvm.SI.load.const(<16 x i8> %44, i32 4) %48 = fmul float %47, %21 %49 = call float @llvm.SI.load.const(<16 x i8> %44, i32 8) %50 = fmul float %49, %21 %51 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %52 = load <16 x i8>, <16 x i8> addrspace(2)* %51, align 16, !invariant.load !0 %53 = call float @llvm.SI.load.const(<16 x i8> %52, i32 16) %54 = fmul float %53, %22 %55 = fadd float %54, %46 %56 = call float @llvm.SI.load.const(<16 x i8> %52, i32 20) %57 = fmul float %56, %22 %58 = fadd float %57, %48 %59 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %60 = load <16 x i8>, <16 x i8> addrspace(2)* %59, align 16, !invariant.load !0 %61 = call float @llvm.SI.load.const(<16 x i8> %60, i32 24) %62 = fmul float %61, %22 %63 = fadd float %62, %50 %64 = call float @llvm.SI.load.const(<16 x i8> %60, i32 32) %65 = fmul float %64, %23 %66 = fadd float %65, %55 %67 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %68 = load <16 x i8>, <16 x i8> addrspace(2)* %67, align 16, !invariant.load !0 %69 = call float @llvm.SI.load.const(<16 x i8> %68, i32 36) %70 = fmul float %69, %23 %71 = fadd float %70, %58 %72 = call float @llvm.SI.load.const(<16 x i8> %68, i32 40) %73 = fmul float %72, %23 %74 = fadd float %73, %63 %75 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %76 = load <16 x i8>, <16 x i8> addrspace(2)* %75, align 16, !invariant.load !0 %77 = call float @llvm.SI.load.const(<16 x i8> %76, i32 48) %78 = fmul float %77, %24 %79 = fadd float %78, %66 %80 = call float @llvm.SI.load.const(<16 x i8> %76, i32 52) %81 = fmul float %80, %24 %82 = fadd float %81, %71 %83 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %84 = load <16 x i8>, <16 x i8> addrspace(2)* %83, align 16, !invariant.load !0 %85 = call float @llvm.SI.load.const(<16 x i8> %84, i32 56) %86 = fmul float %85, %24 %87 = fadd float %86, %74 %88 = call float @llvm.SI.load.const(<16 x i8> %84, i32 64) %89 = call float @llvm.SI.load.const(<16 x i8> %84, i32 80) %90 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %91 = load <16 x i8>, <16 x i8> addrspace(2)* %90, align 16, !invariant.load !0 %92 = call float @llvm.SI.load.const(<16 x i8> %91, i32 96) %93 = call float @llvm.SI.load.const(<16 x i8> %91, i32 68) %94 = call float @llvm.SI.load.const(<16 x i8> %91, i32 84) %95 = call float @llvm.SI.load.const(<16 x i8> %91, i32 100) %96 = call float @llvm.SI.load.const(<16 x i8> %91, i32 72) %97 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %98 = load <16 x i8>, <16 x i8> addrspace(2)* %97, align 16, !invariant.load !0 %99 = call float @llvm.SI.load.const(<16 x i8> %98, i32 88) %100 = call float @llvm.SI.load.const(<16 x i8> %98, i32 104) %101 = fmul float %88, %28 %102 = fmul float %89, %28 %103 = fmul float %92, %28 %104 = fmul float %93, %29 %105 = fadd float %104, %101 %106 = fmul float %94, %29 %107 = fadd float %106, %102 %108 = fmul float %95, %29 %109 = fadd float %108, %103 %110 = fmul float %96, %30 %111 = fadd float %110, %105 %112 = fmul float %99, %30 %113 = fadd float %112, %107 %114 = fmul float %100, %30 %115 = fadd float %114, %109 %116 = fmul float %111, %111 %117 = fmul float %113, %113 %118 = fadd float %117, %116 %119 = fmul float %115, %115 %120 = fadd float %118, %119 %121 = call float @llvm.sqrt.f32(float %120) %122 = fdiv float 1.000000e+00, %121, !fpmath !1 %123 = fmul float %111, %122 %124 = fmul float %113, %122 %125 = fmul float %115, %122 %126 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %127 = load <16 x i8>, <16 x i8> addrspace(2)* %126, align 16, !invariant.load !0 %128 = call float @llvm.SI.load.const(<16 x i8> %127, i32 0) %129 = fmul float %128, %39 %130 = call float @llvm.SI.load.const(<16 x i8> %127, i32 4) %131 = fmul float %130, %39 %132 = call float @llvm.SI.load.const(<16 x i8> %127, i32 8) %133 = fmul float %132, %39 %134 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %135 = load <16 x i8>, <16 x i8> addrspace(2)* %134, align 16, !invariant.load !0 %136 = call float @llvm.SI.load.const(<16 x i8> %135, i32 16) %137 = fmul float %136, %40 %138 = fadd float %137, %129 %139 = call float @llvm.SI.load.const(<16 x i8> %135, i32 20) %140 = fmul float %139, %40 %141 = fadd float %140, %131 %142 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %143 = load <16 x i8>, <16 x i8> addrspace(2)* %142, align 16, !invariant.load !0 %144 = call float @llvm.SI.load.const(<16 x i8> %143, i32 24) %145 = fmul float %144, %40 %146 = fadd float %145, %133 %147 = call float @llvm.SI.load.const(<16 x i8> %143, i32 32) %148 = fmul float %147, %41 %149 = fadd float %148, %138 %150 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %151 = load <16 x i8>, <16 x i8> addrspace(2)* %150, align 16, !invariant.load !0 %152 = call float @llvm.SI.load.const(<16 x i8> %151, i32 36) %153 = fmul float %152, %41 %154 = fadd float %153, %141 %155 = call float @llvm.SI.load.const(<16 x i8> %151, i32 40) %156 = fmul float %155, %41 %157 = fadd float %156, %146 %158 = fmul float %149, %149 %159 = fmul float %154, %154 %160 = fadd float %159, %158 %161 = fmul float %157, %157 %162 = fadd float %160, %161 %163 = call float @llvm.sqrt.f32(float %162) %164 = fdiv float 1.000000e+00, %163, !fpmath !1 %165 = fmul float %149, %164 %166 = fmul float %154, %164 %167 = fmul float %157, %164 %168 = fmul float %125, %166 %169 = fmul float %123, %167 %170 = fmul float %124, %165 %171 = fmul float %124, %167 %172 = fsub float %171, %168 %173 = fmul float %125, %165 %174 = fsub float %173, %169 %175 = fmul float %123, %166 %176 = fsub float %175, %170 %177 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %178 = load <16 x i8>, <16 x i8> addrspace(2)* %177, align 16, !invariant.load !0 %179 = call float @llvm.SI.load.const(<16 x i8> %178, i32 140) %180 = fmul float %42, %179 %181 = fmul float %172, %180 %182 = fmul float %174, %180 %183 = fmul float %176, %180 %184 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %185 = load <16 x i8>, <16 x i8> addrspace(2)* %184, align 16, !invariant.load !0 %186 = call float @llvm.SI.load.const(<16 x i8> %185, i32 160) %187 = fmul float %186, %21 %188 = call float @llvm.SI.load.const(<16 x i8> %185, i32 164) %189 = fmul float %188, %21 %190 = call float @llvm.SI.load.const(<16 x i8> %185, i32 168) %191 = fmul float %190, %21 %192 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %193 = load <16 x i8>, <16 x i8> addrspace(2)* %192, align 16, !invariant.load !0 %194 = call float @llvm.SI.load.const(<16 x i8> %193, i32 172) %195 = fmul float %194, %21 %196 = call float @llvm.SI.load.const(<16 x i8> %193, i32 176) %197 = fmul float %196, %22 %198 = fadd float %197, %187 %199 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %200 = load <16 x i8>, <16 x i8> addrspace(2)* %199, align 16, !invariant.load !0 %201 = call float @llvm.SI.load.const(<16 x i8> %200, i32 180) %202 = fmul float %201, %22 %203 = fadd float %202, %189 %204 = call float @llvm.SI.load.const(<16 x i8> %200, i32 184) %205 = fmul float %204, %22 %206 = fadd float %205, %191 %207 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %208 = load <16 x i8>, <16 x i8> addrspace(2)* %207, align 16, !invariant.load !0 %209 = call float @llvm.SI.load.const(<16 x i8> %208, i32 188) %210 = fmul float %209, %22 %211 = fadd float %210, %195 %212 = call float @llvm.SI.load.const(<16 x i8> %208, i32 192) %213 = fmul float %212, %23 %214 = fadd float %213, %198 %215 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %216 = load <16 x i8>, <16 x i8> addrspace(2)* %215, align 16, !invariant.load !0 %217 = call float @llvm.SI.load.const(<16 x i8> %216, i32 196) %218 = fmul float %217, %23 %219 = fadd float %218, %203 %220 = call float @llvm.SI.load.const(<16 x i8> %216, i32 200) %221 = fmul float %220, %23 %222 = fadd float %221, %206 %223 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %224 = load <16 x i8>, <16 x i8> addrspace(2)* %223, align 16, !invariant.load !0 %225 = call float @llvm.SI.load.const(<16 x i8> %224, i32 204) %226 = fmul float %225, %23 %227 = fadd float %226, %211 %228 = call float @llvm.SI.load.const(<16 x i8> %224, i32 208) %229 = fmul float %228, %24 %230 = fadd float %229, %214 %231 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %232 = load <16 x i8>, <16 x i8> addrspace(2)* %231, align 16, !invariant.load !0 %233 = call float @llvm.SI.load.const(<16 x i8> %232, i32 212) %234 = fmul float %233, %24 %235 = fadd float %234, %219 %236 = call float @llvm.SI.load.const(<16 x i8> %232, i32 216) %237 = fmul float %236, %24 %238 = fadd float %237, %222 %239 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %240 = load <16 x i8>, <16 x i8> addrspace(2)* %239, align 16, !invariant.load !0 %241 = call float @llvm.SI.load.const(<16 x i8> %240, i32 220) %242 = fmul float %241, %24 %243 = fadd float %242, %227 %244 = call float @llvm.SI.load.const(<16 x i8> %240, i32 144) %245 = call float @llvm.SI.load.const(<16 x i8> %240, i32 152) %246 = fmul float %34, %244 %247 = fadd float %246, %245 %248 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %249 = load <16 x i8>, <16 x i8> addrspace(2)* %248, align 16, !invariant.load !0 %250 = call float @llvm.SI.load.const(<16 x i8> %249, i32 148) %251 = call float @llvm.SI.load.const(<16 x i8> %249, i32 156) %252 = fmul float %35, %250 %253 = fadd float %252, %251 %254 = bitcast i32 %12 to float %255 = insertvalue <{ float, float, float }> undef, float %254, 2 call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 32, i32 0, float %165, float %181, float %123, float %79) call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 33, i32 0, float %166, float %182, float %124, float %82) call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 34, i32 0, float %167, float %183, float %125, float %87) call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 35, i32 0, float %247, float %253, float %125, float undef) call void @llvm.SI.export(i32 15, i32 0, i32 1, i32 12, i32 0, float %230, float %235, float %238, float %243) ret <{ float, float, float }> %255 } ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.vs.load.input(<16 x i8>, i32, i32) #0 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #0 ; Function Attrs: nounwind readnone declare float @llvm.sqrt.f32(float) #0 ; Function Attrs: nounwind declare void @llvm.SI.export(i32, i32, i32, i32, i32, float, float, float, float) #1 attributes #0 = { nounwind readnone } attributes #1 = { nounwind } !0 = !{} !1 = !{float 2.500000e+00} FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL IN[1], GENERIC[1], PERSPECTIVE DCL IN[2], GENERIC[2], PERSPECTIVE DCL IN[3], GENERIC[3], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL SAMP[2] DCL SAMP[3] DCL SVIEW[0], CUBE, FLOAT DCL SVIEW[1], CUBE, FLOAT DCL SVIEW[2], 2D, FLOAT DCL SVIEW[3], 2D, FLOAT DCL CONST[0..8] DCL CONST[10] DCL CONST[12..15] DCL CONST[18..19] DCL TEMP[0..12], LOCAL IMM[0] FLT32 { 0.0000, 2.0000, -1.0000, 1.0000} IMM[1] FLT32 { 1.2500, 3.0000, 0.0780, 0.0001} IMM[2] FLT32 { 0.0000, 0.0100, 64.0000, 1.4427} IMM[3] FLT32 { 4.0000, 0.5000, 1.2000, 1.7000} IMM[4] INT32 {1, 0, 0, 0} 0: MOV TEMP[0].x, IN[0].wwww 1: MOV TEMP[0].y, IN[1].wwww 2: MOV TEMP[0].z, IN[2].wwww 3: ADD TEMP[1].xyz, CONST[0].xyzz, -TEMP[0].xyzz 4: DP3 TEMP[2].x, TEMP[1].xyzz, TEMP[1].xyzz 5: RSQ TEMP[2].x, TEMP[2].xxxx 6: MUL TEMP[1].xyz, TEMP[1].xyzz, TEMP[2].xxxx 7: MUL TEMP[2].xyz, IN[0].xyzz, TEMP[1].xxxx 8: MAD TEMP[2].xyz, IN[1].xyzz, TEMP[1].yyyy, TEMP[2].xyzz 9: MAD TEMP[2].z, IN[2].xyzz, TEMP[1].zzzz, TEMP[2].xyzz 10: MOV TEMP[3].xy, IN[3].xyyy 11: TEX TEMP[3], TEMP[3], SAMP[3], 2D 12: MAD TEMP[4].xyz, TEMP[3].xyzz, IMM[0].yyyy, IMM[0].zzzz 13: DP3 TEMP[5].x, TEMP[4].xyzz, TEMP[4].xyzz 14: RSQ TEMP[5].x, TEMP[5].xxxx 15: MUL TEMP[4].xyz, TEMP[4].xyzz, TEMP[5].xxxx 16: MOV TEMP[5].xy, IN[3].xyyy 17: TEX TEMP[5], TEMP[5], SAMP[2], 2D 18: MUL TEMP[5].xyz, TEMP[5], CONST[18] 19: MUL TEMP[5].xyz, TEMP[5].xyzz, IMM[0].yyyy 20: DP3 TEMP[6].x, IN[0].xyzz, TEMP[4].xyzz 21: DP3 TEMP[7].x, IN[1].xyzz, TEMP[4].xyzz 22: MOV TEMP[6].y, TEMP[7].xxxx 23: DP3 TEMP[7].x, IN[2].xyzz, TEMP[4].xyzz 24: MOV TEMP[6].z, TEMP[7].xxxx 25: MOV TEMP[7].w, IMM[0].wwww 26: MOV TEMP[7].xyz, TEMP[5].xyzx 27: DP3 TEMP[8].x, TEMP[6].xyzz, TEMP[6].xyzz 28: RSQ TEMP[8].x, TEMP[8].xxxx 29: MUL TEMP[6].y, TEMP[6].xyzz, TEMP[8].xxxx 30: MOV TEMP[8], CONST[5] 31: FSLT TEMP[9].x, IMM[0].xxxx, TEMP[6].yyyy 32: UIF TEMP[9].xxxx :0 33: MOV_SAT TEMP[9].x, TEMP[6].yyyy 34: MUL TEMP[9].x, TEMP[9].xxxx, IMM[1].xxxx 35: MOV_SAT TEMP[9].x, TEMP[9].xxxx 36: MUL TEMP[10].x, IMM[0].yyyy, TEMP[9].xxxx 37: ADD TEMP[10].x, IMM[1].yyyy, -TEMP[10].xxxx 38: MUL TEMP[10].x, TEMP[9].xxxx, TEMP[10].xxxx 39: MUL TEMP[9].x, TEMP[9].xxxx, TEMP[10].xxxx 40: LRP TEMP[8], TEMP[9].xxxx, CONST[4], CONST[5] 41: ELSE :0 42: MOV_SAT TEMP[6].x, -TEMP[6].yyyy 43: MUL TEMP[6].x, TEMP[6].xxxx, IMM[1].xxxx 44: MOV_SAT TEMP[6].x, TEMP[6].xxxx 45: MUL TEMP[9].x, IMM[0].yyyy, TEMP[6].xxxx 46: ADD TEMP[9].x, IMM[1].yyyy, -TEMP[9].xxxx 47: MUL TEMP[9].x, TEMP[6].xxxx, TEMP[9].xxxx 48: MUL TEMP[6].x, TEMP[6].xxxx, TEMP[9].xxxx 49: LRP TEMP[8], TEMP[6].xxxx, CONST[6], TEMP[8] 50: ENDIF 51: MUL TEMP[6], TEMP[8], TEMP[7] 52: MUL TEMP[7].x, IMM[0].yyyy, CONST[7].xxxx 53: MUL TEMP[6].xyz, TEMP[6], TEMP[7].xxxx 54: FSEQ TEMP[7].x, CONST[19].xxxx, IMM[0].xxxx 55: UIF TEMP[7].xxxx :0 56: MOV TEMP[7].x, IMM[1].zzzz 57: ELSE :0 58: MOV TEMP[7].x, CONST[19].xxxx 59: ENDIF 60: MAD TEMP[2].x, TEMP[2].zzzz, IMM[1].wwww, TEMP[7].xxxx 61: DP3 TEMP[7].x, IN[0].xyzz, TEMP[4].xyzz 62: DP3 TEMP[8].x, IN[1].xyzz, TEMP[4].xyzz 63: MOV TEMP[7].y, TEMP[8].xxxx 64: DP3 TEMP[4].x, IN[2].xyzz, TEMP[4].xyzz 65: MOV TEMP[7].z, TEMP[4].xxxx 66: DP3 TEMP[4].x, TEMP[7].xyzz, TEMP[7].xyzz 67: RSQ TEMP[4].x, TEMP[4].xxxx 68: MUL TEMP[4].xyz, TEMP[7].xyzz, TEMP[4].xxxx 69: DP3 TEMP[7].x, CONST[1].xyzz, CONST[1].xyzz 70: RSQ TEMP[7].x, TEMP[7].xxxx 71: MUL TEMP[7].xyz, CONST[1].xyzz, TEMP[7].xxxx 72: DP3 TEMP[8].x, TEMP[1].xyzz, TEMP[1].xyzz 73: RSQ TEMP[8].x, TEMP[8].xxxx 74: MUL TEMP[8].xyz, TEMP[1].xyzz, TEMP[8].xxxx 75: DP3 TEMP[9].x, TEMP[4].xyzz, TEMP[7].xyzz 76: MAX TEMP[9].x, IMM[0].xxxx, TEMP[9].xxxx 77: MOV TEMP[10].x, IMM[0].xxxx 78: FSLT TEMP[11].x, IMM[0].xxxx, TEMP[3].wwww 79: FSLT TEMP[12].x, IMM[0].xxxx, TEMP[2].xxxx 80: AND TEMP[11].x, TEMP[11].xxxx, TEMP[12].xxxx 81: UIF TEMP[11].xxxx :0 82: MOV TEMP[7].xyz, -TEMP[7].xyzx 83: DP3 TEMP[11].x, TEMP[4].xyzz, TEMP[7].xyzz 84: MUL TEMP[4].xyz, TEMP[11].xxxx, TEMP[4].xyzz 85: MUL TEMP[4].xyz, IMM[0].yyyy, TEMP[4].xyzz 86: ADD TEMP[4].xyz, TEMP[7].xyzz, -TEMP[4].xyzz 87: DP3 TEMP[4].x, TEMP[8].xyzz, TEMP[4].xyzz 88: MAX TEMP[4].x, IMM[2].xxxx, TEMP[4].xxxx 89: MUL TEMP[7].x, TEMP[9].xxxx, IMM[0].yyyy 90: SQRT TEMP[7].x, TEMP[7].xxxx 91: MOV_SAT TEMP[7].x, TEMP[7].xxxx 92: MUL TEMP[4].x, TEMP[4].xxxx, TEMP[7].xxxx 93: ADD TEMP[2].x, TEMP[2].xxxx, IMM[2].yyyy 94: MUL TEMP[2].x, TEMP[2].xxxx, IMM[2].zzzz 95: MAX TEMP[2].x, IMM[1].wwww, TEMP[2].xxxx 96: POW TEMP[2].x, TEMP[4].xxxx, TEMP[2].xxxx 97: MUL TEMP[10].x, TEMP[2].xxxx, TEMP[3].wwww 98: ENDIF 99: MUL TEMP[2].xyz, CONST[2].xyzz, CONST[3].xyzz 100: MUL TEMP[3].xyz, TEMP[5].xyzz, CONST[2].xyzz 101: MUL TEMP[3].xyz, TEMP[3].xyzz, TEMP[9].xxxx 102: MAD TEMP[2].xyz, TEMP[2].xyzz, TEMP[10].xxxx, TEMP[3].xyzz 103: ADD TEMP[1].xyz, TEMP[2].xyzz, TEMP[6].xyzz 104: ADD TEMP[2].xyz, TEMP[0].xyzz, -CONST[0].xyzz 105: DP3 TEMP[3].x, TEMP[2].xyzz, TEMP[2].xyzz 106: SQRT TEMP[3].x, TEMP[3].xxxx 107: DP3 TEMP[4].x, TEMP[2].xyzz, TEMP[2].xyzz 108: RSQ TEMP[4].x, TEMP[4].xxxx 109: MUL TEMP[2].xyz, TEMP[2].xyzz, TEMP[4].xxxx 110: MOV TEMP[4].x, -CONST[15].xxxx 111: MUL TEMP[5].x, TEMP[4].xxxx, IMM[2].wwww 112: EX2 TEMP[5].x, TEMP[5].xxxx 113: ADD TEMP[5].x, IMM[0].wwww, -TEMP[5].xxxx 114: ADD TEMP[6].x, CONST[14].wwww, -CONST[14].zzzz 115: ADD TEMP[6].x, TEMP[3].xxxx, -TEMP[6].xxxx 116: RCP TEMP[7].x, CONST[14].zzzz 117: MUL TEMP[6].x, TEMP[6].xxxx, TEMP[7].xxxx 118: MOV_SAT TEMP[6].x, TEMP[6].xxxx 119: MUL TEMP[6].x, TEMP[6].xxxx, TEMP[4].xxxx 120: MUL TEMP[6].x, TEMP[6].xxxx, IMM[2].wwww 121: EX2 TEMP[6].x, TEMP[6].xxxx 122: ADD TEMP[6].x, IMM[0].wwww, -TEMP[6].xxxx 123: RCP TEMP[7].x, TEMP[5].xxxx 124: MUL TEMP[6].x, TEMP[6].xxxx, TEMP[7].xxxx 125: MOV_SAT TEMP[6].x, TEMP[6].xxxx 126: ADD TEMP[7].x, TEMP[3].xxxx, -CONST[14].xxxx 127: RCP TEMP[8].x, CONST[14].yyyy 128: MUL TEMP[7].x, TEMP[7].xxxx, TEMP[8].xxxx 129: MOV_SAT TEMP[7].x, TEMP[7].xxxx 130: MUL TEMP[4].x, TEMP[7].xxxx, TEMP[4].xxxx 131: MUL TEMP[4].x, TEMP[4].xxxx, IMM[2].wwww 132: EX2 TEMP[4].x, TEMP[4].xxxx 133: ADD TEMP[4].x, IMM[0].wwww, -TEMP[4].xxxx 134: RCP TEMP[5].x, TEMP[5].xxxx 135: MUL TEMP[4].x, TEMP[4].xxxx, TEMP[5].xxxx 136: MOV_SAT TEMP[4].x, TEMP[4].xxxx 137: MOV TEMP[5].xyz, TEMP[2].xyzz 138: TEX TEMP[5], TEMP[5], SAMP[1], CUBE 139: MUL TEMP[5], TEMP[5], CONST[10] 140: DP3 TEMP[7].x, TEMP[2].xyzz, TEMP[2].xyzz 141: RSQ TEMP[7].x, TEMP[7].xxxx 142: MUL TEMP[7].y, TEMP[2].xyzz, TEMP[7].xxxx 143: MOV TEMP[8], CONST[5] 144: FSLT TEMP[9].x, IMM[0].xxxx, TEMP[7].yyyy 145: UIF TEMP[9].xxxx :0 146: MOV_SAT TEMP[9].x, TEMP[7].yyyy 147: MUL TEMP[9].x, TEMP[9].xxxx, IMM[1].xxxx 148: MOV_SAT TEMP[9].x, TEMP[9].xxxx 149: MUL TEMP[10].x, IMM[0].yyyy, TEMP[9].xxxx 150: ADD TEMP[10].x, IMM[1].yyyy, -TEMP[10].xxxx 151: MUL TEMP[10].x, TEMP[9].xxxx, TEMP[10].xxxx 152: MUL TEMP[9].x, TEMP[9].xxxx, TEMP[10].xxxx 153: LRP TEMP[8], TEMP[9].xxxx, CONST[4], CONST[5] 154: ELSE :0 155: MOV_SAT TEMP[7].x, -TEMP[7].yyyy 156: MUL TEMP[7].x, TEMP[7].xxxx, IMM[1].xxxx 157: MOV_SAT TEMP[7].x, TEMP[7].xxxx 158: MUL TEMP[9].x, IMM[0].yyyy, TEMP[7].xxxx 159: ADD TEMP[9].x, IMM[1].yyyy, -TEMP[9].xxxx 160: MUL TEMP[9].x, TEMP[7].xxxx, TEMP[9].xxxx 161: MUL TEMP[7].x, TEMP[7].xxxx, TEMP[9].xxxx 162: LRP TEMP[8], TEMP[7].xxxx, CONST[6], TEMP[8] 163: ENDIF 164: DP3 TEMP[7].x, TEMP[2].xyzz, TEMP[2].xyzz 165: RSQ TEMP[7].x, TEMP[7].xxxx 166: MUL TEMP[7].xyz, TEMP[2].xyzz, TEMP[7].xxxx 167: MUL TEMP[7].xyz, TEMP[7].xyzz, CONST[14].wwww 168: MUL TEMP[7].xyz, TEMP[7].xyzz, IMM[3].xxxx 169: MOV TEMP[9].xz, TEMP[7].xxzx 170: ADD TEMP[7].x, TEMP[7].yyyy, CONST[0].yyyy 171: MOV TEMP[9].y, TEMP[7].xxxx 172: MOV TEMP[7].xyz, TEMP[9].xyzz 173: TEX TEMP[7], TEMP[7], SAMP[0], CUBE 174: MUL TEMP[7].xyz, TEMP[7], CONST[8] 175: MUL TEMP[7].xyz, TEMP[7].xyzz, IMM[0].yyyy 176: LRP TEMP[6].xyz, TEMP[6].xxxx, TEMP[7].xyzz, CONST[13].xyzz 177: MUL TEMP[5].xyz, TEMP[5].xyzz, IMM[3].yyyy 178: MUL TEMP[7], TEMP[8], CONST[8] 179: MUL TEMP[8].x, IMM[0].yyyy, CONST[7].xxxx 180: MUL TEMP[7].xyz, TEMP[7], TEMP[8].xxxx 181: MAD TEMP[5].xyz, TEMP[7].xyzz, IMM[3].yyyy, TEMP[5].xyzz 182: MUL TEMP[7].x, TEMP[3].xxxx, CONST[15].zzzz 183: MUL TEMP[7].x, TEMP[7].xxxx, IMM[3].wwww 184: MUL TEMP[7].x, -TEMP[7].xxxx, IMM[2].wwww 185: EX2 TEMP[7].x, TEMP[7].xxxx 186: ADD TEMP[7].x, IMM[3].zzzz, -TEMP[7].xxxx 187: MUL TEMP[7].x, TEMP[5].wwww, TEMP[7].xxxx 188: MUL TEMP[7].x, TEMP[7].xxxx, IMM[1].xxxx 189: MOV_SAT TEMP[7].x, TEMP[7].xxxx 190: LRP TEMP[2].xyz, TEMP[7].xxxx, TEMP[5].xyzz, TEMP[6].xyzz 191: MAX TEMP[4].x, TEMP[4].xxxx, TEMP[7].xxxx 192: MOV TEMP[2].w, TEMP[4].xxxx 193: FSLT TEMP[5].x, IMM[0].xxxx, CONST[12].yyyy 194: UIF TEMP[5].xxxx :0 195: MOV TEMP[5].xyz, IMM[0].xwxx 196: MOV TEMP[5].w, CONST[12].xxxx 197: MOV TEMP[6].w, IMM[0].wwww 198: MOV TEMP[6].xyz, CONST[0].xyzx 199: DP4 TEMP[6].x, TEMP[5], TEMP[6] 200: FSGE TEMP[7].x, IMM[0].xxxx, TEMP[6].xxxx 201: UIF TEMP[7].xxxx :0 202: MOV TEMP[7].x, IMM[4].xxxx 203: ELSE :0 204: MOV TEMP[7].x, IMM[4].yyyy 205: ENDIF 206: I2F TEMP[7].x, TEMP[7].xxxx 207: MOV TEMP[8].w, IMM[0].wwww 208: MOV TEMP[8].xyz, TEMP[0].xyzx 209: DP4 TEMP[8].x, TEMP[5], TEMP[8] 210: MOV TEMP[9].w, IMM[0].xxxx 211: ADD TEMP[9].xyz, CONST[0].xyzz, -TEMP[0].xyzz 212: MUL TEMP[10].x, IMM[0].yyyy, TEMP[7].xxxx 213: ADD TEMP[10].x, IMM[0].wwww, -TEMP[10].xxxx 214: MUL TEMP[10].x, TEMP[10].xxxx, TEMP[8].xxxx 215: MIN TEMP[10].x, IMM[0].xxxx, TEMP[10].xxxx 216: MUL TEMP[3].x, CONST[12].zzzz, TEMP[3].xxxx 217: ADD TEMP[6].x, TEMP[8].xxxx, TEMP[6].xxxx 218: MUL TEMP[8].x, TEMP[10].xxxx, TEMP[10].xxxx 219: DP4 TEMP[5].x, TEMP[5], TEMP[9] 220: ABS TEMP[5].x, TEMP[5].xxxx 221: RCP TEMP[5].x, TEMP[5].xxxx 222: MUL TEMP[5].x, TEMP[8].xxxx, TEMP[5].xxxx 223: MAD TEMP[5].x, TEMP[7].xxxx, TEMP[6].xxxx, -TEMP[5].xxxx 224: MUL TEMP[3].x, -TEMP[3].xxxx, TEMP[5].xxxx 225: MUL TEMP[3].x, -TEMP[3].xxxx, CONST[12].yyyy 226: MUL TEMP[3].x, TEMP[3].xxxx, IMM[2].wwww 227: EX2 TEMP[3].x, TEMP[3].xxxx 228: MOV_SAT TEMP[3].x, TEMP[3].xxxx 229: ADD TEMP[3].x, IMM[0].wwww, -TEMP[3].xxxx 230: MAX TEMP[3].x, TEMP[4].xxxx, TEMP[3].xxxx 231: MOV TEMP[2].w, TEMP[3].xxxx 232: ENDIF 233: MOV_SAT TEMP[3].x, TEMP[2].wwww 234: LRP TEMP[0].xyz, TEMP[3].xxxx, TEMP[2].xyzz, TEMP[1].xyzz 235: MOV TEMP[0].w, IMM[0].xxxx 236: MOV OUT[0], TEMP[0] 237: END radeonsi: Compiling shader 69 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target triple = "amdgcn--" define amdgpu_ps <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> @main([17 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <16 x i8>] addrspace(2)* byval dereferenceable(18446744073709551615), [32 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <8 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), [16 x <4 x i32>] addrspace(2)* byval dereferenceable(18446744073709551615), float inreg, i32 inreg, <2 x i32>, <2 x i32>, <2 x i32>, <3 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, float, float, float, float, float, i32, i32, float, i32) #0 { main_body: %23 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %6, <2 x i32> %8) %24 = call float @llvm.SI.fs.interp(i32 3, i32 1, i32 %6, <2 x i32> %8) %25 = call float @llvm.SI.fs.interp(i32 3, i32 2, i32 %6, <2 x i32> %8) %26 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %27 = load <16 x i8>, <16 x i8> addrspace(2)* %26, align 16, !invariant.load !0 %28 = call float @llvm.SI.load.const(<16 x i8> %27, i32 0) %29 = fsub float %28, %23 %30 = call float @llvm.SI.load.const(<16 x i8> %27, i32 4) %31 = fsub float %30, %24 %32 = call float @llvm.SI.load.const(<16 x i8> %27, i32 8) %33 = fsub float %32, %25 %34 = fmul float %29, %29 %35 = fmul float %31, %31 %36 = fadd float %35, %34 %37 = fmul float %33, %33 %38 = fadd float %36, %37 %39 = call float @llvm.sqrt.f32(float %38) %40 = fdiv float 1.000000e+00, %39, !fpmath !1 %41 = fmul float %29, %40 %42 = fmul float %31, %40 %43 = fmul float %33, %40 %44 = call float @llvm.SI.fs.interp(i32 2, i32 0, i32 %6, <2 x i32> %8) %45 = fmul float %44, %41 %46 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %47 = fmul float %46, %42 %48 = fadd float %47, %45 %49 = call float @llvm.SI.fs.interp(i32 2, i32 2, i32 %6, <2 x i32> %8) %50 = fmul float %49, %43 %51 = fadd float %50, %48 %52 = call float @llvm.SI.fs.interp(i32 0, i32 3, i32 %6, <2 x i32> %8) %53 = call float @llvm.SI.fs.interp(i32 1, i32 3, i32 %6, <2 x i32> %8) %54 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 6, !amdgpu.uniform !0 %55 = load <8 x i32>, <8 x i32> addrspace(2)* %54, align 32, !invariant.load !0 %56 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %57 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %56, i64 0, i64 15, !amdgpu.uniform !0 %58 = load <4 x i32>, <4 x i32> addrspace(2)* %57, align 16, !invariant.load !0 %59 = bitcast float %52 to i32 %60 = bitcast float %53 to i32 %61 = insertelement <2 x i32> undef, i32 %59, i32 0 %62 = insertelement <2 x i32> %61, i32 %60, i32 1 %63 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %62, <8 x i32> %55, <4 x i32> %58, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %64 = extractelement <4 x float> %63, i32 0 %65 = extractelement <4 x float> %63, i32 1 %66 = extractelement <4 x float> %63, i32 2 %67 = extractelement <4 x float> %63, i32 3 %68 = fmul float %64, 2.000000e+00 %69 = fadd float %68, -1.000000e+00 %70 = fmul float %65, 2.000000e+00 %71 = fadd float %70, -1.000000e+00 %72 = fmul float %66, 2.000000e+00 %73 = fadd float %72, -1.000000e+00 %74 = fmul float %69, %69 %75 = fmul float %71, %71 %76 = fadd float %75, %74 %77 = fmul float %73, %73 %78 = fadd float %76, %77 %79 = call float @llvm.sqrt.f32(float %78) %80 = fdiv float 1.000000e+00, %79, !fpmath !1 %81 = fmul float %69, %80 %82 = fmul float %71, %80 %83 = fmul float %73, %80 %84 = call float @llvm.SI.fs.interp(i32 0, i32 3, i32 %6, <2 x i32> %8) %85 = call float @llvm.SI.fs.interp(i32 1, i32 3, i32 %6, <2 x i32> %8) %86 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 4, !amdgpu.uniform !0 %87 = load <8 x i32>, <8 x i32> addrspace(2)* %86, align 32, !invariant.load !0 %88 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %89 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %88, i64 0, i64 11, !amdgpu.uniform !0 %90 = load <4 x i32>, <4 x i32> addrspace(2)* %89, align 16, !invariant.load !0 %91 = bitcast float %84 to i32 %92 = bitcast float %85 to i32 %93 = insertelement <2 x i32> undef, i32 %91, i32 0 %94 = insertelement <2 x i32> %93, i32 %92, i32 1 %95 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %94, <8 x i32> %87, <4 x i32> %90, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %96 = extractelement <4 x float> %95, i32 0 %97 = extractelement <4 x float> %95, i32 1 %98 = extractelement <4 x float> %95, i32 2 %99 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %100 = load <16 x i8>, <16 x i8> addrspace(2)* %99, align 16, !invariant.load !0 %101 = call float @llvm.SI.load.const(<16 x i8> %100, i32 288) %102 = fmul float %96, %101 %103 = call float @llvm.SI.load.const(<16 x i8> %100, i32 292) %104 = fmul float %97, %103 %105 = call float @llvm.SI.load.const(<16 x i8> %100, i32 296) %106 = fmul float %98, %105 %107 = fmul float %102, 2.000000e+00 %108 = fmul float %104, 2.000000e+00 %109 = fmul float %106, 2.000000e+00 %110 = call float @llvm.SI.fs.interp(i32 0, i32 0, i32 %6, <2 x i32> %8) %111 = call float @llvm.SI.fs.interp(i32 1, i32 0, i32 %6, <2 x i32> %8) %112 = call float @llvm.SI.fs.interp(i32 2, i32 0, i32 %6, <2 x i32> %8) %113 = fmul float %110, %81 %114 = fmul float %111, %82 %115 = fadd float %114, %113 %116 = fmul float %112, %83 %117 = fadd float %115, %116 %118 = call float @llvm.SI.fs.interp(i32 0, i32 1, i32 %6, <2 x i32> %8) %119 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %120 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %121 = fmul float %118, %81 %122 = fmul float %119, %82 %123 = fadd float %122, %121 %124 = fmul float %120, %83 %125 = fadd float %123, %124 %126 = call float @llvm.SI.fs.interp(i32 0, i32 2, i32 %6, <2 x i32> %8) %127 = call float @llvm.SI.fs.interp(i32 1, i32 2, i32 %6, <2 x i32> %8) %128 = call float @llvm.SI.fs.interp(i32 2, i32 2, i32 %6, <2 x i32> %8) %129 = fmul float %126, %81 %130 = fmul float %127, %82 %131 = fadd float %130, %129 %132 = fmul float %128, %83 %133 = fadd float %131, %132 %134 = fmul float %117, %117 %135 = fmul float %125, %125 %136 = fadd float %135, %134 %137 = fmul float %133, %133 %138 = fadd float %136, %137 %139 = call float @llvm.sqrt.f32(float %138) %140 = fdiv float 1.000000e+00, %139, !fpmath !1 %141 = fmul float %125, %140 %142 = fcmp ogt float %141, 0.000000e+00 br i1 %142, label %if32, label %else41 if32: ; preds = %main_body %143 = call float @llvm.AMDGPU.clamp.(float %141, float 0.000000e+00, float 1.000000e+00) %144 = fmul float %143, 1.250000e+00 %145 = call float @llvm.AMDGPU.clamp.(float %144, float 0.000000e+00, float 1.000000e+00) %146 = fmul float %145, 2.000000e+00 %147 = fsub float 3.000000e+00, %146 %148 = fmul float %145, %147 %149 = fmul float %145, %148 %150 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %151 = load <16 x i8>, <16 x i8> addrspace(2)* %150, align 16, !invariant.load !0 %152 = call float @llvm.SI.load.const(<16 x i8> %151, i32 64) %153 = call float @llvm.SI.load.const(<16 x i8> %151, i32 80) %154 = fsub float 1.000000e+00, %149 %155 = fmul float %152, %149 %156 = fmul float %153, %154 %157 = fadd float %155, %156 %158 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %159 = load <16 x i8>, <16 x i8> addrspace(2)* %158, align 16, !invariant.load !0 %160 = call float @llvm.SI.load.const(<16 x i8> %159, i32 68) %161 = call float @llvm.SI.load.const(<16 x i8> %159, i32 84) %162 = fsub float 1.000000e+00, %149 %163 = fmul float %160, %149 %164 = fmul float %161, %162 %165 = fadd float %163, %164 %166 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %167 = load <16 x i8>, <16 x i8> addrspace(2)* %166, align 16, !invariant.load !0 %168 = call float @llvm.SI.load.const(<16 x i8> %167, i32 72) %169 = call float @llvm.SI.load.const(<16 x i8> %167, i32 88) %170 = fmul float %168, %149 br label %endif50 else41: ; preds = %main_body %171 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %172 = load <16 x i8>, <16 x i8> addrspace(2)* %171, align 16, !invariant.load !0 %173 = call float @llvm.SI.load.const(<16 x i8> %172, i32 88) %174 = call float @llvm.SI.load.const(<16 x i8> %172, i32 84) %175 = call float @llvm.SI.load.const(<16 x i8> %172, i32 80) %176 = fsub float -0.000000e+00, %141 %177 = call float @llvm.AMDGPU.clamp.(float %176, float 0.000000e+00, float 1.000000e+00) %178 = fmul float %177, 1.250000e+00 %179 = call float @llvm.AMDGPU.clamp.(float %178, float 0.000000e+00, float 1.000000e+00) %180 = fmul float %179, 2.000000e+00 %181 = fsub float 3.000000e+00, %180 %182 = fmul float %179, %181 %183 = fmul float %179, %182 %184 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %185 = load <16 x i8>, <16 x i8> addrspace(2)* %184, align 16, !invariant.load !0 %186 = call float @llvm.SI.load.const(<16 x i8> %185, i32 96) %187 = fsub float 1.000000e+00, %183 %188 = fmul float %186, %183 %189 = fmul float %175, %187 %190 = fadd float %188, %189 %191 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %192 = load <16 x i8>, <16 x i8> addrspace(2)* %191, align 16, !invariant.load !0 %193 = call float @llvm.SI.load.const(<16 x i8> %192, i32 100) %194 = fsub float 1.000000e+00, %183 %195 = fmul float %193, %183 %196 = fmul float %174, %194 %197 = fadd float %195, %196 %198 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %199 = load <16 x i8>, <16 x i8> addrspace(2)* %198, align 16, !invariant.load !0 %200 = call float @llvm.SI.load.const(<16 x i8> %199, i32 104) %201 = fmul float %200, %183 br label %endif50 endif50: ; preds = %else41, %if32 %.pn = phi float [ %183, %else41 ], [ %149, %if32 ] %.sink13 = phi float [ %173, %else41 ], [ %169, %if32 ] %.sink = phi float [ %201, %else41 ], [ %170, %if32 ] %.08 = phi float [ %190, %else41 ], [ %157, %if32 ] %.06 = phi float [ %197, %else41 ], [ %165, %if32 ] %.sink14 = fsub float 1.000000e+00, %.pn %202 = fmul float %.sink13, %.sink14 %203 = fadd float %.sink, %202 %204 = fmul float %.08, %107 %205 = fmul float %.06, %108 %206 = fmul float %203, %109 %207 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %208 = load <16 x i8>, <16 x i8> addrspace(2)* %207, align 16, !invariant.load !0 %209 = call float @llvm.SI.load.const(<16 x i8> %208, i32 112) %210 = fmul float %209, 2.000000e+00 %211 = fmul float %204, %210 %212 = fmul float %205, %210 %213 = fmul float %206, %210 %214 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %215 = load <16 x i8>, <16 x i8> addrspace(2)* %214, align 16, !invariant.load !0 %216 = call float @llvm.SI.load.const(<16 x i8> %215, i32 304) %217 = fcmp oeq float %216, 0.000000e+00 br i1 %217, label %endif59, label %else57 else57: ; preds = %endif50 %218 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %219 = load <16 x i8>, <16 x i8> addrspace(2)* %218, align 16, !invariant.load !0 %220 = call float @llvm.SI.load.const(<16 x i8> %219, i32 304) br label %endif59 endif59: ; preds = %endif50, %else57 %.010 = phi float [ %220, %else57 ], [ 0x3FB3F7CEE0000000, %endif50 ] %221 = fmul float %51, 0x3F1A36E2E0000000 %222 = fadd float %221, %.010 %223 = call float @llvm.SI.fs.interp(i32 0, i32 0, i32 %6, <2 x i32> %8) %224 = call float @llvm.SI.fs.interp(i32 1, i32 0, i32 %6, <2 x i32> %8) %225 = call float @llvm.SI.fs.interp(i32 2, i32 0, i32 %6, <2 x i32> %8) %226 = fmul float %223, %81 %227 = fmul float %224, %82 %228 = fadd float %227, %226 %229 = fmul float %225, %83 %230 = fadd float %228, %229 %231 = call float @llvm.SI.fs.interp(i32 0, i32 1, i32 %6, <2 x i32> %8) %232 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %6, <2 x i32> %8) %233 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %6, <2 x i32> %8) %234 = fmul float %231, %81 %235 = fmul float %232, %82 %236 = fadd float %235, %234 %237 = fmul float %233, %83 %238 = fadd float %236, %237 %239 = call float @llvm.SI.fs.interp(i32 0, i32 2, i32 %6, <2 x i32> %8) %240 = call float @llvm.SI.fs.interp(i32 1, i32 2, i32 %6, <2 x i32> %8) %241 = call float @llvm.SI.fs.interp(i32 2, i32 2, i32 %6, <2 x i32> %8) %242 = fmul float %239, %81 %243 = fmul float %240, %82 %244 = fadd float %243, %242 %245 = fmul float %241, %83 %246 = fadd float %244, %245 %247 = fmul float %230, %230 %248 = fmul float %238, %238 %249 = fadd float %248, %247 %250 = fmul float %246, %246 %251 = fadd float %249, %250 %252 = call float @llvm.sqrt.f32(float %251) %253 = fdiv float 1.000000e+00, %252, !fpmath !1 %254 = fmul float %230, %253 %255 = fmul float %238, %253 %256 = fmul float %246, %253 %257 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %258 = load <16 x i8>, <16 x i8> addrspace(2)* %257, align 16, !invariant.load !0 %259 = call float @llvm.SI.load.const(<16 x i8> %258, i32 16) %260 = call float @llvm.SI.load.const(<16 x i8> %258, i32 20) %261 = call float @llvm.SI.load.const(<16 x i8> %258, i32 24) %262 = call float @llvm.SI.load.const(<16 x i8> %258, i32 16) %263 = call float @llvm.SI.load.const(<16 x i8> %258, i32 20) %264 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %265 = load <16 x i8>, <16 x i8> addrspace(2)* %264, align 16, !invariant.load !0 %266 = call float @llvm.SI.load.const(<16 x i8> %265, i32 24) %267 = fmul float %259, %262 %268 = fmul float %260, %263 %269 = fadd float %268, %267 %270 = fmul float %261, %266 %271 = fadd float %269, %270 %272 = call float @llvm.sqrt.f32(float %271) %273 = fdiv float 1.000000e+00, %272, !fpmath !1 %274 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %275 = load <16 x i8>, <16 x i8> addrspace(2)* %274, align 16, !invariant.load !0 %276 = call float @llvm.SI.load.const(<16 x i8> %275, i32 16) %277 = fmul float %276, %273 %278 = call float @llvm.SI.load.const(<16 x i8> %275, i32 20) %279 = fmul float %278, %273 %280 = call float @llvm.SI.load.const(<16 x i8> %275, i32 24) %281 = fmul float %280, %273 %282 = fmul float %41, %41 %283 = fmul float %42, %42 %284 = fadd float %283, %282 %285 = fmul float %43, %43 %286 = fadd float %284, %285 %287 = call float @llvm.sqrt.f32(float %286) %288 = fdiv float 1.000000e+00, %287, !fpmath !1 %289 = fmul float %254, %277 %290 = fmul float %255, %279 %291 = fadd float %290, %289 %292 = fmul float %256, %281 %293 = fadd float %291, %292 %294 = call float @llvm.maxnum.f32(float %293, float 0.000000e+00) %295 = fcmp ogt float %67, 0.000000e+00 %296 = fcmp ogt float %222, 0.000000e+00 %297 = and i1 %295, %296 br i1 %297, label %if81, label %endif98 if81: ; preds = %endif59 %298 = fmul float %43, %288 %299 = fmul float %42, %288 %300 = fmul float %41, %288 %301 = fmul float %277, %254 %302 = fsub float -0.000000e+00, %301 %303 = fmul float %279, %255 %304 = fsub float %302, %303 %305 = fmul float %281, %256 %306 = fsub float %304, %305 %307 = fmul float %306, %254 %308 = fmul float %306, %255 %309 = fmul float %306, %256 %310 = fmul float %307, 2.000000e+00 %311 = fmul float %308, 2.000000e+00 %312 = fmul float %309, 2.000000e+00 %313 = fsub float -0.000000e+00, %310 %314 = fsub float %313, %277 %315 = fsub float -0.000000e+00, %311 %316 = fsub float %315, %279 %317 = fsub float -0.000000e+00, %312 %318 = fsub float %317, %281 %319 = fmul float %300, %314 %320 = fmul float %299, %316 %321 = fadd float %320, %319 %322 = fmul float %298, %318 %323 = fadd float %321, %322 %324 = call float @llvm.maxnum.f32(float %323, float 0x3EE4F8B580000000) %325 = fmul float %294, 2.000000e+00 %326 = call float @llvm.sqrt.f32(float %325) %327 = call float @llvm.AMDGPU.clamp.(float %326, float 0.000000e+00, float 1.000000e+00) %328 = fmul float %324, %327 %329 = fadd float %222, 0x3F847AE140000000 %330 = fmul float %329, 6.400000e+01 %331 = call float @llvm.maxnum.f32(float %330, float 0x3F1A36E2E0000000) %332 = call float @llvm.pow.f32(float %328, float %331) %333 = fmul float %332, %67 br label %endif98 endif98: ; preds = %if81, %endif59 %.02 = phi float [ %333, %if81 ], [ 0.000000e+00, %endif59 ] %334 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %335 = load <16 x i8>, <16 x i8> addrspace(2)* %334, align 16, !invariant.load !0 %336 = call float @llvm.SI.load.const(<16 x i8> %335, i32 32) %337 = call float @llvm.SI.load.const(<16 x i8> %335, i32 48) %338 = fmul float %336, %337 %339 = call float @llvm.SI.load.const(<16 x i8> %335, i32 36) %340 = call float @llvm.SI.load.const(<16 x i8> %335, i32 52) %341 = fmul float %339, %340 %342 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %343 = load <16 x i8>, <16 x i8> addrspace(2)* %342, align 16, !invariant.load !0 %344 = call float @llvm.SI.load.const(<16 x i8> %343, i32 40) %345 = call float @llvm.SI.load.const(<16 x i8> %343, i32 56) %346 = fmul float %344, %345 %347 = call float @llvm.SI.load.const(<16 x i8> %343, i32 32) %348 = fmul float %107, %347 %349 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %350 = load <16 x i8>, <16 x i8> addrspace(2)* %349, align 16, !invariant.load !0 %351 = call float @llvm.SI.load.const(<16 x i8> %350, i32 36) %352 = fmul float %108, %351 %353 = call float @llvm.SI.load.const(<16 x i8> %350, i32 40) %354 = fmul float %109, %353 %355 = fmul float %348, %294 %356 = fmul float %352, %294 %357 = fmul float %354, %294 %358 = fmul float %338, %.02 %359 = fadd float %358, %355 %360 = fmul float %341, %.02 %361 = fadd float %360, %356 %362 = fmul float %346, %.02 %363 = fadd float %362, %357 %364 = fadd float %359, %211 %365 = fadd float %361, %212 %366 = fadd float %363, %213 %367 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %368 = load <16 x i8>, <16 x i8> addrspace(2)* %367, align 16, !invariant.load !0 %369 = call float @llvm.SI.load.const(<16 x i8> %368, i32 0) %370 = fsub float %23, %369 %371 = call float @llvm.SI.load.const(<16 x i8> %368, i32 4) %372 = fsub float %24, %371 %373 = call float @llvm.SI.load.const(<16 x i8> %368, i32 8) %374 = fsub float %25, %373 %375 = fmul float %370, %370 %376 = fmul float %372, %372 %377 = fadd float %376, %375 %378 = fmul float %374, %374 %379 = fadd float %377, %378 %380 = call float @llvm.sqrt.f32(float %379) %381 = fmul float %370, %370 %382 = fmul float %372, %372 %383 = fadd float %382, %381 %384 = fmul float %374, %374 %385 = fadd float %383, %384 %386 = call float @llvm.sqrt.f32(float %385) %387 = fdiv float 1.000000e+00, %386, !fpmath !1 %388 = fmul float %370, %387 %389 = fmul float %372, %387 %390 = fmul float %374, %387 %391 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %392 = load <16 x i8>, <16 x i8> addrspace(2)* %391, align 16, !invariant.load !0 %393 = call float @llvm.SI.load.const(<16 x i8> %392, i32 240) %394 = fsub float -0.000000e+00, %393 %395 = fmul float %393, 0xBFF7154760000000 %396 = call float @llvm.exp2.f32(float %395) %397 = fsub float 1.000000e+00, %396 %398 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %399 = load <16 x i8>, <16 x i8> addrspace(2)* %398, align 16, !invariant.load !0 %400 = call float @llvm.SI.load.const(<16 x i8> %399, i32 236) %401 = call float @llvm.SI.load.const(<16 x i8> %399, i32 232) %402 = fsub float %400, %401 %403 = fsub float %380, %402 %404 = call float @llvm.SI.load.const(<16 x i8> %399, i32 232) %405 = fdiv float 1.000000e+00, %404, !fpmath !1 %406 = fmul float %403, %405 %407 = call float @llvm.AMDGPU.clamp.(float %406, float 0.000000e+00, float 1.000000e+00) %408 = fmul float %407, %394 %409 = fmul float %408, 0x3FF7154760000000 %410 = call float @llvm.exp2.f32(float %409) %411 = fsub float 1.000000e+00, %410 %412 = fdiv float 1.000000e+00, %397, !fpmath !1 %413 = fmul float %411, %412 %414 = call float @llvm.AMDGPU.clamp.(float %413, float 0.000000e+00, float 1.000000e+00) %415 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %416 = load <16 x i8>, <16 x i8> addrspace(2)* %415, align 16, !invariant.load !0 %417 = call float @llvm.SI.load.const(<16 x i8> %416, i32 224) %418 = fsub float %380, %417 %419 = call float @llvm.SI.load.const(<16 x i8> %416, i32 228) %420 = fdiv float 1.000000e+00, %419, !fpmath !1 %421 = fmul float %418, %420 %422 = call float @llvm.AMDGPU.clamp.(float %421, float 0.000000e+00, float 1.000000e+00) %423 = fmul float %422, %394 %424 = fmul float %423, 0x3FF7154760000000 %425 = call float @llvm.exp2.f32(float %424) %426 = fsub float 1.000000e+00, %425 %427 = fdiv float 1.000000e+00, %397, !fpmath !1 %428 = fmul float %426, %427 %429 = call float @llvm.AMDGPU.clamp.(float %428, float 0.000000e+00, float 1.000000e+00) %430 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 2, !amdgpu.uniform !0 %431 = load <8 x i32>, <8 x i32> addrspace(2)* %430, align 32, !invariant.load !0 %432 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %433 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %432, i64 0, i64 7, !amdgpu.uniform !0 %434 = load <4 x i32>, <4 x i32> addrspace(2)* %433, align 16, !invariant.load !0 %435 = call float @llvm.amdgcn.cubetc(float %388, float %389, float %390) %436 = call float @llvm.amdgcn.cubesc(float %388, float %389, float %390) %437 = call float @llvm.amdgcn.cubema(float %388, float %389, float %390) %438 = call float @llvm.amdgcn.cubeid(float %388, float %389, float %390) %439 = call float @llvm.fabs.f32(float %437) %440 = fdiv float 1.000000e+00, %439, !fpmath !1 %441 = fmul float %435, %440 %442 = fadd float %441, 1.500000e+00 %443 = fmul float %436, %440 %444 = fadd float %443, 1.500000e+00 %445 = bitcast float %444 to i32 %446 = bitcast float %442 to i32 %447 = bitcast float %438 to i32 %448 = insertelement <4 x i32> undef, i32 %445, i32 0 %449 = insertelement <4 x i32> %448, i32 %446, i32 1 %450 = insertelement <4 x i32> %449, i32 %447, i32 2 %451 = call <4 x float> @llvm.SI.image.sample.v4i32(<4 x i32> %450, <8 x i32> %431, <4 x i32> %434, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %452 = extractelement <4 x float> %451, i32 0 %453 = extractelement <4 x float> %451, i32 1 %454 = extractelement <4 x float> %451, i32 2 %455 = extractelement <4 x float> %451, i32 3 %456 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %457 = load <16 x i8>, <16 x i8> addrspace(2)* %456, align 16, !invariant.load !0 %458 = call float @llvm.SI.load.const(<16 x i8> %457, i32 160) %459 = fmul float %452, %458 %460 = call float @llvm.SI.load.const(<16 x i8> %457, i32 164) %461 = fmul float %453, %460 %462 = call float @llvm.SI.load.const(<16 x i8> %457, i32 168) %463 = fmul float %454, %462 %464 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %465 = load <16 x i8>, <16 x i8> addrspace(2)* %464, align 16, !invariant.load !0 %466 = call float @llvm.SI.load.const(<16 x i8> %465, i32 172) %467 = fmul float %455, %466 %468 = fmul float %388, %388 %469 = fmul float %389, %389 %470 = fadd float %469, %468 %471 = fmul float %390, %390 %472 = fadd float %470, %471 %473 = call float @llvm.sqrt.f32(float %472) %474 = fdiv float 1.000000e+00, %473, !fpmath !1 %475 = fmul float %389, %474 %476 = fcmp ogt float %475, 0.000000e+00 br i1 %476, label %if145, label %else154 if145: ; preds = %endif98 %477 = call float @llvm.AMDGPU.clamp.(float %475, float 0.000000e+00, float 1.000000e+00) %478 = fmul float %477, 1.250000e+00 %479 = call float @llvm.AMDGPU.clamp.(float %478, float 0.000000e+00, float 1.000000e+00) %480 = fmul float %479, 2.000000e+00 %481 = fsub float 3.000000e+00, %480 %482 = fmul float %479, %481 %483 = fmul float %479, %482 %484 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %485 = load <16 x i8>, <16 x i8> addrspace(2)* %484, align 16, !invariant.load !0 %486 = call float @llvm.SI.load.const(<16 x i8> %485, i32 64) %487 = call float @llvm.SI.load.const(<16 x i8> %485, i32 80) %488 = fsub float 1.000000e+00, %483 %489 = fmul float %486, %483 %490 = fmul float %487, %488 %491 = fadd float %489, %490 %492 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %493 = load <16 x i8>, <16 x i8> addrspace(2)* %492, align 16, !invariant.load !0 %494 = call float @llvm.SI.load.const(<16 x i8> %493, i32 68) %495 = call float @llvm.SI.load.const(<16 x i8> %493, i32 84) %496 = fsub float 1.000000e+00, %483 %497 = fmul float %494, %483 %498 = fmul float %495, %496 %499 = fadd float %497, %498 %500 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %501 = load <16 x i8>, <16 x i8> addrspace(2)* %500, align 16, !invariant.load !0 %502 = call float @llvm.SI.load.const(<16 x i8> %501, i32 72) %503 = call float @llvm.SI.load.const(<16 x i8> %501, i32 88) %504 = fmul float %502, %483 br label %endif163 else154: ; preds = %endif98 %505 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %506 = load <16 x i8>, <16 x i8> addrspace(2)* %505, align 16, !invariant.load !0 %507 = call float @llvm.SI.load.const(<16 x i8> %506, i32 88) %508 = call float @llvm.SI.load.const(<16 x i8> %506, i32 84) %509 = call float @llvm.SI.load.const(<16 x i8> %506, i32 80) %510 = fsub float -0.000000e+00, %475 %511 = call float @llvm.AMDGPU.clamp.(float %510, float 0.000000e+00, float 1.000000e+00) %512 = fmul float %511, 1.250000e+00 %513 = call float @llvm.AMDGPU.clamp.(float %512, float 0.000000e+00, float 1.000000e+00) %514 = fmul float %513, 2.000000e+00 %515 = fsub float 3.000000e+00, %514 %516 = fmul float %513, %515 %517 = fmul float %513, %516 %518 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %519 = load <16 x i8>, <16 x i8> addrspace(2)* %518, align 16, !invariant.load !0 %520 = call float @llvm.SI.load.const(<16 x i8> %519, i32 96) %521 = fsub float 1.000000e+00, %517 %522 = fmul float %520, %517 %523 = fmul float %509, %521 %524 = fadd float %522, %523 %525 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %526 = load <16 x i8>, <16 x i8> addrspace(2)* %525, align 16, !invariant.load !0 %527 = call float @llvm.SI.load.const(<16 x i8> %526, i32 100) %528 = fsub float 1.000000e+00, %517 %529 = fmul float %527, %517 %530 = fmul float %508, %528 %531 = fadd float %529, %530 %532 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %533 = load <16 x i8>, <16 x i8> addrspace(2)* %532, align 16, !invariant.load !0 %534 = call float @llvm.SI.load.const(<16 x i8> %533, i32 104) %535 = fmul float %534, %517 br label %endif163 endif163: ; preds = %else154, %if145 %.pn19 = phi float [ %517, %else154 ], [ %483, %if145 ] %.sink17 = phi float [ %507, %else154 ], [ %503, %if145 ] %.sink15 = phi float [ %535, %else154 ], [ %504, %if145 ] %.19 = phi float [ %524, %else154 ], [ %491, %if145 ] %.17 = phi float [ %531, %else154 ], [ %499, %if145 ] %.sink18 = fsub float 1.000000e+00, %.pn19 %536 = fmul float %.sink17, %.sink18 %537 = fadd float %.sink15, %536 %538 = fmul float %388, %388 %539 = fmul float %389, %389 %540 = fadd float %539, %538 %541 = fmul float %390, %390 %542 = fadd float %540, %541 %543 = call float @llvm.sqrt.f32(float %542) %544 = fdiv float 1.000000e+00, %543, !fpmath !1 %545 = fmul float %388, %544 %546 = fmul float %389, %544 %547 = fmul float %390, %544 %548 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %549 = load <16 x i8>, <16 x i8> addrspace(2)* %548, align 16, !invariant.load !0 %550 = call float @llvm.SI.load.const(<16 x i8> %549, i32 236) %551 = fmul float %545, %550 %552 = call float @llvm.SI.load.const(<16 x i8> %549, i32 236) %553 = fmul float %546, %552 %554 = call float @llvm.SI.load.const(<16 x i8> %549, i32 236) %555 = fmul float %547, %554 %556 = fmul float %551, 4.000000e+00 %557 = fmul float %553, 4.000000e+00 %558 = fmul float %555, 4.000000e+00 %559 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %560 = load <16 x i8>, <16 x i8> addrspace(2)* %559, align 16, !invariant.load !0 %561 = call float @llvm.SI.load.const(<16 x i8> %560, i32 4) %562 = fadd float %557, %561 %563 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 0, !amdgpu.uniform !0 %564 = load <8 x i32>, <8 x i32> addrspace(2)* %563, align 32, !invariant.load !0 %565 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %566 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %565, i64 0, i64 3, !amdgpu.uniform !0 %567 = load <4 x i32>, <4 x i32> addrspace(2)* %566, align 16, !invariant.load !0 %568 = call float @llvm.amdgcn.cubetc(float %556, float %562, float %558) %569 = call float @llvm.amdgcn.cubesc(float %556, float %562, float %558) %570 = call float @llvm.amdgcn.cubema(float %556, float %562, float %558) %571 = call float @llvm.amdgcn.cubeid(float %556, float %562, float %558) %572 = call float @llvm.fabs.f32(float %570) %573 = fdiv float 1.000000e+00, %572, !fpmath !1 %574 = fmul float %568, %573 %575 = fadd float %574, 1.500000e+00 %576 = fmul float %569, %573 %577 = fadd float %576, 1.500000e+00 %578 = bitcast float %577 to i32 %579 = bitcast float %575 to i32 %580 = bitcast float %571 to i32 %581 = insertelement <4 x i32> undef, i32 %578, i32 0 %582 = insertelement <4 x i32> %581, i32 %579, i32 1 %583 = insertelement <4 x i32> %582, i32 %580, i32 2 %584 = call <4 x float> @llvm.SI.image.sample.v4i32(<4 x i32> %583, <8 x i32> %564, <4 x i32> %567, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %585 = extractelement <4 x float> %584, i32 0 %586 = extractelement <4 x float> %584, i32 1 %587 = extractelement <4 x float> %584, i32 2 %588 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %589 = load <16 x i8>, <16 x i8> addrspace(2)* %588, align 16, !invariant.load !0 %590 = call float @llvm.SI.load.const(<16 x i8> %589, i32 128) %591 = fmul float %585, %590 %592 = call float @llvm.SI.load.const(<16 x i8> %589, i32 132) %593 = fmul float %586, %592 %594 = call float @llvm.SI.load.const(<16 x i8> %589, i32 136) %595 = fmul float %587, %594 %596 = fmul float %591, 2.000000e+00 %597 = fmul float %593, 2.000000e+00 %598 = fmul float %595, 2.000000e+00 %599 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %600 = load <16 x i8>, <16 x i8> addrspace(2)* %599, align 16, !invariant.load !0 %601 = call float @llvm.SI.load.const(<16 x i8> %600, i32 208) %602 = fsub float 1.000000e+00, %414 %603 = fmul float %596, %414 %604 = fmul float %601, %602 %605 = fadd float %603, %604 %606 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %607 = load <16 x i8>, <16 x i8> addrspace(2)* %606, align 16, !invariant.load !0 %608 = call float @llvm.SI.load.const(<16 x i8> %607, i32 212) %609 = fsub float 1.000000e+00, %414 %610 = fmul float %597, %414 %611 = fmul float %608, %609 %612 = fadd float %610, %611 %613 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %614 = load <16 x i8>, <16 x i8> addrspace(2)* %613, align 16, !invariant.load !0 %615 = call float @llvm.SI.load.const(<16 x i8> %614, i32 216) %616 = fsub float 1.000000e+00, %414 %617 = fmul float %598, %414 %618 = fmul float %615, %616 %619 = fadd float %617, %618 %620 = fmul float %459, 5.000000e-01 %621 = fmul float %461, 5.000000e-01 %622 = fmul float %463, 5.000000e-01 %623 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %624 = load <16 x i8>, <16 x i8> addrspace(2)* %623, align 16, !invariant.load !0 %625 = call float @llvm.SI.load.const(<16 x i8> %624, i32 128) %626 = fmul float %.19, %625 %627 = call float @llvm.SI.load.const(<16 x i8> %624, i32 132) %628 = fmul float %.17, %627 %629 = call float @llvm.SI.load.const(<16 x i8> %624, i32 136) %630 = fmul float %537, %629 %631 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %632 = load <16 x i8>, <16 x i8> addrspace(2)* %631, align 16, !invariant.load !0 %633 = call float @llvm.SI.load.const(<16 x i8> %632, i32 112) %634 = fmul float %633, 2.000000e+00 %635 = fmul float %626, %634 %636 = fmul float %628, %634 %637 = fmul float %630, %634 %638 = fmul float %635, 5.000000e-01 %639 = fadd float %638, %620 %640 = fmul float %636, 5.000000e-01 %641 = fadd float %640, %621 %642 = fmul float %637, 5.000000e-01 %643 = fadd float %642, %622 %644 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %645 = load <16 x i8>, <16 x i8> addrspace(2)* %644, align 16, !invariant.load !0 %646 = call float @llvm.SI.load.const(<16 x i8> %645, i32 248) %647 = fmul float %380, %646 %648 = fmul float %647, 0x3FFB333340000000 %649 = fmul float %648, 0xBFF7154760000000 %650 = call float @llvm.exp2.f32(float %649) %651 = fsub float 0x3FF3333340000000, %650 %652 = fmul float %467, %651 %653 = fmul float %652, 1.250000e+00 %654 = call float @llvm.AMDGPU.clamp.(float %653, float 0.000000e+00, float 1.000000e+00) %655 = fsub float 1.000000e+00, %654 %656 = fmul float %639, %654 %657 = fmul float %605, %655 %658 = fadd float %656, %657 %659 = fsub float 1.000000e+00, %654 %660 = fmul float %641, %654 %661 = fmul float %612, %659 %662 = fadd float %660, %661 %663 = fsub float 1.000000e+00, %654 %664 = fmul float %643, %654 %665 = fmul float %619, %663 %666 = fadd float %664, %665 %667 = call float @llvm.maxnum.f32(float %429, float %654) %668 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %669 = load <16 x i8>, <16 x i8> addrspace(2)* %668, align 16, !invariant.load !0 %670 = call float @llvm.SI.load.const(<16 x i8> %669, i32 196) %671 = fcmp ogt float %670, 0.000000e+00 br i1 %671, label %if194, label %endif232 if194: ; preds = %endif163 %672 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %673 = load <16 x i8>, <16 x i8> addrspace(2)* %672, align 16, !invariant.load !0 %674 = call float @llvm.SI.load.const(<16 x i8> %673, i32 192) %675 = call float @llvm.SI.load.const(<16 x i8> %673, i32 0) %676 = call float @llvm.SI.load.const(<16 x i8> %673, i32 4) %677 = call float @llvm.SI.load.const(<16 x i8> %673, i32 8) %678 = fmul float %675, 0.000000e+00 %679 = fadd float %678, %676 %680 = fmul float %677, 0.000000e+00 %681 = fadd float %679, %680 %682 = fadd float %681, %674 %683 = fcmp ole float %682, 0.000000e+00 %684 = uitofp i1 %683 to float %685 = fmul float %23, 0.000000e+00 %686 = fadd float %685, %24 %687 = fmul float %25, 0.000000e+00 %688 = fadd float %686, %687 %689 = fadd float %688, %674 %690 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %691 = load <16 x i8>, <16 x i8> addrspace(2)* %690, align 16, !invariant.load !0 %692 = call float @llvm.SI.load.const(<16 x i8> %691, i32 0) %693 = fsub float %692, %23 %694 = call float @llvm.SI.load.const(<16 x i8> %691, i32 4) %695 = fsub float %694, %24 %696 = call float @llvm.SI.load.const(<16 x i8> %691, i32 8) %697 = fsub float %696, %25 %698 = fmul float %684, 2.000000e+00 %699 = fsub float 1.000000e+00, %698 %700 = fmul float %699, %689 %701 = call float @llvm.minnum.f32(float %700, float 0.000000e+00) %702 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %703 = load <16 x i8>, <16 x i8> addrspace(2)* %702, align 16, !invariant.load !0 %704 = call float @llvm.SI.load.const(<16 x i8> %703, i32 200) %705 = fmul float %704, %380 %706 = fadd float %689, %682 %707 = fmul float %701, %701 %708 = fmul float %693, 0.000000e+00 %709 = fadd float %708, %695 %710 = fmul float %697, 0.000000e+00 %711 = fadd float %709, %710 %712 = fmul float %674, 0.000000e+00 %713 = fadd float %711, %712 %714 = call float @llvm.fabs.f32(float %713) %715 = fdiv float 1.000000e+00, %714, !fpmath !1 %716 = fmul float %707, %715 %717 = fmul float %684, %706 %718 = fsub float %717, %716 %719 = fmul float %705, %718 %720 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0, !amdgpu.uniform !0 %721 = load <16 x i8>, <16 x i8> addrspace(2)* %720, align 16, !invariant.load !0 %722 = call float @llvm.SI.load.const(<16 x i8> %721, i32 196) %723 = fmul float %719, %722 %724 = fmul float %723, 0x3FF7154760000000 %725 = call float @llvm.exp2.f32(float %724) %726 = call float @llvm.AMDGPU.clamp.(float %725, float 0.000000e+00, float 1.000000e+00) %727 = fsub float 1.000000e+00, %726 %728 = call float @llvm.maxnum.f32(float %667, float %727) br label %endif232 endif232: ; preds = %if194, %endif163 %.0 = phi float [ %728, %if194 ], [ %667, %endif163 ] %729 = call float @llvm.AMDGPU.clamp.(float %.0, float 0.000000e+00, float 1.000000e+00) %730 = fsub float 1.000000e+00, %729 %731 = fmul float %658, %729 %732 = fmul float %364, %730 %733 = fadd float %731, %732 %734 = fsub float 1.000000e+00, %729 %735 = fmul float %662, %729 %736 = fmul float %365, %734 %737 = fadd float %735, %736 %738 = fsub float 1.000000e+00, %729 %739 = fmul float %666, %729 %740 = fmul float %366, %738 %741 = fadd float %739, %740 %742 = bitcast float %5 to i32 %743 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> undef, i32 %742, 10 %744 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %743, float %733, 11 %745 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %744, float %737, 12 %746 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %745, float %741, 13 %747 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %746, float 0.000000e+00, 14 %748 = insertvalue <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %747, float %21, 24 ret <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float }> %748 } ; Function Attrs: nounwind readnone declare float @llvm.SI.fs.interp(i32, i32, i32, <2 x i32>) #1 ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.sqrt.f32(float) #1 ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.AMDGPU.clamp.(float, float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.maxnum.f32(float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.pow.f32(float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.exp2.f32(float) #1 ; Function Attrs: nounwind readnone declare float @llvm.amdgcn.cubetc(float, float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.amdgcn.cubesc(float, float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.amdgcn.cubema(float, float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.amdgcn.cubeid(float, float, float) #1 ; Function Attrs: nounwind readnone declare float @llvm.fabs.f32(float) #1 ; Function Attrs: nounwind readnone declare <4 x float> @llvm.SI.image.sample.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.minnum.f32(float, float) #1 attributes #0 = { "InitialPSInputAddr"="36983" } attributes #1 = { nounwind readnone } !0 = !{} !1 = !{float 2.500000e+00} Native stacktrace: /mnt/overflow/home/dscharrer/Games/Steam/steamapps/common/Guns of Icarus Online/GunsOfIcarusOnline_Data/Mono/x86/libmono.so(+0x8960f) [0xf55e760f] /mnt/overflow/home/dscharrer/Games/Steam/steamapps/common/Guns of Icarus Online/GunsOfIcarusOnline_Data/Mono/x86/libmono.so(+0x21a20) [0xf557fa20] linux-gate.so.1(__kernel_rt_sigreturn+0) [0xf76e5b50] /usr/lib32/libLLVMAMDGPUCodeGen.so.40(_ZNK4llvm16AMDGPUAsmPrinter16getSIProgramInfoERNS0_13SIProgramInfoERKNS_15MachineFunctionE+0x1fa) [0xf38671da] /usr/lib32/libLLVMAMDGPUCodeGen.so.40(_ZN4llvm16AMDGPUAsmPrinter20runOnMachineFunctionERNS_15MachineFunctionE+0x1a1) [0xf3867ea1] /usr/lib32/../lib32/libLLVMCodeGen.so.40(_ZN4llvm19MachineFunctionPass13runOnFunctionERNS_8FunctionE+0x91) [0xf2445fa1] /usr/lib32/libLLVMCore.so.40(_ZN4llvm13FPPassManager13runOnFunctionERNS_8FunctionE+0x198) [0xf29e0ba8] /usr/lib32/libLLVMCore.so.40(_ZN4llvm13FPPassManager11runOnModuleERNS_6ModuleE+0x42) [0xf29e0cd2] /usr/lib32/libLLVMCore.so.40(_ZN4llvm6legacy15PassManagerImpl3runERNS_6ModuleE+0x29e) [0xf29e128e] /usr/lib32/libLLVMCore.so.40(_ZN4llvm6legacy11PassManager3runERNS_6ModuleE+0x1f) [0xf29e14cf] /usr/lib32/libLLVMTarget.so.40(+0xb4f7) [0xf2f294f7] /usr/lib32/libLLVMTarget.so.40(LLVMTargetMachineEmitToMemoryBuffer+0x96) [0xf2f29876] /usr/lib32/dri/radeonsi_dri.so(+0x4efafd) [0xf3ea5afd] /usr/lib32/dri/radeonsi_dri.so(+0x450a0d) [0xf3e06a0d] /usr/lib32/dri/radeonsi_dri.so(+0x45281f) [0xf3e0881f] /usr/lib32/dri/radeonsi_dri.so(+0x460f4c) [0xf3e16f4c] /usr/lib32/dri/radeonsi_dri.so(+0x46143e) [0xf3e1743e] /usr/lib32/dri/radeonsi_dri.so(+0x1f3366) [0xf3ba9366] /usr/lib32/dri/radeonsi_dri.so(+0x1f56e7) [0xf3bab6e7] /usr/lib32/dri/radeonsi_dri.so(+0x1f5e1b) [0xf3babe1b] /usr/lib32/dri/radeonsi_dri.so(+0x1ae5b6) [0xf3b645b6] /usr/lib32/dri/radeonsi_dri.so(+0x1de267) [0xf3b94267] /usr/lib32/dri/radeonsi_dri.so(+0x2005cf) [0xf3bb65cf] /usr/lib32/dri/radeonsi_dri.so(+0x11a5d9) [0xf3ad05d9] /usr/lib32/dri/radeonsi_dri.so(+0x11b89b) [0xf3ad189b] ./GunsOfIcarusOnline() [0x8a5a524] ./GunsOfIcarusOnline() [0x8a5b164] ./GunsOfIcarusOnline() [0x822eb89] ./GunsOfIcarusOnline() [0x8a16055] ./GunsOfIcarusOnline() [0x8a1919a] ./GunsOfIcarusOnline() [0x8a1026f] ./GunsOfIcarusOnline() [0x848d3f8] /lib32/libpthread.so.0(+0x61e1) [0xf76241e1] /lib32/libc.so.6(clone+0x6e) [0xf70eabde] Debug info from gdb: ERROR: ld.so: object '/home/dscharrer/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored. [New LWP 12294] [New LWP 12295] [New LWP 12296] [New LWP 12297] [New LWP 12298] [New LWP 12299] [New LWP 12300] [New LWP 12301] [New LWP 12302] [New LWP 12303] [New LWP 12304] [New LWP 12305] [New LWP 12306] [New LWP 12307] [New LWP 12308] [New LWP 12309] [New LWP 12310] [New LWP 12311] [New LWP 12312] [New LWP 12313] [New LWP 12314] [New LWP 12315] [New LWP 12316] [New LWP 12317] [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib64/libthread_db.so.1". 0xf76e5b69 in __kernel_vsyscall () Id Target Id Frame * 1 Thread 0xf7645940 (LWP 12293) "GunsOfIcarusOnl" 0xf76e5b69 in __kernel_vsyscall () 2 Thread 0xf4f3db40 (LWP 12294) "GunsOfIcarusOnl" 0xf76e5b69 in __kernel_vsyscall () 3 Thread 0xf4f0cb40 (LWP 12295) "GunsOfIcarusOnl" 0xf76e5b69 in __kernel_vsyscall () 4 Thread 0xf4cffb40 (LWP 12296) "GunsOfIcarusOnl" 0xf76e5b69 in __kernel_vsyscall () 5 Thread 0xf1875b40 (LWP 12297) "amdgpu_cs:0" 0xf76e5b69 in __kernel_vsyscall () 6 Thread 0xf1074b40 (LWP 12298) "si_shader:0" 0xf76e5b69 in __kernel_vsyscall () 7 Thread 0xf0873b40 (LWP 12299) "si_shader:1" 0xf76e5b69 in __kernel_vsyscall () 8 Thread 0xf0072b40 (LWP 12300) "si_shader:2" 0xf76e5b69 in __kernel_vsyscall () 9 Thread 0xef871b40 (LWP 12301) "si_shader:3" 0xf76e5b69 in __kernel_vsyscall () 10 Thread 0xee818b40 (LWP 12302) "GunsOfIcarusOnl" 0xf76e5b69 in __kernel_vsyscall () 11 Thread 0xedeffb40 (LWP 12303) "GunsOfIcarusOnl" 0xf76e5b69 in __kernel_vsyscall () 12 Thread 0xed6feb40 (LWP 12304) "GunsOfIcarusOnl" 0xf76e5b69 in __kernel_vsyscall () 13 Thread 0xeccfdb40 (LWP 12305) "GunsOfIcarusOnl" 0xf76e5b69 in __kernel_vsyscall () 14 Thread 0xec4fcb40 (LWP 12306) "GunsOfIcarusOnl" 0xf76e5b69 in __kernel_vsyscall () 15 Thread 0xeb8ffb40 (LWP 12307) "GunsOfIcarusOnl" 0xf76e5b69 in __kernel_vsyscall () 16 Thread 0xeacffb40 (LWP 12308) "GunsOfIcarusOnl" 0xf76e5b69 in __kernel_vsyscall () 17 Thread 0xea4feb40 (LWP 12309) "GunsOfIcarusOnl" 0xf76e5b69 in __kernel_vsyscall () 18 Thread 0xe9affb40 (LWP 12310) "GunsOfIcarusOnl" 0xf76e5b69 in __kernel_vsyscall () 19 Thread 0xe92feb40 (LWP 12311) "GunsOfIcarusOnl" 0xf76e5b69 in __kernel_vsyscall () 20 Thread 0xe8afdb40 (LWP 12312) "GunsOfIcarusOnl" 0xf76e5b69 in __kernel_vsyscall () 21 Thread 0xe82fcb40 (LWP 12313) "GunsOfIcarusOnl" 0xf76e5b69 in __kernel_vsyscall () 22 Thread 0xe7afbb40 (LWP 12314) "GunsOfIcarusOnl" 0xf76e5b69 in __kernel_vsyscall () 23 Thread 0xe72fab40 (LWP 12315) "GunsOfIcarusOnl" 0xf76e5b69 in __kernel_vsyscall () 24 Thread 0xe6af9b40 (LWP 12316) "GunsOfIcarusOnl" 0xf76e5b69 in __kernel_vsyscall () 25 Thread 0xe62f8b40 (LWP 12317) "GunsOfIcarusOnl" 0xf76e5b69 in __kernel_vsyscall () Thread 25 (Thread 0xe62f8b40 (LWP 12317)): #0 0xf76e5b69 in __kernel_vsyscall () #1 0xf762f652 in __libc_do_syscall () at ../sysdeps/unix/sysv/linux/i386/libc-do-syscall.S:41 #2 0xf762bd8f in futex_abstimed_wait_cancelable (private=0, abstime=0x0, expected=1, futex_word=0xa81abc8) at ../sysdeps/unix/sysv/linux/futex-internal.h:205 #3 do_futex_wait (sem=sem@entry=0xa81abc8, abstime=0x0) at sem_waitcommon.c:115 #4 0xf762be77 in __new_sem_wait_slow (sem=0xa81abc8, abstime=0x0) at sem_waitcommon.c:282 #5 0x082d95fe in ?? () #6 0x0848d3f8 in ?? () #7 0xf76241e1 in start_thread (arg=0xe62f8b40) at pthread_create.c:333 #8 0xf70eabde in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:114 Thread 24 (Thread 0xe6af9b40 (LWP 12316)): #0 0xf76e5b69 in __kernel_vsyscall () #1 0xf762f652 in __libc_do_syscall () at ../sysdeps/unix/sysv/linux/i386/libc-do-syscall.S:41 #2 0xf762bd8f in futex_abstimed_wait_cancelable (private=0, abstime=0x0, expected=1, futex_word=0x97bb368) at ../sysdeps/unix/sysv/linux/futex-internal.h:205 #3 do_futex_wait (sem=sem@entry=0x97bb368, abstime=0x0) at sem_waitcommon.c:115 #4 0xf762be77 in __new_sem_wait_slow (sem=0x97bb368, abstime=0x0) at sem_waitcommon.c:282 #5 0x091f6b58 in ?? () #6 0xf70eabde in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:114 Thread 23 (Thread 0xe72fab40 (LWP 12315)): #0 0xf76e5b69 in __kernel_vsyscall () #1 0xf762f652 in __libc_do_syscall () at ../sysdeps/unix/sysv/linux/i386/libc-do-syscall.S:41 #2 0xf762bd8f in futex_abstimed_wait_cancelable (private=0, abstime=0x0, expected=1, futex_word=0x97bb320) at ../sysdeps/unix/sysv/linux/futex-internal.h:205 #3 do_futex_wait (sem=sem@entry=0x97bb320, abstime=0x0) at sem_waitcommon.c:115 #4 0xf762be77 in __new_sem_wait_slow (sem=0x97bb320, abstime=0x0) at sem_waitcommon.c:282 #5 0x091f6b58 in ?? () #6 0xf70eabde in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:114 Thread 22 (Thread 0xe7afbb40 (LWP 12314)): #0 0xf76e5b69 in __kernel_vsyscall () #1 0xf762f652 in __libc_do_syscall () at ../sysdeps/unix/sysv/linux/i386/libc-do-syscall.S:41 #2 0xf762bd8f in futex_abstimed_wait_cancelable (private=0, abstime=0x0, expected=1, futex_word=0x97bb2d8) at ../sysdeps/unix/sysv/linux/futex-internal.h:205 #3 do_futex_wait (sem=sem@entry=0x97bb2d8, abstime=0x0) at sem_waitcommon.c:115 #4 0xf762be77 in __new_sem_wait_slow (sem=0x97bb2d8, abstime=0x0) at sem_waitcommon.c:282 #5 0x091f6b58 in ?? () #6 0xf70eabde in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:114 Thread 21 (Thread 0xe82fcb40 (LWP 12313)): #0 0xf76e5b69 in __kernel_vsyscall () #1 0xf762f652 in __libc_do_syscall () at ../sysdeps/unix/sysv/linux/i386/libc-do-syscall.S:41 #2 0xf762bd8f in futex_abstimed_wait_cancelable (private=0, abstime=0x0, expected=1, futex_word=0x97bb290) at ../sysdeps/unix/sysv/linux/futex-internal.h:205 #3 do_futex_wait (sem=sem@entry=0x97bb290, abstime=0x0) at sem_waitcommon.c:115 #4 0xf762be77 in __new_sem_wait_slow (sem=0x97bb290, abstime=0x0) at sem_waitcommon.c:282 #5 0x091f6b58 in ?? () #6 0xf70eabde in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:114 Thread 20 (Thread 0xe8afdb40 (LWP 12312)): #0 0xf76e5b69 in __kernel_vsyscall () #1 0xf762f652 in __libc_do_syscall () at ../sysdeps/unix/sysv/linux/i386/libc-do-syscall.S:41 #2 0xf762bd8f in futex_abstimed_wait_cancelable (private=0, abstime=0x0, expected=1, futex_word=0x97bb248) at ../sysdeps/unix/sysv/linux/futex-internal.h:205 #3 do_futex_wait (sem=sem@entry=0x97bb248, abstime=0x0) at sem_waitcommon.c:115 #4 0xf762be77 in __new_sem_wait_slow (sem=0x97bb248, abstime=0x0) at sem_waitcommon.c:282 #5 0x091f6b58 in ?? () #6 0xf70eabde in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:114 Thread 19 (Thread 0xe92feb40 (LWP 12311)): #0 0xf76e5b69 in __kernel_vsyscall () #1 0xf762f652 in __libc_do_syscall () at ../sysdeps/unix/sysv/linux/i386/libc-do-syscall.S:41 #2 0xf762bd8f in futex_abstimed_wait_cancelable (private=0, abstime=0x0, expected=1, futex_word=0x97bb200) at ../sysdeps/unix/sysv/linux/futex-internal.h:205 #3 do_futex_wait (sem=sem@entry=0x97bb200, abstime=0x0) at sem_waitcommon.c:115 #4 0xf762be77 in __new_sem_wait_slow (sem=0x97bb200, abstime=0x0) at sem_waitcommon.c:282 #5 0x091f6b58 in ?? () #6 0xf70eabde in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:114 Thread 18 (Thread 0xe9affb40 (LWP 12310)): #0 0xf76e5b69 in __kernel_vsyscall () #1 0xf762f652 in __libc_do_syscall () at ../sysdeps/unix/sysv/linux/i386/libc-do-syscall.S:41 #2 0xf762bd8f in futex_abstimed_wait_cancelable (private=0, abstime=0x0, expected=1, futex_word=0x97bb1b8) at ../sysdeps/unix/sysv/linux/futex-internal.h:205 #3 do_futex_wait (sem=sem@entry=0x97bb1b8, abstime=0x0) at sem_waitcommon.c:115 #4 0xf762be77 in __new_sem_wait_slow (sem=0x97bb1b8, abstime=0x0) at sem_waitcommon.c:282 #5 0x091f6b58 in ?? () Backtrace stopped: previous frame inner to this frame (corrupt stack?) Thread 17 (Thread 0xea4feb40 (LWP 12309)): #0 0xf76e5b69 in __kernel_vsyscall () #1 0xf762f652 in __libc_do_syscall () at ../sysdeps/unix/sysv/linux/i386/libc-do-syscall.S:41 #2 0xf762bd8f in futex_abstimed_wait_cancelable (private=0, abstime=0x0, expected=1, futex_word=0xa80f038) at ../sysdeps/unix/sysv/linux/futex-internal.h:205 #3 do_futex_wait (sem=sem@entry=0xa80f038, abstime=0x0) at sem_waitcommon.c:115 #4 0xf762be77 in __new_sem_wait_slow (sem=0xa80f038, abstime=0x0) at sem_waitcommon.c:282 #5 0x0848b7a7 in ?? () #6 0x0848b8b4 in ?? () #7 0x0848d3f8 in ?? () #8 0xf76241e1 in start_thread (arg=0xea4feb40) at pthread_create.c:333 #9 0xf70eabde in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:114 Thread 16 (Thread 0xeacffb40 (LWP 12308)): #0 0xf76e5b69 in __kernel_vsyscall () #1 0xf762f652 in __libc_do_syscall () at ../sysdeps/unix/sysv/linux/i386/libc-do-syscall.S:41 #2 0xf762bd8f in futex_abstimed_wait_cancelable (private=0, abstime=0x0, expected=1, futex_word=0xa80f038) at ../sysdeps/unix/sysv/linux/futex-internal.h:205 #3 do_futex_wait (sem=sem@entry=0xa80f038, abstime=0x0) at sem_waitcommon.c:115 #4 0xf762be77 in __new_sem_wait_slow (sem=0xa80f038, abstime=0x0) at sem_waitcommon.c:282 #5 0x0848b7a7 in ?? () #6 0x0848b8b4 in ?? () #7 0x0848d3f8 in ?? () #8 0xf76241e1 in start_thread (arg=0xeacffb40) at pthread_create.c:333 #9 0xf70eabde in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:114 Thread 15 (Thread 0xeb8ffb40 (LWP 12307)): #0 0xf76e5b69 in __kernel_vsyscall () #1 0xf762f652 in __libc_do_syscall () at ../sysdeps/unix/sysv/linux/i386/libc-do-syscall.S:41 #2 0xf762bd8f in futex_abstimed_wait_cancelable (private=0, abstime=0x0, expected=1, futex_word=0xa80f038) at ../sysdeps/unix/sysv/linux/futex-internal.h:205 #3 do_futex_wait (sem=sem@entry=0xa80f038, abstime=0x0) at sem_waitcommon.c:115 #4 0xf762be77 in __new_sem_wait_slow (sem=0xa80f038, abstime=0x0) at sem_waitcommon.c:282 #5 0x0848b7a7 in ?? () #6 0x0848b8b4 in ?? () #7 0x0848d3f8 in ?? () #8 0xf76241e1 in start_thread (arg=0xeb8ffb40) at pthread_create.c:333 #9 0xf70eabde in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:114 Thread 14 (Thread 0xec4fcb40 (LWP 12306)): #0 0xf76e5b69 in __kernel_vsyscall () #1 0xf762f652 in __libc_do_syscall () at ../sysdeps/unix/sysv/linux/i386/libc-do-syscall.S:41 #2 0xf762bd8f in futex_abstimed_wait_cancelable (private=0, abstime=0x0, expected=1, futex_word=0xa80f038) at ../sysdeps/unix/sysv/linux/futex-internal.h:205 #3 do_futex_wait (sem=sem@entry=0xa80f038, abstime=0x0) at sem_waitcommon.c:115 #4 0xf762be77 in __new_sem_wait_slow (sem=0xa80f038, abstime=0x0) at sem_waitcommon.c:282 #5 0x0848b7a7 in ?? () #6 0x0848b8b4 in ?? () #7 0x0848d3f8 in ?? () #8 0xf76241e1 in start_thread (arg=0xec4fcb40) at pthread_create.c:333 #9 0xf70eabde in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:114 Thread 13 (Thread 0xeccfdb40 (LWP 12305)): #0 0xf76e5b69 in __kernel_vsyscall () #1 0xf762f652 in __libc_do_syscall () at ../sysdeps/unix/sysv/linux/i386/libc-do-syscall.S:41 #2 0xf762bd8f in futex_abstimed_wait_cancelable (private=0, abstime=0x0, expected=1, futex_word=0xa80f038) at ../sysdeps/unix/sysv/linux/futex-internal.h:205 #3 do_futex_wait (sem=sem@entry=0xa80f038, abstime=0x0) at sem_waitcommon.c:115 #4 0xf762be77 in __new_sem_wait_slow (sem=0xa80f038, abstime=0x0) at sem_waitcommon.c:282 #5 0x0848b7a7 in ?? () #6 0x0848b8b4 in ?? () #7 0x0848d3f8 in ?? () #8 0xf76241e1 in start_thread (arg=0xeccfdb40) at pthread_create.c:333 #9 0xf70eabde in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:114 Thread 12 (Thread 0xed6feb40 (LWP 12304)): #0 0xf76e5b69 in __kernel_vsyscall () #1 0xf762f652 in __libc_do_syscall () at ../sysdeps/unix/sysv/linux/i386/libc-do-syscall.S:41 #2 0xf762bd8f in futex_abstimed_wait_cancelable (private=0, abstime=0x0, expected=1, futex_word=0xa80f038) at ../sysdeps/unix/sysv/linux/futex-internal.h:205 #3 do_futex_wait (sem=sem@entry=0xa80f038, abstime=0x0) at sem_waitcommon.c:115 #4 0xf762be77 in __new_sem_wait_slow (sem=0xa80f038, abstime=0x0) at sem_waitcommon.c:282 #5 0x0848b7a7 in ?? () #6 0x0848b8b4 in ?? () #7 0x0848d3f8 in ?? () #8 0xf76241e1 in start_thread (arg=0xed6feb40) at pthread_create.c:333 #9 0xf70eabde in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:114 Thread 11 (Thread 0xedeffb40 (LWP 12303)): #0 0xf76e5b69 in __kernel_vsyscall () #1 0xf762f652 in __libc_do_syscall () at ../sysdeps/unix/sysv/linux/i386/libc-do-syscall.S:41 #2 0xf762bd8f in futex_abstimed_wait_cancelable (private=0, abstime=0x0, expected=1, futex_word=0xa80f038) at ../sysdeps/unix/sysv/linux/futex-internal.h:205 #3 do_futex_wait (sem=sem@entry=0xa80f038, abstime=0x0) at sem_waitcommon.c:115 #4 0xf762be77 in __new_sem_wait_slow (sem=0xa80f038, abstime=0x0) at sem_waitcommon.c:282 #5 0x0848b7a7 in ?? () #6 0x0848b8b4 in ?? () #7 0x0848d3f8 in ?? () #8 0xf76241e1 in start_thread (arg=0xedeffb40) at pthread_create.c:333 #9 0xf70eabde in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:114 Thread 10 (Thread 0xee818b40 (LWP 12302)): #0 0xf76e5b69 in __kernel_vsyscall () #1 0xf70e2ddf in readv () at ../sysdeps/unix/syscall-template.S:84 #2 0xf76c6e3d in read () from /home/dscharrer/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so #3 0xf55e778d in ?? () from /mnt/overflow/home/dscharrer/Games/Steam/steamapps/common/Guns of Icarus Online/GunsOfIcarusOnline_Data/Mono/x86/libmono.so #4 0xf557fa20 in ?? () from /mnt/overflow/home/dscharrer/Games/Steam/steamapps/common/Guns of Icarus Online/GunsOfIcarusOnline_Data/Mono/x86/libmono.so #5 #6 llvm::AMDGPUAsmPrinter::getSIProgramInfo (this=0xe47a53e0, ProgInfo=..., MF=...) at /var/tmp/portage/sys-devel/llvm-9999/work/llvm-9999/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp:433 #7 0xf3867ea1 in llvm::AMDGPUAsmPrinter::runOnMachineFunction (this=0xe47a53e0, MF=...) at /var/tmp/portage/sys-devel/llvm-9999/work/llvm-9999/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp:170 #8 0xf2445fa1 in llvm::MachineFunctionPass::runOnFunction (this=0xe47a53e0, F=...) at /var/tmp/portage/sys-devel/llvm-9999/work/llvm-9999/lib/CodeGen/MachineFunctionPass.cpp:62 #9 0xf29e0ba8 in llvm::FPPassManager::runOnFunction (this=0xe47b1cf0, F=...) at /var/tmp/portage/sys-devel/llvm-9999/work/llvm-9999/lib/IR/LegacyPassManager.cpp:1511 #10 0xf29e0cd2 in llvm::FPPassManager::runOnModule (this=0xe47b1cf0, M=...) at /var/tmp/portage/sys-devel/llvm-9999/work/llvm-9999/lib/IR/LegacyPassManager.cpp:1532 #11 0xf29e128e in (anonymous namespace)::MPPassManager::runOnModule (M=..., this=0xe479da30) at /var/tmp/portage/sys-devel/llvm-9999/work/llvm-9999/lib/IR/LegacyPassManager.cpp:1588 #12 llvm::legacy::PassManagerImpl::run (this=0xe4788630, M=...) at /var/tmp/portage/sys-devel/llvm-9999/work/llvm-9999/lib/IR/LegacyPassManager.cpp:1691 #13 0xf29e14cf in llvm::legacy::PassManager::run (this=0xee8123b8, M=...) at /var/tmp/portage/sys-devel/llvm-9999/work/llvm-9999/lib/IR/LegacyPassManager.cpp:1722 #14 0xf2f294f7 in LLVMTargetMachineEmit (T=T@entry=0xa7edb40, M=M@entry=0xe4794550, OS=..., codegen=LLVMObjectFile, ErrorMessage=0xee8125fc) at /var/tmp/portage/sys-devel/llvm-9999/work/llvm-9999/lib/Target/TargetMachineC.cpp:204 #15 0xf2f29876 in LLVMTargetMachineEmitToMemoryBuffer (T=0xa7edb40, M=0xe4794550, codegen=LLVMObjectFile, ErrorMessage=0xee8125fc, OutMemBuf=0xee812600) at /var/tmp/portage/sys-devel/llvm-9999/work/llvm-9999/lib/Target/TargetMachineC.cpp:228 #16 0xf3ea5afd in radeon_llvm_compile (M=0xe4794550, binary=0xe47acab0, tm=0xa7edb40, debug=0xe47807b4) at /var/tmp/portage/media-libs/mesa-9999/work/mesa-9999/src/gallium/drivers/radeon/radeon_llvm_emit.c:215 #17 0xf3e06a0d in si_compile_llvm (sscreen=0xa7cf970, binary=0xe47acab0, conf=0xe47acae4, tm=0xa7edb40, mod=0xe4794550, debug=0xe47807b4, processor=1, name=0xf3f6f673 "TGSI shader") at /var/tmp/portage/media-libs/mesa-9999/work/mesa-9999/src/gallium/drivers/radeonsi/si_shader.c:6232 #18 0xf3e0881f in si_compile_tgsi_shader (sscreen=0xa7cf970, tm=0xa7edb40, shader=0xe47aca40, is_monolithic=false, debug=0xe47807b4) at /var/tmp/portage/media-libs/mesa-9999/work/mesa-9999/src/gallium/drivers/radeonsi/si_shader.c:6638 #19 0xf3e16f4c in si_init_shader_selector_async (job=0xe4780760, thread_index=-1) at /var/tmp/portage/media-libs/mesa-9999/work/mesa-9999/src/gallium/drivers/radeonsi/si_state_shaders.c:1166 #20 0xf3e1743e in si_create_shader_selector (ctx=0xa7f9820, state=0xee81692c) at /var/tmp/portage/media-libs/mesa-9999/work/mesa-9999/src/gallium/drivers/radeonsi/si_state_shaders.c:1350 #21 0xf3ba9366 in st_create_fp_variant (st=st@entry=0xa8b4150, stfp=stfp@entry=0xe47900d0, key=0xee816bb8) at /var/tmp/portage/media-libs/mesa-9999/work/mesa-9999/src/mesa/state_tracker/st_program.c:1166 #22 0xf3bab6e7 in st_get_fp_variant (st=0xa8b4150, stfp=0xe47900d0, key=0xee816bb8) at /var/tmp/portage/media-libs/mesa-9999/work/mesa-9999/src/mesa/state_tracker/st_program.c:1193 #23 0xf3babe1b in st_precompile_shader_variant (st=0xa8b4150, prog=0xe47900d0) at /var/tmp/portage/media-libs/mesa-9999/work/mesa-9999/src/mesa/state_tracker/st_program.c:1954 #24 0xf3b645b6 in st_program_string_notify (ctx=0xa88b3f0, target=34820, prog=0xe47900d0) at /var/tmp/portage/media-libs/mesa-9999/work/mesa-9999/src/mesa/state_tracker/st_cb_program.c:274 #25 0xf3b94267 in st_link_shader (ctx=0xa88b3f0, prog=0xe4778404) at /var/tmp/portage/media-libs/mesa-9999/work/mesa-9999/src/mesa/state_tracker/st_glsl_to_tgsi.cpp:6971 #26 0xf3bb65cf in _mesa_glsl_link_shader (ctx=0xa88b3f0, prog=0xe4778404) at /var/tmp/portage/media-libs/mesa-9999/work/mesa-9999/src/mesa/program/ir_to_mesa.cpp:3071 #27 0xf3ad05d9 in _mesa_link_program (ctx=0xa88b3f0, shProg=0xe4778404) at /var/tmp/portage/media-libs/mesa-9999/work/mesa-9999/src/mesa/main/shaderapi.c:1098 #28 0xf3ad189b in _mesa_LinkProgram (programObj=111) at /var/tmp/portage/media-libs/mesa-9999/work/mesa-9999/src/mesa/main/shaderapi.c:1599 #29 0x08a5a524 in ?? () #30 0x08a5b164 in ?? () #31 0x0822eb89 in ?? () #32 0x08a16055 in ?? () #33 0x08a1919a in ?? () #34 0x08a1026f in ?? () #35 0x0848d3f8 in ?? () #36 0xf76241e1 in start_thread (arg=0xee818b40) at pthread_create.c:333 #37 0xf70eabde in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:114 Thread 9 (Thread 0xef871b40 (LWP 12301)): #0 0xf76e5b69 in __kernel_vsyscall () #1 0xf762981b in pthread_cond_wait () at ../sysdeps/unix/sysv/linux/i386/pthread_cond_wait.S:187 #2 0xf3d4a062 in cnd_wait (mtx=0xa7cfc8c, cond=0xa7cfca4) at /var/tmp/portage/media-libs/mesa-9999/work/mesa-9999/include/c11/threads_posix.h:159 #3 util_queue_thread_func (input=0xa7d4270) at /var/tmp/portage/media-libs/mesa-9999/work/mesa-9999/src/gallium/auxiliary/util/u_queue.c:76 #4 0xf3d49ed5 in impl_thrd_routine (p=0xa7d4280) at /var/tmp/portage/media-libs/mesa-9999/work/mesa-9999/include/c11/threads_posix.h:87 #5 0xf76241e1 in start_thread (arg=0xef871b40) at pthread_create.c:333 #6 0xf70eabde in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:114 Thread 8 (Thread 0xf0072b40 (LWP 12300)): #0 0xf76e5b69 in __kernel_vsyscall () #1 0xf762981b in pthread_cond_wait () at ../sysdeps/unix/sysv/linux/i386/pthread_cond_wait.S:187 #2 0xf3d4a062 in cnd_wait (mtx=0xa7cfc8c, cond=0xa7cfca4) at /var/tmp/portage/media-libs/mesa-9999/work/mesa-9999/include/c11/threads_posix.h:159 #3 util_queue_thread_func (input=0xa7ca1d0) at /var/tmp/portage/media-libs/mesa-9999/work/mesa-9999/src/gallium/auxiliary/util/u_queue.c:76 #4 0xf3d49ed5 in impl_thrd_routine (p=0xa7d2008) at /var/tmp/portage/media-libs/mesa-9999/work/mesa-9999/include/c11/threads_posix.h:87 #5 0xf76241e1 in start_thread (arg=0xf0072b40) at pthread_create.c:333 #6 0xf70eabde in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:114 Thread 7 (Thread 0xf0873b40 (LWP 12299)): #0 0xf76e5b69 in __kernel_vsyscall () #1 0xf762981b in pthread_cond_wait () at ../sysdeps/unix/sysv/linux/i386/pthread_cond_wait.S:187 #2 0xf3d4a062 in cnd_wait (mtx=0xa7cfc8c, cond=0xa7cfca4) at /var/tmp/portage/media-libs/mesa-9999/work/mesa-9999/include/c11/threads_posix.h:159 #3 util_queue_thread_func (input=0xa5ea068) at /var/tmp/portage/media-libs/mesa-9999/work/mesa-9999/src/gallium/auxiliary/util/u_queue.c:76 #4 0xf3d49ed5 in impl_thrd_routine (p=0xa5ecb38) at /var/tmp/portage/media-libs/mesa-9999/work/mesa-9999/include/c11/threads_posix.h:87 #5 0xf76241e1 in start_thread (arg=0xf0873b40) at pthread_create.c:333 #6 0xf70eabde in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:114 Thread 6 (Thread 0xf1074b40 (LWP 12298)): #0 0xf76e5b69 in __kernel_vsyscall () #1 0xf762981b in pthread_cond_wait () at ../sysdeps/unix/sysv/linux/i386/pthread_cond_wait.S:187 #2 0xf3d4a062 in cnd_wait (mtx=0xa7cfc8c, cond=0xa7cfca4) at /var/tmp/portage/media-libs/mesa-9999/work/mesa-9999/include/c11/threads_posix.h:159 #3 util_queue_thread_func (input=0xa7ca1d0) at /var/tmp/portage/media-libs/mesa-9999/work/mesa-9999/src/gallium/auxiliary/util/u_queue.c:76 #4 0xf3d49ed5 in impl_thrd_routine (p=0xa5ea1d8) at /var/tmp/portage/media-libs/mesa-9999/work/mesa-9999/include/c11/threads_posix.h:87 #5 0xf76241e1 in start_thread (arg=0xf1074b40) at pthread_create.c:333 #6 0xf70eabde in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:114 Thread 5 (Thread 0xf1875b40 (LWP 12297)): #0 0xf76e5b69 in __kernel_vsyscall () #1 0xf762981b in pthread_cond_wait () at ../sysdeps/unix/sysv/linux/i386/pthread_cond_wait.S:187 #2 0xf3d4a062 in cnd_wait (mtx=0xa7ceecc, cond=0xa7ceee4) at /var/tmp/portage/media-libs/mesa-9999/work/mesa-9999/include/c11/threads_posix.h:159 #3 util_queue_thread_func (input=0xa5ea5c8) at /var/tmp/portage/media-libs/mesa-9999/work/mesa-9999/src/gallium/auxiliary/util/u_queue.c:76 #4 0xf3d49ed5 in impl_thrd_routine (p=0xa5ea478) at /var/tmp/portage/media-libs/mesa-9999/work/mesa-9999/include/c11/threads_posix.h:87 #5 0xf76241e1 in start_thread (arg=0xf1875b40) at pthread_create.c:333 #6 0xf70eabde in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:114 Thread 4 (Thread 0xf4cffb40 (LWP 12296)): #0 0xf76e5b69 in __kernel_vsyscall () #1 0xf762f652 in __libc_do_syscall () at ../sysdeps/unix/sysv/linux/i386/libc-do-syscall.S:41 #2 0xf762bd8f in futex_abstimed_wait_cancelable (private=0, abstime=0x0, expected=1, futex_word=0xa5d6544) at ../sysdeps/unix/sysv/linux/futex-internal.h:205 #3 do_futex_wait (sem=sem@entry=0xa5d6544, abstime=0x0) at sem_waitcommon.c:115 #4 0xf762be77 in __new_sem_wait_slow (sem=0xa5d6544, abstime=0x0) at sem_waitcommon.c:282 #5 0x084d7afc in ?? () #6 0x084d844f in ?? () #7 0x0848d3f8 in ?? () #8 0xf76241e1 in start_thread (arg=0xf4cffb40) at pthread_create.c:333 #9 0xf70eabde in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:114 Thread 3 (Thread 0xf4f0cb40 (LWP 12295)): #0 0xf76e5b69 in __kernel_vsyscall () #1 0xf762f652 in __libc_do_syscall () at ../sysdeps/unix/sysv/linux/i386/libc-do-syscall.S:41 #2 0xf762bd8f in futex_abstimed_wait_cancelable (private=0, abstime=0x0, expected=1, futex_word=0xf585bcbc) at ../sysdeps/unix/sysv/linux/futex-internal.h:205 #3 do_futex_wait (sem=sem@entry=0xf585bcbc, abstime=0x0) at sem_waitcommon.c:115 #4 0xf762be77 in __new_sem_wait_slow (sem=0xf585bcbc, abstime=0x0) at sem_waitcommon.c:282 #5 0xf56e351d in mono_sem_wait () from /mnt/overflow/home/dscharrer/Games/Steam/steamapps/common/Guns of Icarus Online/GunsOfIcarusOnline_Data/Mono/x86/libmono.so #6 0xf5642e95 in ?? () from /mnt/overflow/home/dscharrer/Games/Steam/steamapps/common/Guns of Icarus Online/GunsOfIcarusOnline_Data/Mono/x86/libmono.so #7 0xf56b1b09 in ?? () from /mnt/overflow/home/dscharrer/Games/Steam/steamapps/common/Guns of Icarus Online/GunsOfIcarusOnline_Data/Mono/x86/libmono.so #8 0xf56db0f7 in ?? () from /mnt/overflow/home/dscharrer/Games/Steam/steamapps/common/Guns of Icarus Online/GunsOfIcarusOnline_Data/Mono/x86/libmono.so #9 0xf56fc864 in ?? () from /mnt/overflow/home/dscharrer/Games/Steam/steamapps/common/Guns of Icarus Online/GunsOfIcarusOnline_Data/Mono/x86/libmono.so #10 0xf76241e1 in start_thread (arg=0xf4f0cb40) at pthread_create.c:333 #11 0xf70eabde in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:114 Thread 2 (Thread 0xf4f3db40 (LWP 12294)): #0 0xf76e5b69 in __kernel_vsyscall () #1 0xf7629be5 in pthread_cond_timedwait () at ../sysdeps/unix/sysv/linux/i386/i686/../pthread_cond_timedwait.S:245 #2 0xf56c5851 in ?? () from /mnt/overflow/home/dscharrer/Games/Steam/steamapps/common/Guns of Icarus Online/GunsOfIcarusOnline_Data/Mono/x86/libmono.so #3 0xf76241e1 in start_thread (arg=0xf4f3db40) at pthread_create.c:333 #4 0xf70eabde in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:114 Thread 1 (Thread 0xf7645940 (LWP 12293)): #0 0xf76e5b69 in __kernel_vsyscall () #1 0xf762f652 in __libc_do_syscall () at ../sysdeps/unix/sysv/linux/i386/libc-do-syscall.S:41 #2 0xf762bd8f in futex_abstimed_wait_cancelable (private=0, abstime=0x0, expected=1, futex_word=0xa7f78b8) at ../sysdeps/unix/sysv/linux/futex-internal.h:205 #3 do_futex_wait (sem=sem@entry=0xa7f78b8, abstime=0x0) at sem_waitcommon.c:115 #4 0xf762be77 in __new_sem_wait_slow (sem=0xa7f78b8, abstime=0x0) at sem_waitcommon.c:282 #5 0x08a11313 in ?? () #6 0x08a088d9 in ?? () #7 0x084e206b in ?? () #8 0x084f8de4 in ?? () #9 0x084f99a6 in ?? () #10 0x084f9d81 in ?? () #11 0x084fa3fd in ?? () #12 0x084fa6b9 in ?? () #13 0x0847858b in ?? () #14 0x08478cfe in ?? () #15 0x0843572a in ?? () #16 0x0843d2cc in ?? () #17 0x0843d57a in ?? () #18 0x08097e37 in ?? () #19 0x0847f9f5 in ?? () #20 0x084dfaaa in ?? () #21 0x084fa463 in ?? () #22 0x084fa6b9 in ?? () #23 0x0847858b in ?? () #24 0x08478cfe in ?? () #25 0x0843572a in ?? () #26 0x0843d2cc in ?? () #27 0x0843d57a in ?? () #28 0x08097e37 in ?? () #29 0x08458fa0 in ?? () #30 0x0845924b in ?? () #31 0x0810c23a in ?? () #32 0x0839391d in ?? () #33 0x08364262 in ?? () #34 0x080879e3 in ?? () #35 0xf701e56e in __libc_start_main (main=0x8086980, argc=1, argv=0xff9a1694, init=0x92f0a40, fini=0x92f0ab0, rtld_fini=0xf76f59e0 <_dl_fini>, stack_end=0xff9a168c) at ../csu/libc-start.c:289 #36 0x080912b5 in ?? () ================================================================= Got a SIGSEGV while executing native code. This usually indicates a fatal error in the mono runtime or one of the native libraries used by your application. =================================================================