diff options
Diffstat (limited to 'test/CodeGen/AMDGPU/si-sgpr-spill.ll')
-rw-r--r-- | test/CodeGen/AMDGPU/si-sgpr-spill.ll | 843 |
1 files changed, 550 insertions, 293 deletions
diff --git a/test/CodeGen/AMDGPU/si-sgpr-spill.ll b/test/CodeGen/AMDGPU/si-sgpr-spill.ll index e61b4051124a..8731e74d63a0 100644 --- a/test/CodeGen/AMDGPU/si-sgpr-spill.ll +++ b/test/CodeGen/AMDGPU/si-sgpr-spill.ll @@ -1,27 +1,29 @@ -; RUN: llc -march=amdgcn -mattr=+vgpr-spilling -verify-machineinstrs < %s | FileCheck %s -; RUN: llc -march=amdgcn -mcpu=tonga -mattr=-flat-for-global -mattr=+vgpr-spilling -verify-machineinstrs < %s | FileCheck %s +; RUN: llc -march=amdgcn -mattr=+vgpr-spilling -verify-machineinstrs < %s | FileCheck -check-prefix=GCN -check-prefix=TOVGPR %s +; RUN: llc -march=amdgcn -mcpu=tonga -mattr=+vgpr-spilling,-mattr=-flat-for-global -verify-machineinstrs < %s | FileCheck -check-prefix=GCN %s ; These tests check that the compiler won't crash when it needs to spill ; SGPRs. - @ddxy_lds = external addrspace(3) global [64 x i32] -; CHECK-LABEL: {{^}}main: -; CHECK: s_wqm +; GCN-LABEL: {{^}}main: +; GCN: s_wqm ; Make sure not emitting unused scratch resource descriptor setup -; CHECK-NOT: s_mov_b32 -; CHECK-NOT: s_mov_b32 -; CHECK-NOT: s_mov_b32 -; CHECK-NOT: s_mov_b32 +; GCN-NOT: s_mov_b32 +; GCN-NOT: s_mov_b32 +; GCN-NOT: s_mov_b32 +; GCN-NOT: s_mov_b32 -; CHECK: s_mov_b32 m0 +; GCN: s_mov_b32 m0 +; Make sure scratch space isn't being used for SGPR->VGPR spills ; Writing to M0 from an SMRD instruction will hang the GPU. -; CHECK-NOT: s_buffer_load_dword m0 -; CHECK: s_endpgm +; GCN-NOT: s_buffer_load_dword m0 +; GCN: s_endpgm + +; TOVGPR: ScratchSize: 0{{$}} define amdgpu_ps void @main([17 x <16 x i8>] addrspace(2)* byval %arg, [32 x <16 x i8>] addrspace(2)* byval %arg1, [16 x <8 x i32>] addrspace(2)* byval %arg2, float inreg %arg3, i32 inreg %arg4, <2 x i32> %arg5, <2 x i32> %arg6, <2 x i32> %arg7, <3 x i32> %arg8, <2 x i32> %arg9, <2 x i32> %arg10, <2 x i32> %arg11, float %arg12, float %arg13, float %arg14, float %arg15, float %arg16, float %arg17, float %arg18, float %arg19, float %arg20) { main_body: %tmp = getelementptr [17 x <16 x i8>], [17 x <16 x i8>] addrspace(2)* %arg, i64 0, i32 0 @@ -97,29 +99,114 @@ main_body: %tmp89 = load <8 x i32>, <8 x i32> addrspace(2)* %tmp88, !tbaa !0 %tmp90 = getelementptr [32 x <16 x i8>], [32 x <16 x i8>] addrspace(2)* %arg1, i64 0, i32 7 %tmp91 = load <16 x i8>, <16 x i8> addrspace(2)* %tmp90, !tbaa !0 - %tmp92 = call float @llvm.SI.fs.interp(i32 0, i32 0, i32 %arg4, <2 x i32> %arg6) - %tmp93 = call float @llvm.SI.fs.interp(i32 1, i32 0, i32 %arg4, <2 x i32> %arg6) - %tmp94 = call float @llvm.SI.fs.interp(i32 0, i32 1, i32 %arg4, <2 x i32> %arg6) - %tmp95 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %arg4, <2 x i32> %arg6) - %tmp96 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %arg4, <2 x i32> %arg6) - %tmp97 = call float @llvm.SI.fs.interp(i32 0, i32 2, i32 %arg4, <2 x i32> %arg6) - %tmp98 = call float @llvm.SI.fs.interp(i32 1, i32 2, i32 %arg4, <2 x i32> %arg6) - %tmp99 = call float @llvm.SI.fs.interp(i32 2, i32 2, i32 %arg4, <2 x i32> %arg6) - %tmp100 = call float @llvm.SI.fs.interp(i32 0, i32 3, i32 %arg4, <2 x i32> %arg6) - %tmp101 = call float @llvm.SI.fs.interp(i32 1, i32 3, i32 %arg4, <2 x i32> %arg6) - %tmp102 = call float @llvm.SI.fs.interp(i32 2, i32 3, i32 %arg4, <2 x i32> %arg6) - %tmp103 = call float @llvm.SI.fs.interp(i32 0, i32 4, i32 %arg4, <2 x i32> %arg6) - %tmp104 = call float @llvm.SI.fs.interp(i32 1, i32 4, i32 %arg4, <2 x i32> %arg6) - %tmp105 = call float @llvm.SI.fs.interp(i32 2, i32 4, i32 %arg4, <2 x i32> %arg6) - %tmp106 = call float @llvm.SI.fs.interp(i32 0, i32 5, i32 %arg4, <2 x i32> %arg6) - %tmp107 = call float @llvm.SI.fs.interp(i32 1, i32 5, i32 %arg4, <2 x i32> %arg6) - %tmp108 = call float @llvm.SI.fs.interp(i32 2, i32 5, i32 %arg4, <2 x i32> %arg6) + %i.i = extractelement <2 x i32> %arg6, i32 0 + %j.i = extractelement <2 x i32> %arg6, i32 1 + %i.f.i = bitcast i32 %i.i to float + %j.f.i = bitcast i32 %j.i to float + %p1.i = call float @llvm.amdgcn.interp.p1(float %i.f.i, i32 0, i32 0, i32 %arg4) #0 + %p2.i = call float @llvm.amdgcn.interp.p2(float %p1.i, float %j.f.i, i32 0, i32 0, i32 %arg4) #0 + %i.i91 = extractelement <2 x i32> %arg6, i32 0 + %j.i92 = extractelement <2 x i32> %arg6, i32 1 + %i.f.i93 = bitcast i32 %i.i91 to float + %j.f.i94 = bitcast i32 %j.i92 to float + %p1.i95 = call float @llvm.amdgcn.interp.p1(float %i.f.i93, i32 1, i32 0, i32 %arg4) #0 + %p2.i96 = call float @llvm.amdgcn.interp.p2(float %p1.i95, float %j.f.i94, i32 1, i32 0, i32 %arg4) #0 + %i.i85 = extractelement <2 x i32> %arg6, i32 0 + %j.i86 = extractelement <2 x i32> %arg6, i32 1 + %i.f.i87 = bitcast i32 %i.i85 to float + %j.f.i88 = bitcast i32 %j.i86 to float + %p1.i89 = call float @llvm.amdgcn.interp.p1(float %i.f.i87, i32 0, i32 1, i32 %arg4) #0 + %p2.i90 = call float @llvm.amdgcn.interp.p2(float %p1.i89, float %j.f.i88, i32 0, i32 1, i32 %arg4) #0 + %i.i79 = extractelement <2 x i32> %arg6, i32 0 + %j.i80 = extractelement <2 x i32> %arg6, i32 1 + %i.f.i81 = bitcast i32 %i.i79 to float + %j.f.i82 = bitcast i32 %j.i80 to float + %p1.i83 = call float @llvm.amdgcn.interp.p1(float %i.f.i81, i32 1, i32 1, i32 %arg4) #0 + %p2.i84 = call float @llvm.amdgcn.interp.p2(float %p1.i83, float %j.f.i82, i32 1, i32 1, i32 %arg4) #0 + %i.i73 = extractelement <2 x i32> %arg6, i32 0 + %j.i74 = extractelement <2 x i32> %arg6, i32 1 + %i.f.i75 = bitcast i32 %i.i73 to float + %j.f.i76 = bitcast i32 %j.i74 to float + %p1.i77 = call float @llvm.amdgcn.interp.p1(float %i.f.i75, i32 2, i32 1, i32 %arg4) #0 + %p2.i78 = call float @llvm.amdgcn.interp.p2(float %p1.i77, float %j.f.i76, i32 2, i32 1, i32 %arg4) #0 + %i.i67 = extractelement <2 x i32> %arg6, i32 0 + %j.i68 = extractelement <2 x i32> %arg6, i32 1 + %i.f.i69 = bitcast i32 %i.i67 to float + %j.f.i70 = bitcast i32 %j.i68 to float + %p1.i71 = call float @llvm.amdgcn.interp.p1(float %i.f.i69, i32 0, i32 2, i32 %arg4) #0 + %p2.i72 = call float @llvm.amdgcn.interp.p2(float %p1.i71, float %j.f.i70, i32 0, i32 2, i32 %arg4) #0 + %i.i61 = extractelement <2 x i32> %arg6, i32 0 + %j.i62 = extractelement <2 x i32> %arg6, i32 1 + %i.f.i63 = bitcast i32 %i.i61 to float + %j.f.i64 = bitcast i32 %j.i62 to float + %p1.i65 = call float @llvm.amdgcn.interp.p1(float %i.f.i63, i32 1, i32 2, i32 %arg4) #0 + %p2.i66 = call float @llvm.amdgcn.interp.p2(float %p1.i65, float %j.f.i64, i32 1, i32 2, i32 %arg4) #0 + %i.i55 = extractelement <2 x i32> %arg6, i32 0 + %j.i56 = extractelement <2 x i32> %arg6, i32 1 + %i.f.i57 = bitcast i32 %i.i55 to float + %j.f.i58 = bitcast i32 %j.i56 to float + %p1.i59 = call float @llvm.amdgcn.interp.p1(float %i.f.i57, i32 2, i32 2, i32 %arg4) #0 + %p2.i60 = call float @llvm.amdgcn.interp.p2(float %p1.i59, float %j.f.i58, i32 2, i32 2, i32 %arg4) #0 + %i.i49 = extractelement <2 x i32> %arg6, i32 0 + %j.i50 = extractelement <2 x i32> %arg6, i32 1 + %i.f.i51 = bitcast i32 %i.i49 to float + %j.f.i52 = bitcast i32 %j.i50 to float + %p1.i53 = call float @llvm.amdgcn.interp.p1(float %i.f.i51, i32 0, i32 3, i32 %arg4) #0 + %p2.i54 = call float @llvm.amdgcn.interp.p2(float %p1.i53, float %j.f.i52, i32 0, i32 3, i32 %arg4) #0 + %i.i43 = extractelement <2 x i32> %arg6, i32 0 + %j.i44 = extractelement <2 x i32> %arg6, i32 1 + %i.f.i45 = bitcast i32 %i.i43 to float + %j.f.i46 = bitcast i32 %j.i44 to float + %p1.i47 = call float @llvm.amdgcn.interp.p1(float %i.f.i45, i32 1, i32 3, i32 %arg4) #0 + %p2.i48 = call float @llvm.amdgcn.interp.p2(float %p1.i47, float %j.f.i46, i32 1, i32 3, i32 %arg4) #0 + %i.i37 = extractelement <2 x i32> %arg6, i32 0 + %j.i38 = extractelement <2 x i32> %arg6, i32 1 + %i.f.i39 = bitcast i32 %i.i37 to float + %j.f.i40 = bitcast i32 %j.i38 to float + %p1.i41 = call float @llvm.amdgcn.interp.p1(float %i.f.i39, i32 2, i32 3, i32 %arg4) #0 + %p2.i42 = call float @llvm.amdgcn.interp.p2(float %p1.i41, float %j.f.i40, i32 2, i32 3, i32 %arg4) #0 + %i.i31 = extractelement <2 x i32> %arg6, i32 0 + %j.i32 = extractelement <2 x i32> %arg6, i32 1 + %i.f.i33 = bitcast i32 %i.i31 to float + %j.f.i34 = bitcast i32 %j.i32 to float + %p1.i35 = call float @llvm.amdgcn.interp.p1(float %i.f.i33, i32 0, i32 4, i32 %arg4) #0 + %p2.i36 = call float @llvm.amdgcn.interp.p2(float %p1.i35, float %j.f.i34, i32 0, i32 4, i32 %arg4) #0 + %i.i25 = extractelement <2 x i32> %arg6, i32 0 + %j.i26 = extractelement <2 x i32> %arg6, i32 1 + %i.f.i27 = bitcast i32 %i.i25 to float + %j.f.i28 = bitcast i32 %j.i26 to float + %p1.i29 = call float @llvm.amdgcn.interp.p1(float %i.f.i27, i32 1, i32 4, i32 %arg4) #0 + %p2.i30 = call float @llvm.amdgcn.interp.p2(float %p1.i29, float %j.f.i28, i32 1, i32 4, i32 %arg4) #0 + %i.i19 = extractelement <2 x i32> %arg6, i32 0 + %j.i20 = extractelement <2 x i32> %arg6, i32 1 + %i.f.i21 = bitcast i32 %i.i19 to float + %j.f.i22 = bitcast i32 %j.i20 to float + %p1.i23 = call float @llvm.amdgcn.interp.p1(float %i.f.i21, i32 2, i32 4, i32 %arg4) #0 + %p2.i24 = call float @llvm.amdgcn.interp.p2(float %p1.i23, float %j.f.i22, i32 2, i32 4, i32 %arg4) #0 + %i.i13 = extractelement <2 x i32> %arg6, i32 0 + %j.i14 = extractelement <2 x i32> %arg6, i32 1 + %i.f.i15 = bitcast i32 %i.i13 to float + %j.f.i16 = bitcast i32 %j.i14 to float + %p1.i17 = call float @llvm.amdgcn.interp.p1(float %i.f.i15, i32 0, i32 5, i32 %arg4) #0 + %p2.i18 = call float @llvm.amdgcn.interp.p2(float %p1.i17, float %j.f.i16, i32 0, i32 5, i32 %arg4) #0 + %i.i7 = extractelement <2 x i32> %arg6, i32 0 + %j.i8 = extractelement <2 x i32> %arg6, i32 1 + %i.f.i9 = bitcast i32 %i.i7 to float + %j.f.i10 = bitcast i32 %j.i8 to float + %p1.i11 = call float @llvm.amdgcn.interp.p1(float %i.f.i9, i32 1, i32 5, i32 %arg4) #0 + %p2.i12 = call float @llvm.amdgcn.interp.p2(float %p1.i11, float %j.f.i10, i32 1, i32 5, i32 %arg4) #0 + %i.i1 = extractelement <2 x i32> %arg6, i32 0 + %j.i2 = extractelement <2 x i32> %arg6, i32 1 + %i.f.i3 = bitcast i32 %i.i1 to float + %j.f.i4 = bitcast i32 %j.i2 to float + %p1.i5 = call float @llvm.amdgcn.interp.p1(float %i.f.i3, i32 2, i32 5, i32 %arg4) #0 + %p2.i6 = call float @llvm.amdgcn.interp.p2(float %p1.i5, float %j.f.i4, i32 2, i32 5, i32 %arg4) #0 %mbcnt.lo.0 = call i32 @llvm.amdgcn.mbcnt.lo(i32 -1, i32 0) %tmp109 = call i32 @llvm.amdgcn.mbcnt.hi(i32 -1, i32 %mbcnt.lo.0) %tmp110 = getelementptr [64 x i32], [64 x i32] addrspace(3)* @ddxy_lds, i32 0, i32 %tmp109 - %tmp111 = bitcast float %tmp92 to i32 + %tmp111 = bitcast float %p2.i to i32 store i32 %tmp111, i32 addrspace(3)* %tmp110 - %tmp112 = bitcast float %tmp93 to i32 + %tmp112 = bitcast float %p2.i96 to i32 store i32 %tmp112, i32 addrspace(3)* %tmp110 %mbcnt.lo.1 = call i32 @llvm.amdgcn.mbcnt.lo(i32 -1, i32 0) %tmp113 = call i32 @llvm.amdgcn.mbcnt.hi(i32 -1, i32 %mbcnt.lo.1) @@ -128,14 +215,14 @@ main_body: %tmp116 = getelementptr [64 x i32], [64 x i32] addrspace(3)* @ddxy_lds, i32 0, i32 %tmp115 %tmp117 = add i32 %tmp115, 1 %tmp118 = getelementptr [64 x i32], [64 x i32] addrspace(3)* @ddxy_lds, i32 0, i32 %tmp117 - %tmp119 = bitcast float %tmp92 to i32 + %tmp119 = bitcast float %p2.i to i32 store i32 %tmp119, i32 addrspace(3)* %tmp114 %tmp120 = load i32, i32 addrspace(3)* %tmp116 %tmp121 = bitcast i32 %tmp120 to float %tmp122 = load i32, i32 addrspace(3)* %tmp118 %tmp123 = bitcast i32 %tmp122 to float %tmp124 = fsub float %tmp123, %tmp121 - %tmp125 = bitcast float %tmp93 to i32 + %tmp125 = bitcast float %p2.i96 to i32 store i32 %tmp125, i32 addrspace(3)* %tmp114 %tmp126 = load i32, i32 addrspace(3)* %tmp116 %tmp127 = bitcast i32 %tmp126 to float @@ -148,10 +235,10 @@ main_body: %tmp134 = insertelement <4 x float> %tmp133, float %tmp130, i32 3 %tmp135 = extractelement <4 x float> %tmp134, i32 0 %tmp136 = extractelement <4 x float> %tmp134, i32 1 - %tmp137 = fmul float %tmp59, %tmp92 - %tmp138 = fmul float %tmp59, %tmp93 - %tmp139 = fmul float %tmp59, %tmp93 - %tmp140 = fmul float %tmp59, %tmp93 + %tmp137 = fmul float %tmp59, %p2.i + %tmp138 = fmul float %tmp59, %p2.i96 + %tmp139 = fmul float %tmp59, %p2.i96 + %tmp140 = fmul float %tmp59, %p2.i96 %mbcnt.lo.2 = call i32 @llvm.amdgcn.mbcnt.lo(i32 -1, i32 0) %tmp141 = call i32 @llvm.amdgcn.mbcnt.hi(i32 -1, i32 %mbcnt.lo.2) %tmp142 = getelementptr [64 x i32], [64 x i32] addrspace(3)* @ddxy_lds, i32 0, i32 %tmp141 @@ -204,26 +291,26 @@ main_body: %tmp180 = insertelement <4 x float> %tmp179, float %tmp176, i32 3 %tmp181 = extractelement <4 x float> %tmp180, i32 0 %tmp182 = extractelement <4 x float> %tmp180, i32 1 - %tmp183 = fdiv float 1.000000e+00, %tmp96 + %tmp183 = fdiv float 1.000000e+00, %p2.i78 %tmp184 = fmul float %tmp32, %tmp183 %tmp185 = fcmp uge float 1.000000e+00, %tmp184 %tmp186 = select i1 %tmp185, float %tmp184, float 1.000000e+00 %tmp187 = fmul float %tmp186, %tmp29 - %tmp188 = call float @ceil(float %tmp187) + %tmp188 = call float @llvm.ceil.f32(float %tmp187) %tmp189 = fcmp uge float 3.000000e+00, %tmp188 %tmp190 = select i1 %tmp189, float 3.000000e+00, float %tmp188 %tmp191 = fdiv float 1.000000e+00, %tmp190 %tmp192 = fdiv float 1.000000e+00, %tmp29 %tmp193 = fmul float %tmp190, %tmp192 %tmp194 = fmul float %tmp30, %tmp193 - %tmp195 = fmul float %tmp94, %tmp94 - %tmp196 = fmul float %tmp95, %tmp95 + %tmp195 = fmul float %p2.i90, %p2.i90 + %tmp196 = fmul float %p2.i84, %p2.i84 %tmp197 = fadd float %tmp196, %tmp195 - %tmp198 = fmul float %tmp96, %tmp96 + %tmp198 = fmul float %p2.i78, %p2.i78 %tmp199 = fadd float %tmp197, %tmp198 %tmp200 = call float @llvm.amdgcn.rsq.f32(float %tmp199) - %tmp201 = fmul float %tmp94, %tmp200 - %tmp202 = fmul float %tmp95, %tmp200 + %tmp201 = fmul float %p2.i90, %tmp200 + %tmp202 = fmul float %p2.i84, %tmp200 %tmp203 = fmul float %tmp201, %tmp28 %tmp204 = fmul float %tmp202, %tmp28 %tmp205 = fmul float %tmp203, -1.000000e+00 @@ -231,9 +318,9 @@ main_body: %tmp207 = fmul float %tmp205, %tmp31 %tmp208 = fmul float %tmp206, %tmp31 %tmp209 = fsub float -0.000000e+00, %tmp207 - %tmp210 = fadd float %tmp92, %tmp209 + %tmp210 = fadd float %p2.i, %tmp209 %tmp211 = fsub float -0.000000e+00, %tmp208 - %tmp212 = fadd float %tmp93, %tmp211 + %tmp212 = fadd float %p2.i96, %tmp211 %tmp213 = fmul float %tmp205, %tmp191 %tmp214 = fmul float %tmp206, %tmp191 %tmp215 = fmul float -1.000000e+00, %tmp191 @@ -277,7 +364,8 @@ ENDIF: ; preds = %LOOP %tmp240 = insertelement <8 x i32> %tmp239, i32 %tmp238, i32 5 %tmp241 = insertelement <8 x i32> %tmp240, i32 undef, i32 6 %tmp242 = insertelement <8 x i32> %tmp241, i32 undef, i32 7 - %tmp243 = call <4 x float> @llvm.SI.image.sample.d.v8i32(<8 x i32> %tmp242, <8 x i32> %tmp61, <4 x i32> %tmp63.bc, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) + %tmp242.bc = bitcast <8 x i32> %tmp242 to <8 x float> + %tmp243 = call <4 x float> @llvm.amdgcn.image.sample.d.v4f32.v8f32.v8i32(<8 x float> %tmp242.bc, <8 x i32> %tmp61, <4 x i32> %tmp63.bc, i32 15, i1 false, i1 false, i1 false, i1 false, i1 false) %tmp244 = extractelement <4 x float> %tmp243, i32 3 %tmp245 = fcmp oge float %temp30.0, %tmp244 %tmp246 = sext i1 %tmp245 to i32 @@ -323,7 +411,8 @@ IF67: ; preds = %LOOP65 %tmp275 = insertelement <8 x i32> %tmp274, i32 undef, i32 6 %tmp276 = insertelement <8 x i32> %tmp275, i32 undef, i32 7 %tmp67.bc = bitcast <16 x i8> %tmp67 to <4 x i32> - %tmp277 = call <4 x float> @llvm.SI.image.sample.d.v8i32(<8 x i32> %tmp276, <8 x i32> %tmp65, <4 x i32> %tmp67.bc, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) + %tmp276.bc = bitcast <8 x i32> %tmp276 to <8 x float> + %tmp277 = call <4 x float> @llvm.amdgcn.image.sample.d.v4f32.v8f32.v8i32(<8 x float> %tmp276.bc, <8 x i32> %tmp65, <4 x i32> %tmp67.bc, i32 15, i1 false, i1 false, i1 false, i1 false, i1 false) %tmp278 = extractelement <4 x float> %tmp277, i32 0 %tmp279 = extractelement <4 x float> %tmp277, i32 1 %tmp280 = extractelement <4 x float> %tmp277, i32 2 @@ -344,7 +433,8 @@ IF67: ; preds = %LOOP65 %tmp295 = insertelement <8 x i32> %tmp294, i32 undef, i32 6 %tmp296 = insertelement <8 x i32> %tmp295, i32 undef, i32 7 %tmp83.bc = bitcast <16 x i8> %tmp83 to <4 x i32> - %tmp297 = call <4 x float> @llvm.SI.image.sample.d.v8i32(<8 x i32> %tmp296, <8 x i32> %tmp81, <4 x i32> %tmp83.bc, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) + %tmp296.bc = bitcast <8 x i32> %tmp296 to <8 x float> + %tmp297 = call <4 x float> @llvm.amdgcn.image.sample.d.v4f32.v8f32.v8i32(<8 x float> %tmp296.bc, <8 x i32> %tmp81, <4 x i32> %tmp83.bc, i32 15, i1 false, i1 false, i1 false, i1 false, i1 false) %tmp298 = extractelement <4 x float> %tmp297, i32 0 %tmp299 = extractelement <4 x float> %tmp297, i32 1 %tmp300 = extractelement <4 x float> %tmp297, i32 2 @@ -363,7 +453,8 @@ IF67: ; preds = %LOOP65 %tmp313 = insertelement <8 x i32> %tmp312, i32 undef, i32 6 %tmp314 = insertelement <8 x i32> %tmp313, i32 undef, i32 7 %tmp79.bc = bitcast <16 x i8> %tmp79 to <4 x i32> - %tmp315 = call <4 x float> @llvm.SI.image.sample.d.v8i32(<8 x i32> %tmp314, <8 x i32> %tmp77, <4 x i32> %tmp79.bc, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) + %tmp314.bc = bitcast <8 x i32> %tmp314 to <8 x float> + %tmp315 = call <4 x float> @llvm.amdgcn.image.sample.d.v4f32.v8f32.v8i32(<8 x float> %tmp314.bc, <8 x i32> %tmp77, <4 x i32> %tmp79.bc, i32 15, i1 false, i1 false, i1 false, i1 false, i1 false) %tmp316 = extractelement <4 x float> %tmp315, i32 0 %tmp317 = extractelement <4 x float> %tmp315, i32 1 %tmp318 = extractelement <4 x float> %tmp315, i32 2 @@ -393,7 +484,8 @@ IF67: ; preds = %LOOP65 %tmp342 = insertelement <8 x i32> %tmp341, i32 %tmp336, i32 5 %tmp343 = insertelement <8 x i32> %tmp342, i32 undef, i32 6 %tmp344 = insertelement <8 x i32> %tmp343, i32 undef, i32 7 - %tmp345 = call <4 x float> @llvm.SI.image.sample.d.v8i32(<8 x i32> %tmp344, <8 x i32> %tmp61, <4 x i32> %tmp63.bc, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) + %tmp344.bc = bitcast <8 x i32> %tmp344 to <8 x float> + %tmp345 = call <4 x float> @llvm.amdgcn.image.sample.d.v4f32.v8f32.v8i32(<8 x float> %tmp344.bc, <8 x i32> %tmp61, <4 x i32> %tmp63.bc, i32 15, i1 false, i1 false, i1 false, i1 false, i1 false) %tmp346 = extractelement <4 x float> %tmp345, i32 0 %tmp347 = extractelement <4 x float> %tmp345, i32 1 %tmp348 = extractelement <4 x float> %tmp345, i32 2 @@ -424,14 +516,15 @@ IF67: ; preds = %LOOP65 %tmp373 = insertelement <8 x i32> %tmp372, i32 undef, i32 6 %tmp374 = insertelement <8 x i32> %tmp373, i32 undef, i32 7 %tmp71.bc = bitcast <16 x i8> %tmp71 to <4 x i32> - %tmp375 = call <4 x float> @llvm.SI.image.sample.d.v8i32(<8 x i32> %tmp374, <8 x i32> %tmp69, <4 x i32> %tmp71.bc, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) + %tmp374.bc = bitcast <8 x i32> %tmp374 to <8 x float> + %tmp375 = call <4 x float> @llvm.amdgcn.image.sample.d.v4f32.v8f32.v8i32(<8 x float> %tmp374.bc, <8 x i32> %tmp69, <4 x i32> %tmp71.bc, i32 15, i1 false, i1 false, i1 false, i1 false, i1 false) %tmp376 = extractelement <4 x float> %tmp375, i32 0 %tmp377 = extractelement <4 x float> %tmp375, i32 1 %tmp378 = extractelement <4 x float> %tmp375, i32 2 %tmp379 = extractelement <4 x float> %tmp375, i32 3 - %tmp380 = fsub float -0.000000e+00, %tmp94 - %tmp381 = fsub float -0.000000e+00, %tmp95 - %tmp382 = fsub float -0.000000e+00, %tmp96 + %tmp380 = fsub float -0.000000e+00, %p2.i90 + %tmp381 = fsub float -0.000000e+00, %p2.i84 + %tmp382 = fsub float -0.000000e+00, %p2.i78 %tmp383 = fmul float %tmp358, %tmp380 %tmp384 = fmul float %tmp359, %tmp381 %tmp385 = fadd float %tmp384, %tmp383 @@ -449,20 +542,20 @@ IF67: ; preds = %LOOP65 %tmp397 = fadd float %tmp381, %tmp396 %tmp398 = fsub float -0.000000e+00, %tmp393 %tmp399 = fadd float %tmp382, %tmp398 - %tmp400 = fmul float %tmp395, %tmp97 - %tmp401 = fmul float %tmp395, %tmp98 - %tmp402 = fmul float %tmp395, %tmp99 - %tmp403 = fmul float %tmp397, %tmp100 + %tmp400 = fmul float %tmp395, %p2.i72 + %tmp401 = fmul float %tmp395, %p2.i66 + %tmp402 = fmul float %tmp395, %p2.i60 + %tmp403 = fmul float %tmp397, %p2.i54 %tmp404 = fadd float %tmp403, %tmp400 - %tmp405 = fmul float %tmp397, %tmp101 + %tmp405 = fmul float %tmp397, %p2.i48 %tmp406 = fadd float %tmp405, %tmp401 - %tmp407 = fmul float %tmp397, %tmp102 + %tmp407 = fmul float %tmp397, %p2.i42 %tmp408 = fadd float %tmp407, %tmp402 - %tmp409 = fmul float %tmp399, %tmp103 + %tmp409 = fmul float %tmp399, %p2.i36 %tmp410 = fadd float %tmp409, %tmp404 - %tmp411 = fmul float %tmp399, %tmp104 + %tmp411 = fmul float %tmp399, %p2.i30 %tmp412 = fadd float %tmp411, %tmp406 - %tmp413 = fmul float %tmp399, %tmp105 + %tmp413 = fmul float %tmp399, %p2.i24 %tmp414 = fadd float %tmp413, %tmp408 %tmp415 = bitcast float %tmp135 to i32 %tmp416 = bitcast float %tmp181 to i32 @@ -479,7 +572,8 @@ IF67: ; preds = %LOOP65 %tmp427 = insertelement <8 x i32> %tmp426, i32 undef, i32 6 %tmp428 = insertelement <8 x i32> %tmp427, i32 undef, i32 7 %tmp87.bc = bitcast <16 x i8> %tmp87 to <4 x i32> - %tmp429 = call <4 x float> @llvm.SI.image.sample.d.v8i32(<8 x i32> %tmp428, <8 x i32> %tmp85, <4 x i32> %tmp87.bc, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) + %tmp428.bc = bitcast <8 x i32> %tmp428 to <8 x float> + %tmp429 = call <4 x float> @llvm.amdgcn.image.sample.d.v4f32.v8f32.v8i32(<8 x float> %tmp428.bc, <8 x i32> %tmp85, <4 x i32> %tmp87.bc, i32 15, i1 false, i1 false, i1 false, i1 false, i1 false) %tmp430 = extractelement <4 x float> %tmp429, i32 0 %tmp431 = extractelement <4 x float> %tmp429, i32 1 %tmp432 = extractelement <4 x float> %tmp429, i32 2 @@ -502,12 +596,22 @@ IF67: ; preds = %LOOP65 %tmp449 = insertelement <4 x float> %tmp448, float %tmp445, i32 1 %tmp450 = insertelement <4 x float> %tmp449, float %tmp447, i32 2 %tmp451 = insertelement <4 x float> %tmp450, float %tmp194, i32 3 - %tmp452 = call <4 x float> @llvm.AMDGPU.cube(<4 x float> %tmp451) + %tmp451.x = extractelement <4 x float> %tmp451, i32 0 + %tmp451.y = extractelement <4 x float> %tmp451, i32 1 + %tmp451.z = extractelement <4 x float> %tmp451, i32 2 + %cubetc = call float @llvm.amdgcn.cubetc(float %tmp451.x, float %tmp451.y, float %tmp451.z) + %cubesc = call float @llvm.amdgcn.cubesc(float %tmp451.x, float %tmp451.y, float %tmp451.z) + %cubema = call float @llvm.amdgcn.cubema(float %tmp451.x, float %tmp451.y, float %tmp451.z) + %cubeid = call float @llvm.amdgcn.cubeid(float %tmp451.x, float %tmp451.y, float %tmp451.z) + %tmp452.0 = insertelement <4 x float> undef, float %cubetc, i32 0 + %tmp452.1 = insertelement <4 x float> %tmp452.0, float %cubesc, i32 1 + %tmp452.2 = insertelement <4 x float> %tmp452.1, float %cubema, i32 2 + %tmp452 = insertelement <4 x float> %tmp452.2, float %cubeid, i32 3 %tmp453 = extractelement <4 x float> %tmp452, i32 0 %tmp454 = extractelement <4 x float> %tmp452, i32 1 %tmp455 = extractelement <4 x float> %tmp452, i32 2 %tmp456 = extractelement <4 x float> %tmp452, i32 3 - %tmp457 = call float @fabs(float %tmp455) + %tmp457 = call float @llvm.fabs.f32(float %tmp455) %tmp458 = fdiv float 1.000000e+00, %tmp457 %tmp459 = fmul float %tmp453, %tmp458 %tmp460 = fadd float %tmp459, 1.500000e+00 @@ -521,7 +625,8 @@ IF67: ; preds = %LOOP65 %tmp468 = insertelement <4 x i32> %tmp467, i32 %tmp465, i32 2 %tmp469 = insertelement <4 x i32> %tmp468, i32 undef, i32 3 %tmp91.bc = bitcast <16 x i8> %tmp91 to <4 x i32> - %tmp470 = call <4 x float> @llvm.SI.image.sample.v4i32(<4 x i32> %tmp469, <8 x i32> %tmp89, <4 x i32> %tmp91.bc, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) + %tmp469.bc = bitcast <4 x i32> %tmp469 to <4 x float> + %tmp470 = call <4 x float> @llvm.amdgcn.image.sample.v4f32.v4f32.v8i32(<4 x float> %tmp469.bc, <8 x i32> %tmp89, <4 x i32> %tmp91.bc, i32 15, i1 false, i1 false, i1 false, i1 false, i1 false) #0 %tmp471 = extractelement <4 x float> %tmp470, i32 0 %tmp472 = extractelement <4 x float> %tmp470, i32 1 %tmp473 = extractelement <4 x float> %tmp470, i32 2 @@ -531,15 +636,15 @@ IF67: ; preds = %LOOP65 %tmp477 = fadd float %tmp476, %tmp329 %tmp478 = fmul float %tmp432, %tmp473 %tmp479 = fadd float %tmp478, %tmp330 - %tmp480 = fmul float %tmp106, %tmp106 - %tmp481 = fmul float %tmp107, %tmp107 + %tmp480 = fmul float %p2.i18, %p2.i18 + %tmp481 = fmul float %p2.i12, %p2.i12 %tmp482 = fadd float %tmp481, %tmp480 - %tmp483 = fmul float %tmp108, %tmp108 + %tmp483 = fmul float %p2.i6, %p2.i6 %tmp484 = fadd float %tmp482, %tmp483 %tmp485 = call float @llvm.amdgcn.rsq.f32(float %tmp484) - %tmp486 = fmul float %tmp106, %tmp485 - %tmp487 = fmul float %tmp107, %tmp485 - %tmp488 = fmul float %tmp108, %tmp485 + %tmp486 = fmul float %p2.i18, %tmp485 + %tmp487 = fmul float %p2.i12, %tmp485 + %tmp488 = fmul float %p2.i6, %tmp485 %tmp489 = fmul float %tmp376, %tmp39 %tmp490 = fmul float %tmp377, %tmp40 %tmp491 = fmul float %tmp378, %tmp41 @@ -560,15 +665,15 @@ IF67: ; preds = %LOOP65 %tmp506 = fadd float %tmp487, %tmp505 %tmp507 = fsub float -0.000000e+00, %tmp502 %tmp508 = fadd float %tmp488, %tmp507 - %tmp509 = fmul float %tmp94, %tmp94 - %tmp510 = fmul float %tmp95, %tmp95 + %tmp509 = fmul float %p2.i90, %p2.i90 + %tmp510 = fmul float %p2.i84, %p2.i84 %tmp511 = fadd float %tmp510, %tmp509 - %tmp512 = fmul float %tmp96, %tmp96 + %tmp512 = fmul float %p2.i78, %p2.i78 %tmp513 = fadd float %tmp511, %tmp512 %tmp514 = call float @llvm.amdgcn.rsq.f32(float %tmp513) - %tmp515 = fmul float %tmp94, %tmp514 - %tmp516 = fmul float %tmp95, %tmp514 - %tmp517 = fmul float %tmp96, %tmp514 + %tmp515 = fmul float %p2.i90, %tmp514 + %tmp516 = fmul float %p2.i84, %tmp514 + %tmp517 = fmul float %p2.i78, %tmp514 %tmp518 = fmul float %tmp504, %tmp515 %tmp519 = fmul float %tmp506, %tmp516 %tmp520 = fadd float %tmp519, %tmp518 @@ -623,7 +728,8 @@ IF67: ; preds = %LOOP65 %tmp569 = insertelement <8 x i32> %tmp568, i32 undef, i32 6 %tmp570 = insertelement <8 x i32> %tmp569, i32 undef, i32 7 %tmp75.bc = bitcast <16 x i8> %tmp75 to <4 x i32> - %tmp571 = call <4 x float> @llvm.SI.image.sample.d.v8i32(<8 x i32> %tmp570, <8 x i32> %tmp73, <4 x i32> %tmp75.bc, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) + %tmp570.bc = bitcast <8 x i32> %tmp570 to <8 x float> + %tmp571 = call <4 x float> @llvm.amdgcn.image.sample.d.v4f32.v8f32.v8i32(<8 x float> %tmp570.bc, <8 x i32> %tmp73, <4 x i32> %tmp75.bc, i32 15, i1 false, i1 false, i1 false, i1 false, i1 false) %tmp572 = extractelement <4 x float> %tmp571, i32 0 %tmp573 = extractelement <4 x float> %tmp571, i32 1 %tmp574 = extractelement <4 x float> %tmp571, i32 2 @@ -633,11 +739,9 @@ IF67: ; preds = %LOOP65 %tmp578 = fadd float %tmp577, %tmp554 %tmp579 = fmul float %tmp574, %tmp45 %tmp580 = fadd float %tmp579, %tmp556 - %tmp581 = call i32 @llvm.SI.packf16(float %tmp576, float %tmp578) - %tmp582 = bitcast i32 %tmp581 to float - %tmp583 = call i32 @llvm.SI.packf16(float %tmp580, float %tmp282) - %tmp584 = bitcast i32 %tmp583 to float - call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %tmp582, float %tmp584, float %tmp582, float %tmp584) + %tmp581 = call <2 x half> @llvm.amdgcn.cvt.pkrtz(float %tmp576, float %tmp578) + %tmp583 = call <2 x half> @llvm.amdgcn.cvt.pkrtz(float %tmp580, float %tmp282) + call void @llvm.amdgcn.exp.compr.v2f16(i32 0, i32 15, <2 x half> %tmp581, <2 x half> %tmp583, i1 true, i1 true) #0 ret void ENDIF66: ; preds = %LOOP65 @@ -647,7 +751,8 @@ ENDIF66: ; preds = %LOOP65 %tmp588 = insertelement <8 x i32> %tmp587, i32 %tmp586, i32 5 %tmp589 = insertelement <8 x i32> %tmp588, i32 undef, i32 6 %tmp590 = insertelement <8 x i32> %tmp589, i32 undef, i32 7 - %tmp591 = call <4 x float> @llvm.SI.image.sample.d.v8i32(<8 x i32> %tmp590, <8 x i32> %tmp61, <4 x i32> %tmp63.bc, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) + %tmp590.bc = bitcast <8 x i32> %tmp590 to <8 x float> + %tmp591 = call <4 x float> @llvm.amdgcn.image.sample.d.v4f32.v8f32.v8i32(<8 x float> %tmp590.bc, <8 x i32> %tmp61, <4 x i32> %tmp63.bc, i32 15, i1 false, i1 false, i1 false, i1 false, i1 false) %tmp592 = extractelement <4 x float> %tmp591, i32 3 %tmp593 = fcmp oge float %temp30.1, %tmp592 %tmp594 = sext i1 %tmp593 to i32 @@ -670,9 +775,10 @@ ENDIF66: ; preds = %LOOP65 br label %LOOP65 } -; CHECK-LABEL: {{^}}main1: -; CHECK: s_endpgm -define amdgpu_ps void @main1([17 x <16 x i8>] addrspace(2)* byval %arg, [32 x <16 x i8>] addrspace(2)* byval %arg1, [16 x <8 x i32>] addrspace(2)* byval %arg2, float inreg %arg3, i32 inreg %arg4, <2 x i32> %arg5, <2 x i32> %arg6, <2 x i32> %arg7, <3 x i32> %arg8, <2 x i32> %arg9, <2 x i32> %arg10, <2 x i32> %arg11, float %arg12, float %arg13, float %arg14, float %arg15, float %arg16, float %arg17, float %arg18, float %arg19, float %arg20) { +; GCN-LABEL: {{^}}main1: +; GCN: s_endpgm +; TOVGPR: ScratchSize: 0{{$}} +define amdgpu_ps void @main1([17 x <16 x i8>] addrspace(2)* byval %arg, [32 x <16 x i8>] addrspace(2)* byval %arg1, [16 x <8 x i32>] addrspace(2)* byval %arg2, float inreg %arg3, i32 inreg %arg4, <2 x i32> %arg5, <2 x i32> %arg6, <2 x i32> %arg7, <3 x i32> %arg8, <2 x i32> %arg9, <2 x i32> %arg10, <2 x i32> %arg11, float %arg12, float %arg13, float %arg14, float %arg15, float %arg16, float %arg17, float %arg18, float %arg19, float %arg20) #0 { main_body: %tmp = getelementptr [17 x <16 x i8>], [17 x <16 x i8>] addrspace(2)* %arg, i64 0, i32 0 %tmp21 = load <16 x i8>, <16 x i8> addrspace(2)* %tmp, !tbaa !0 @@ -817,52 +923,210 @@ main_body: %tmp160 = load <16 x i8>, <16 x i8> addrspace(2)* %tmp159, !tbaa !0 %tmp161 = fcmp ugt float %arg17, 0.000000e+00 %tmp162 = select i1 %tmp161, float 1.000000e+00, float 0.000000e+00 - %tmp163 = call float @llvm.SI.fs.interp(i32 0, i32 0, i32 %arg4, <2 x i32> %arg6) - %tmp164 = call float @llvm.SI.fs.interp(i32 1, i32 0, i32 %arg4, <2 x i32> %arg6) - %tmp165 = call float @llvm.SI.fs.interp(i32 2, i32 0, i32 %arg4, <2 x i32> %arg6) - %tmp166 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %arg4, <2 x i32> %arg6) - %tmp167 = call float @llvm.SI.fs.interp(i32 0, i32 1, i32 %arg4, <2 x i32> %arg6) - %tmp168 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %arg4, <2 x i32> %arg6) - %tmp169 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %arg4, <2 x i32> %arg6) - %tmp170 = call float @llvm.SI.fs.interp(i32 3, i32 1, i32 %arg4, <2 x i32> %arg6) - %tmp171 = call float @llvm.SI.fs.interp(i32 0, i32 2, i32 %arg4, <2 x i32> %arg6) - %tmp172 = call float @llvm.SI.fs.interp(i32 1, i32 2, i32 %arg4, <2 x i32> %arg6) - %tmp173 = call float @llvm.SI.fs.interp(i32 2, i32 2, i32 %arg4, <2 x i32> %arg6) - %tmp174 = call float @llvm.SI.fs.interp(i32 3, i32 2, i32 %arg4, <2 x i32> %arg6) - %tmp175 = call float @llvm.SI.fs.interp(i32 0, i32 3, i32 %arg4, <2 x i32> %arg6) - %tmp176 = call float @llvm.SI.fs.interp(i32 1, i32 3, i32 %arg4, <2 x i32> %arg6) - %tmp177 = call float @llvm.SI.fs.interp(i32 2, i32 3, i32 %arg4, <2 x i32> %arg6) - %tmp178 = call float @llvm.SI.fs.interp(i32 3, i32 3, i32 %arg4, <2 x i32> %arg6) - %tmp179 = call float @llvm.SI.fs.interp(i32 0, i32 4, i32 %arg4, <2 x i32> %arg6) - %tmp180 = call float @llvm.SI.fs.interp(i32 1, i32 4, i32 %arg4, <2 x i32> %arg6) - %tmp181 = call float @llvm.SI.fs.interp(i32 2, i32 4, i32 %arg4, <2 x i32> %arg6) - %tmp182 = call float @llvm.SI.fs.interp(i32 3, i32 4, i32 %arg4, <2 x i32> %arg6) - %tmp183 = call float @llvm.SI.fs.interp(i32 0, i32 5, i32 %arg4, <2 x i32> %arg6) - %tmp184 = call float @llvm.SI.fs.interp(i32 1, i32 5, i32 %arg4, <2 x i32> %arg6) - %tmp185 = call float @llvm.SI.fs.interp(i32 2, i32 5, i32 %arg4, <2 x i32> %arg6) - %tmp186 = call float @llvm.SI.fs.interp(i32 3, i32 5, i32 %arg4, <2 x i32> %arg6) - %tmp187 = call float @llvm.SI.fs.interp(i32 0, i32 6, i32 %arg4, <2 x i32> %arg6) - %tmp188 = call float @llvm.SI.fs.interp(i32 1, i32 6, i32 %arg4, <2 x i32> %arg6) - %tmp189 = call float @llvm.SI.fs.interp(i32 2, i32 6, i32 %arg4, <2 x i32> %arg6) - %tmp190 = call float @llvm.SI.fs.interp(i32 3, i32 6, i32 %arg4, <2 x i32> %arg6) - %tmp191 = call float @llvm.SI.fs.interp(i32 0, i32 7, i32 %arg4, <2 x i32> %arg6) - %tmp192 = call float @llvm.SI.fs.interp(i32 1, i32 7, i32 %arg4, <2 x i32> %arg6) - %tmp193 = call float @llvm.SI.fs.interp(i32 2, i32 7, i32 %arg4, <2 x i32> %arg6) - %tmp194 = call float @llvm.SI.fs.interp(i32 3, i32 7, i32 %arg4, <2 x i32> %arg6) + %i.i = extractelement <2 x i32> %arg6, i32 0 + %j.i = extractelement <2 x i32> %arg6, i32 1 + %i.f.i = bitcast i32 %i.i to float + %j.f.i = bitcast i32 %j.i to float + %p1.i = call float @llvm.amdgcn.interp.p1(float %i.f.i, i32 0, i32 0, i32 %arg4) #0 + %p2.i = call float @llvm.amdgcn.interp.p2(float %p1.i, float %j.f.i, i32 0, i32 0, i32 %arg4) #0 + %i.i181 = extractelement <2 x i32> %arg6, i32 0 + %j.i182 = extractelement <2 x i32> %arg6, i32 1 + %i.f.i183 = bitcast i32 %i.i181 to float + %j.f.i184 = bitcast i32 %j.i182 to float + %p1.i185 = call float @llvm.amdgcn.interp.p1(float %i.f.i183, i32 1, i32 0, i32 %arg4) #0 + %p2.i186 = call float @llvm.amdgcn.interp.p2(float %p1.i185, float %j.f.i184, i32 1, i32 0, i32 %arg4) #0 + %i.i175 = extractelement <2 x i32> %arg6, i32 0 + %j.i176 = extractelement <2 x i32> %arg6, i32 1 + %i.f.i177 = bitcast i32 %i.i175 to float + %j.f.i178 = bitcast i32 %j.i176 to float + %p1.i179 = call float @llvm.amdgcn.interp.p1(float %i.f.i177, i32 2, i32 0, i32 %arg4) #0 + %p2.i180 = call float @llvm.amdgcn.interp.p2(float %p1.i179, float %j.f.i178, i32 2, i32 0, i32 %arg4) #0 + %i.i169 = extractelement <2 x i32> %arg6, i32 0 + %j.i170 = extractelement <2 x i32> %arg6, i32 1 + %i.f.i171 = bitcast i32 %i.i169 to float + %j.f.i172 = bitcast i32 %j.i170 to float + %p1.i173 = call float @llvm.amdgcn.interp.p1(float %i.f.i171, i32 3, i32 0, i32 %arg4) #0 + %p2.i174 = call float @llvm.amdgcn.interp.p2(float %p1.i173, float %j.f.i172, i32 3, i32 0, i32 %arg4) #0 + %i.i163 = extractelement <2 x i32> %arg6, i32 0 + %j.i164 = extractelement <2 x i32> %arg6, i32 1 + %i.f.i165 = bitcast i32 %i.i163 to float + %j.f.i166 = bitcast i32 %j.i164 to float + %p1.i167 = call float @llvm.amdgcn.interp.p1(float %i.f.i165, i32 0, i32 1, i32 %arg4) #0 + %p2.i168 = call float @llvm.amdgcn.interp.p2(float %p1.i167, float %j.f.i166, i32 0, i32 1, i32 %arg4) #0 + %i.i157 = extractelement <2 x i32> %arg6, i32 0 + %j.i158 = extractelement <2 x i32> %arg6, i32 1 + %i.f.i159 = bitcast i32 %i.i157 to float + %j.f.i160 = bitcast i32 %j.i158 to float + %p1.i161 = call float @llvm.amdgcn.interp.p1(float %i.f.i159, i32 1, i32 1, i32 %arg4) #0 + %p2.i162 = call float @llvm.amdgcn.interp.p2(float %p1.i161, float %j.f.i160, i32 1, i32 1, i32 %arg4) #0 + %i.i151 = extractelement <2 x i32> %arg6, i32 0 + %j.i152 = extractelement <2 x i32> %arg6, i32 1 + %i.f.i153 = bitcast i32 %i.i151 to float + %j.f.i154 = bitcast i32 %j.i152 to float + %p1.i155 = call float @llvm.amdgcn.interp.p1(float %i.f.i153, i32 2, i32 1, i32 %arg4) #0 + %p2.i156 = call float @llvm.amdgcn.interp.p2(float %p1.i155, float %j.f.i154, i32 2, i32 1, i32 %arg4) #0 + %i.i145 = extractelement <2 x i32> %arg6, i32 0 + %j.i146 = extractelement <2 x i32> %arg6, i32 1 + %i.f.i147 = bitcast i32 %i.i145 to float + %j.f.i148 = bitcast i32 %j.i146 to float + %p1.i149 = call float @llvm.amdgcn.interp.p1(float %i.f.i147, i32 3, i32 1, i32 %arg4) #0 + %p2.i150 = call float @llvm.amdgcn.interp.p2(float %p1.i149, float %j.f.i148, i32 3, i32 1, i32 %arg4) #0 + %i.i139 = extractelement <2 x i32> %arg6, i32 0 + %j.i140 = extractelement <2 x i32> %arg6, i32 1 + %i.f.i141 = bitcast i32 %i.i139 to float + %j.f.i142 = bitcast i32 %j.i140 to float + %p1.i143 = call float @llvm.amdgcn.interp.p1(float %i.f.i141, i32 0, i32 2, i32 %arg4) #0 + %p2.i144 = call float @llvm.amdgcn.interp.p2(float %p1.i143, float %j.f.i142, i32 0, i32 2, i32 %arg4) #0 + %i.i133 = extractelement <2 x i32> %arg6, i32 0 + %j.i134 = extractelement <2 x i32> %arg6, i32 1 + %i.f.i135 = bitcast i32 %i.i133 to float + %j.f.i136 = bitcast i32 %j.i134 to float + %p1.i137 = call float @llvm.amdgcn.interp.p1(float %i.f.i135, i32 1, i32 2, i32 %arg4) #0 + %p2.i138 = call float @llvm.amdgcn.interp.p2(float %p1.i137, float %j.f.i136, i32 1, i32 2, i32 %arg4) #0 + %i.i127 = extractelement <2 x i32> %arg6, i32 0 + %j.i128 = extractelement <2 x i32> %arg6, i32 1 + %i.f.i129 = bitcast i32 %i.i127 to float + %j.f.i130 = bitcast i32 %j.i128 to float + %p1.i131 = call float @llvm.amdgcn.interp.p1(float %i.f.i129, i32 2, i32 2, i32 %arg4) #0 + %p2.i132 = call float @llvm.amdgcn.interp.p2(float %p1.i131, float %j.f.i130, i32 2, i32 2, i32 %arg4) #0 + %i.i121 = extractelement <2 x i32> %arg6, i32 0 + %j.i122 = extractelement <2 x i32> %arg6, i32 1 + %i.f.i123 = bitcast i32 %i.i121 to float + %j.f.i124 = bitcast i32 %j.i122 to float + %p1.i125 = call float @llvm.amdgcn.interp.p1(float %i.f.i123, i32 3, i32 2, i32 %arg4) #0 + %p2.i126 = call float @llvm.amdgcn.interp.p2(float %p1.i125, float %j.f.i124, i32 3, i32 2, i32 %arg4) #0 + %i.i115 = extractelement <2 x i32> %arg6, i32 0 + %j.i116 = extractelement <2 x i32> %arg6, i32 1 + %i.f.i117 = bitcast i32 %i.i115 to float + %j.f.i118 = bitcast i32 %j.i116 to float + %p1.i119 = call float @llvm.amdgcn.interp.p1(float %i.f.i117, i32 0, i32 3, i32 %arg4) #0 + %p2.i120 = call float @llvm.amdgcn.interp.p2(float %p1.i119, float %j.f.i118, i32 0, i32 3, i32 %arg4) #0 + %i.i109 = extractelement <2 x i32> %arg6, i32 0 + %j.i110 = extractelement <2 x i32> %arg6, i32 1 + %i.f.i111 = bitcast i32 %i.i109 to float + %j.f.i112 = bitcast i32 %j.i110 to float + %p1.i113 = call float @llvm.amdgcn.interp.p1(float %i.f.i111, i32 1, i32 3, i32 %arg4) #0 + %p2.i114 = call float @llvm.amdgcn.interp.p2(float %p1.i113, float %j.f.i112, i32 1, i32 3, i32 %arg4) #0 + %i.i103 = extractelement <2 x i32> %arg6, i32 0 + %j.i104 = extractelement <2 x i32> %arg6, i32 1 + %i.f.i105 = bitcast i32 %i.i103 to float + %j.f.i106 = bitcast i32 %j.i104 to float + %p1.i107 = call float @llvm.amdgcn.interp.p1(float %i.f.i105, i32 2, i32 3, i32 %arg4) #0 + %p2.i108 = call float @llvm.amdgcn.interp.p2(float %p1.i107, float %j.f.i106, i32 2, i32 3, i32 %arg4) #0 + %i.i97 = extractelement <2 x i32> %arg6, i32 0 + %j.i98 = extractelement <2 x i32> %arg6, i32 1 + %i.f.i99 = bitcast i32 %i.i97 to float + %j.f.i100 = bitcast i32 %j.i98 to float + %p1.i101 = call float @llvm.amdgcn.interp.p1(float %i.f.i99, i32 3, i32 3, i32 %arg4) #0 + %p2.i102 = call float @llvm.amdgcn.interp.p2(float %p1.i101, float %j.f.i100, i32 3, i32 3, i32 %arg4) #0 + %i.i91 = extractelement <2 x i32> %arg6, i32 0 + %j.i92 = extractelement <2 x i32> %arg6, i32 1 + %i.f.i93 = bitcast i32 %i.i91 to float + %j.f.i94 = bitcast i32 %j.i92 to float + %p1.i95 = call float @llvm.amdgcn.interp.p1(float %i.f.i93, i32 0, i32 4, i32 %arg4) #0 + %p2.i96 = call float @llvm.amdgcn.interp.p2(float %p1.i95, float %j.f.i94, i32 0, i32 4, i32 %arg4) #0 + %i.i85 = extractelement <2 x i32> %arg6, i32 0 + %j.i86 = extractelement <2 x i32> %arg6, i32 1 + %i.f.i87 = bitcast i32 %i.i85 to float + %j.f.i88 = bitcast i32 %j.i86 to float + %p1.i89 = call float @llvm.amdgcn.interp.p1(float %i.f.i87, i32 1, i32 4, i32 %arg4) #0 + %p2.i90 = call float @llvm.amdgcn.interp.p2(float %p1.i89, float %j.f.i88, i32 1, i32 4, i32 %arg4) #0 + %i.i79 = extractelement <2 x i32> %arg6, i32 0 + %j.i80 = extractelement <2 x i32> %arg6, i32 1 + %i.f.i81 = bitcast i32 %i.i79 to float + %j.f.i82 = bitcast i32 %j.i80 to float + %p1.i83 = call float @llvm.amdgcn.interp.p1(float %i.f.i81, i32 2, i32 4, i32 %arg4) #0 + %p2.i84 = call float @llvm.amdgcn.interp.p2(float %p1.i83, float %j.f.i82, i32 2, i32 4, i32 %arg4) #0 + %i.i73 = extractelement <2 x i32> %arg6, i32 0 + %j.i74 = extractelement <2 x i32> %arg6, i32 1 + %i.f.i75 = bitcast i32 %i.i73 to float + %j.f.i76 = bitcast i32 %j.i74 to float + %p1.i77 = call float @llvm.amdgcn.interp.p1(float %i.f.i75, i32 3, i32 4, i32 %arg4) #0 + %p2.i78 = call float @llvm.amdgcn.interp.p2(float %p1.i77, float %j.f.i76, i32 3, i32 4, i32 %arg4) #0 + %i.i67 = extractelement <2 x i32> %arg6, i32 0 + %j.i68 = extractelement <2 x i32> %arg6, i32 1 + %i.f.i69 = bitcast i32 %i.i67 to float + %j.f.i70 = bitcast i32 %j.i68 to float + %p1.i71 = call float @llvm.amdgcn.interp.p1(float %i.f.i69, i32 0, i32 5, i32 %arg4) #0 + %p2.i72 = call float @llvm.amdgcn.interp.p2(float %p1.i71, float %j.f.i70, i32 0, i32 5, i32 %arg4) #0 + %i.i61 = extractelement <2 x i32> %arg6, i32 0 + %j.i62 = extractelement <2 x i32> %arg6, i32 1 + %i.f.i63 = bitcast i32 %i.i61 to float + %j.f.i64 = bitcast i32 %j.i62 to float + %p1.i65 = call float @llvm.amdgcn.interp.p1(float %i.f.i63, i32 1, i32 5, i32 %arg4) #0 + %p2.i66 = call float @llvm.amdgcn.interp.p2(float %p1.i65, float %j.f.i64, i32 1, i32 5, i32 %arg4) #0 + %i.i55 = extractelement <2 x i32> %arg6, i32 0 + %j.i56 = extractelement <2 x i32> %arg6, i32 1 + %i.f.i57 = bitcast i32 %i.i55 to float + %j.f.i58 = bitcast i32 %j.i56 to float + %p1.i59 = call float @llvm.amdgcn.interp.p1(float %i.f.i57, i32 2, i32 5, i32 %arg4) #0 + %p2.i60 = call float @llvm.amdgcn.interp.p2(float %p1.i59, float %j.f.i58, i32 2, i32 5, i32 %arg4) #0 + %i.i49 = extractelement <2 x i32> %arg6, i32 0 + %j.i50 = extractelement <2 x i32> %arg6, i32 1 + %i.f.i51 = bitcast i32 %i.i49 to float + %j.f.i52 = bitcast i32 %j.i50 to float + %p1.i53 = call float @llvm.amdgcn.interp.p1(float %i.f.i51, i32 3, i32 5, i32 %arg4) #0 + %p2.i54 = call float @llvm.amdgcn.interp.p2(float %p1.i53, float %j.f.i52, i32 3, i32 5, i32 %arg4) #0 + %i.i43 = extractelement <2 x i32> %arg6, i32 0 + %j.i44 = extractelement <2 x i32> %arg6, i32 1 + %i.f.i45 = bitcast i32 %i.i43 to float + %j.f.i46 = bitcast i32 %j.i44 to float + %p1.i47 = call float @llvm.amdgcn.interp.p1(float %i.f.i45, i32 0, i32 6, i32 %arg4) #0 + %p2.i48 = call float @llvm.amdgcn.interp.p2(float %p1.i47, float %j.f.i46, i32 0, i32 6, i32 %arg4) #0 + %i.i37 = extractelement <2 x i32> %arg6, i32 0 + %j.i38 = extractelement <2 x i32> %arg6, i32 1 + %i.f.i39 = bitcast i32 %i.i37 to float + %j.f.i40 = bitcast i32 %j.i38 to float + %p1.i41 = call float @llvm.amdgcn.interp.p1(float %i.f.i39, i32 1, i32 6, i32 %arg4) #0 + %p2.i42 = call float @llvm.amdgcn.interp.p2(float %p1.i41, float %j.f.i40, i32 1, i32 6, i32 %arg4) #0 + %i.i31 = extractelement <2 x i32> %arg6, i32 0 + %j.i32 = extractelement <2 x i32> %arg6, i32 1 + %i.f.i33 = bitcast i32 %i.i31 to float + %j.f.i34 = bitcast i32 %j.i32 to float + %p1.i35 = call float @llvm.amdgcn.interp.p1(float %i.f.i33, i32 2, i32 6, i32 %arg4) #0 + %p2.i36 = call float @llvm.amdgcn.interp.p2(float %p1.i35, float %j.f.i34, i32 2, i32 6, i32 %arg4) #0 + %i.i25 = extractelement <2 x i32> %arg6, i32 0 + %j.i26 = extractelement <2 x i32> %arg6, i32 1 + %i.f.i27 = bitcast i32 %i.i25 to float + %j.f.i28 = bitcast i32 %j.i26 to float + %p1.i29 = call float @llvm.amdgcn.interp.p1(float %i.f.i27, i32 3, i32 6, i32 %arg4) #0 + %p2.i30 = call float @llvm.amdgcn.interp.p2(float %p1.i29, float %j.f.i28, i32 3, i32 6, i32 %arg4) #0 + %i.i19 = extractelement <2 x i32> %arg6, i32 0 + %j.i20 = extractelement <2 x i32> %arg6, i32 1 + %i.f.i21 = bitcast i32 %i.i19 to float + %j.f.i22 = bitcast i32 %j.i20 to float + %p1.i23 = call float @llvm.amdgcn.interp.p1(float %i.f.i21, i32 0, i32 7, i32 %arg4) #0 + %p2.i24 = call float @llvm.amdgcn.interp.p2(float %p1.i23, float %j.f.i22, i32 0, i32 7, i32 %arg4) #0 + %i.i13 = extractelement <2 x i32> %arg6, i32 0 + %j.i14 = extractelement <2 x i32> %arg6, i32 1 + %i.f.i15 = bitcast i32 %i.i13 to float + %j.f.i16 = bitcast i32 %j.i14 to float + %p1.i17 = call float @llvm.amdgcn.interp.p1(float %i.f.i15, i32 1, i32 7, i32 %arg4) #0 + %p2.i18 = call float @llvm.amdgcn.interp.p2(float %p1.i17, float %j.f.i16, i32 1, i32 7, i32 %arg4) #0 + %i.i7 = extractelement <2 x i32> %arg6, i32 0 + %j.i8 = extractelement <2 x i32> %arg6, i32 1 + %i.f.i9 = bitcast i32 %i.i7 to float + %j.f.i10 = bitcast i32 %j.i8 to float + %p1.i11 = call float @llvm.amdgcn.interp.p1(float %i.f.i9, i32 2, i32 7, i32 %arg4) #0 + %p2.i12 = call float @llvm.amdgcn.interp.p2(float %p1.i11, float %j.f.i10, i32 2, i32 7, i32 %arg4) #0 + %i.i1 = extractelement <2 x i32> %arg6, i32 0 + %j.i2 = extractelement <2 x i32> %arg6, i32 1 + %i.f.i3 = bitcast i32 %i.i1 to float + %j.f.i4 = bitcast i32 %j.i2 to float + %p1.i5 = call float @llvm.amdgcn.interp.p1(float %i.f.i3, i32 3, i32 7, i32 %arg4) #0 + %p2.i6 = call float @llvm.amdgcn.interp.p2(float %p1.i5, float %j.f.i4, i32 3, i32 7, i32 %arg4) #0 %tmp195 = fmul float %arg14, %tmp123 %tmp196 = fadd float %tmp195, %tmp124 - %tmp197 = call float @llvm.AMDGPU.clamp.f32(float %tmp162, float 0.000000e+00, float 1.000000e+00) - %tmp198 = call float @llvm.AMDGPU.clamp.f32(float 0.000000e+00, float 0.000000e+00, float 1.000000e+00) - %tmp199 = call float @llvm.AMDGPU.clamp.f32(float 0.000000e+00, float 0.000000e+00, float 1.000000e+00) - %tmp200 = call float @llvm.AMDGPU.clamp.f32(float 1.000000e+00, float 0.000000e+00, float 1.000000e+00) - %tmp201 = bitcast float %tmp197 to i32 + %max.0.i = call float @llvm.maxnum.f32(float %tmp162, float 0.000000e+00) + %clamp.i = call float @llvm.minnum.f32(float %max.0.i, float 1.000000e+00) + %tmp201 = bitcast float %clamp.i to i32 %tmp202 = icmp ne i32 %tmp201, 0 %. = select i1 %tmp202, float -1.000000e+00, float 1.000000e+00 - %tmp203 = fsub float -0.000000e+00, %tmp163 + %tmp203 = fsub float -0.000000e+00, %p2.i %tmp204 = fadd float %tmp43, %tmp203 - %tmp205 = fsub float -0.000000e+00, %tmp164 + %tmp205 = fsub float -0.000000e+00, %p2.i186 %tmp206 = fadd float %tmp44, %tmp205 - %tmp207 = fsub float -0.000000e+00, %tmp165 + %tmp207 = fsub float -0.000000e+00, %p2.i180 %tmp208 = fadd float %tmp45, %tmp207 %tmp209 = fmul float %tmp204, %tmp204 %tmp210 = fmul float %tmp206, %tmp206 @@ -876,12 +1140,13 @@ main_body: %tmp218 = fmul float %., %tmp53 %tmp219 = fmul float %arg13, %tmp46 %tmp220 = fmul float %tmp196, %tmp47 - %tmp221 = bitcast float %tmp173 to i32 - %tmp222 = bitcast float %tmp174 to i32 + %tmp221 = bitcast float %p2.i132 to i32 + %tmp222 = bitcast float %p2.i126 to i32 %tmp223 = insertelement <2 x i32> undef, i32 %tmp221, i32 0 %tmp224 = insertelement <2 x i32> %tmp223, i32 %tmp222, i32 1 %tmp132.bc = bitcast <16 x i8> %tmp132 to <4 x i32> - %tmp225 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %tmp224, <8 x i32> %tmp130, <4 x i32> %tmp132.bc, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) + %tmp224.bc = bitcast <2 x i32> %tmp224 to <2 x float> + %tmp225 = call <4 x float> @llvm.amdgcn.image.sample.v4f32.v2f32.v8i32(<2 x float> %tmp224.bc, <8 x i32> %tmp130, <4 x i32> %tmp132.bc, i32 15, i1 false, i1 false, i1 false, i1 false, i1 false) %tmp226 = extractelement <4 x float> %tmp225, i32 0 %tmp227 = extractelement <4 x float> %tmp225, i32 1 %tmp228 = extractelement <4 x float> %tmp225, i32 2 @@ -895,34 +1160,36 @@ main_body: %result.i44 = fadd float %tmp231, %one.sub.a.i43 %one.sub.a.i41 = fsub float 1.000000e+00, %tmp26 %result.i42 = fadd float %tmp232, %one.sub.a.i41 - %tmp233 = fmul float %tmp215, %tmp183 - %tmp234 = fmul float %tmp216, %tmp184 + %tmp233 = fmul float %tmp215, %p2.i72 + %tmp234 = fmul float %tmp216, %p2.i66 %tmp235 = fadd float %tmp234, %tmp233 - %tmp236 = fmul float %tmp217, %tmp185 + %tmp236 = fmul float %tmp217, %p2.i60 %tmp237 = fadd float %tmp235, %tmp236 - %tmp238 = fmul float %tmp215, %tmp186 - %tmp239 = fmul float %tmp216, %tmp187 + %tmp238 = fmul float %tmp215, %p2.i54 + %tmp239 = fmul float %tmp216, %p2.i48 %tmp240 = fadd float %tmp239, %tmp238 - %tmp241 = fmul float %tmp217, %tmp188 + %tmp241 = fmul float %tmp217, %p2.i42 %tmp242 = fadd float %tmp240, %tmp241 - %tmp243 = fmul float %tmp215, %tmp189 - %tmp244 = fmul float %tmp216, %tmp190 + %tmp243 = fmul float %tmp215, %p2.i36 + %tmp244 = fmul float %tmp216, %p2.i30 %tmp245 = fadd float %tmp244, %tmp243 - %tmp246 = fmul float %tmp217, %tmp191 + %tmp246 = fmul float %tmp217, %p2.i24 %tmp247 = fadd float %tmp245, %tmp246 - %tmp248 = call float @llvm.AMDGPU.clamp.f32(float %tmp247, float 0.000000e+00, float 1.000000e+00) + %max.0.i19 = call float @llvm.maxnum.f32(float %tmp247, float 0.000000e+00) + %clamp.i20 = call float @llvm.minnum.f32(float %max.0.i19, float 1.000000e+00) %tmp249 = fmul float %tmp213, 0x3F5A36E2E0000000 - %tmp250 = call float @llvm.AMDGPU.clamp.f32(float %tmp249, float 0.000000e+00, float 1.000000e+00) - %tmp251 = fsub float -0.000000e+00, %tmp250 + %max.0.i17 = call float @llvm.maxnum.f32(float %tmp249, float 0.000000e+00) + %clamp.i18 = call float @llvm.minnum.f32(float %max.0.i17, float 1.000000e+00) + %tmp251 = fsub float -0.000000e+00, %clamp.i18 %tmp252 = fadd float 1.000000e+00, %tmp251 - %tmp253 = call float @llvm.pow.f32(float %tmp248, float 2.500000e-01) + %tmp253 = call float @llvm.pow.f32(float %clamp.i20, float 2.500000e-01) %tmp254 = fmul float %tmp38, %tmp253 %tmp255 = fmul float %tmp237, %tmp254 %tmp256 = fmul float %tmp242, %tmp254 %tmp257 = fmul float %tmp255, %tmp229 %tmp258 = fmul float %tmp256, %tmp229 - %tmp259 = fadd float %tmp248, 0x3EE4F8B580000000 - %tmp260 = fsub float -0.000000e+00, %tmp248 + %tmp259 = fadd float %clamp.i20, 0x3EE4F8B580000000 + %tmp260 = fsub float -0.000000e+00, %clamp.i20 %tmp261 = fadd float 1.000000e+00, %tmp260 %tmp262 = fmul float 1.200000e+01, %tmp261 %tmp263 = fadd float %tmp262, 4.000000e+00 @@ -942,8 +1209,8 @@ main_body: LOOP: ; preds = %LOOP, %main_body %temp144.0 = phi float [ 1.000000e+00, %main_body ], [ %tmp288, %LOOP ] - %temp168.0 = phi float [ %tmp175, %main_body ], [ %tmp284, %LOOP ] - %temp169.0 = phi float [ %tmp176, %main_body ], [ %tmp285, %LOOP ] + %temp168.0 = phi float [ %p2.i120, %main_body ], [ %tmp284, %LOOP ] + %temp169.0 = phi float [ %p2.i114, %main_body ], [ %tmp285, %LOOP ] %temp170.0 = phi float [ %tmp252, %main_body ], [ %tmp286, %LOOP ] %tmp276 = bitcast float %temp168.0 to i32 %tmp277 = bitcast float %temp169.0 to i32 @@ -952,7 +1219,8 @@ LOOP: ; preds = %LOOP, %main_body %tmp280 = insertelement <4 x i32> %tmp279, i32 0, i32 2 %tmp281 = insertelement <4 x i32> %tmp280, i32 undef, i32 3 %tmp148.bc = bitcast <16 x i8> %tmp148 to <4 x i32> - %tmp282 = call <4 x float> @llvm.SI.image.sample.l.v4i32(<4 x i32> %tmp281, <8 x i32> %tmp146, <4 x i32> %tmp148.bc, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) + %tmp281.bc = bitcast <4 x i32> %tmp281 to <4 x float> + %tmp282 = call <4 x float> @llvm.amdgcn.image.sample.l.v4f32.v4f32.v8i32(<4 x float> %tmp281.bc, <8 x i32> %tmp146, <4 x i32> %tmp148.bc, i32 15, i1 false, i1 false, i1 false, i1 false, i1 false) %tmp283 = extractelement <4 x float> %tmp282, i32 3 %tmp284 = fadd float %temp168.0, %tmp273 %tmp285 = fadd float %temp169.0, %tmp274 @@ -979,12 +1247,12 @@ IF189: ; preds = %LOOP %tmp303 = fadd float %tmp302, %tmp284 %tmp304 = fmul float %tmp301, %tmp274 %tmp305 = fadd float %tmp304, %tmp285 - %tmp306 = fsub float -0.000000e+00, %tmp175 + %tmp306 = fsub float -0.000000e+00, %p2.i120 %tmp307 = fadd float %tmp303, %tmp306 - %tmp308 = fsub float -0.000000e+00, %tmp176 + %tmp308 = fsub float -0.000000e+00, %p2.i114 %tmp309 = fadd float %tmp305, %tmp308 - %tmp310 = fadd float %tmp175, %tmp307 - %tmp311 = fadd float %tmp176, %tmp309 + %tmp310 = fadd float %p2.i120, %tmp307 + %tmp311 = fadd float %p2.i114, %tmp309 %tmp312 = fmul float %tmp307, %tmp66 %tmp313 = fmul float %tmp309, %tmp67 %tmp314 = fmul float %tmp312, %tmp54 @@ -993,8 +1261,8 @@ IF189: ; preds = %LOOP %tmp317 = fadd float %tmp316, %tmp314 %tmp318 = fmul float %tmp313, %tmp57 %tmp319 = fadd float %tmp318, %tmp315 - %tmp320 = fadd float %tmp177, %tmp317 - %tmp321 = fadd float %tmp178, %tmp319 + %tmp320 = fadd float %p2.i108, %tmp317 + %tmp321 = fadd float %p2.i102, %tmp319 %tmp322 = fmul float %tmp312, %tmp58 %tmp323 = fmul float %tmp312, %tmp59 %tmp324 = fmul float %tmp312, %tmp60 @@ -1007,28 +1275,29 @@ IF189: ; preds = %LOOP %tmp331 = fadd float %tmp330, %tmp324 %tmp332 = fmul float %tmp313, %tmp65 %tmp333 = fadd float %tmp332, %tmp325 - %tmp334 = fadd float %tmp167, %tmp327 - %tmp335 = fadd float %tmp168, %tmp329 - %tmp336 = fadd float %tmp169, %tmp331 - %tmp337 = fadd float %tmp170, %tmp333 + %tmp334 = fadd float %p2.i168, %tmp327 + %tmp335 = fadd float %p2.i162, %tmp329 + %tmp336 = fadd float %p2.i156, %tmp331 + %tmp337 = fadd float %p2.i150, %tmp333 %tmp338 = bitcast float %tmp334 to i32 %tmp339 = bitcast float %tmp335 to i32 %tmp340 = insertelement <2 x i32> undef, i32 %tmp338, i32 0 %tmp341 = insertelement <2 x i32> %tmp340, i32 %tmp339, i32 1 %tmp136.bc = bitcast <16 x i8> %tmp136 to <4 x i32> - %tmp342 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %tmp341, <8 x i32> %tmp134, <4 x i32> %tmp136.bc, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) - %tmp343 = extractelement <4 x float> %tmp342, i32 0 - %tmp344 = extractelement <4 x float> %tmp342, i32 1 - %tmp345 = extractelement <4 x float> %tmp342, i32 2 - %tmp346 = extractelement <4 x float> %tmp342, i32 3 + %a.bc.i = bitcast <2 x i32> %tmp341 to <2 x float> + %tmp0 = call <4 x float> @llvm.amdgcn.image.sample.v4f32.v2f32.v8i32(<2 x float> %a.bc.i, <8 x i32> %tmp134, <4 x i32> %tmp136.bc, i32 15, i1 false, i1 false, i1 false, i1 false, i1 false) + %tmp343 = extractelement <4 x float> %tmp0, i32 0 + %tmp344 = extractelement <4 x float> %tmp0, i32 1 + %tmp345 = extractelement <4 x float> %tmp0, i32 2 + %tmp346 = extractelement <4 x float> %tmp0, i32 3 %tmp347 = fmul float %tmp343, %tmp22 %tmp348 = fmul float %tmp344, %tmp23 %tmp349 = fmul float %tmp345, %tmp24 %tmp350 = fmul float %tmp346, %tmp25 - %tmp351 = fmul float %tmp347, %tmp179 - %tmp352 = fmul float %tmp348, %tmp180 - %tmp353 = fmul float %tmp349, %tmp181 - %tmp354 = fmul float %tmp350, %tmp182 + %tmp351 = fmul float %tmp347, %p2.i96 + %tmp352 = fmul float %tmp348, %p2.i90 + %tmp353 = fmul float %tmp349, %p2.i84 + %tmp354 = fmul float %tmp350, %p2.i78 %tmp355 = fsub float -0.000000e+00, %tmp346 %tmp356 = fadd float 1.000000e+00, %tmp355 %tmp357 = fmul float %tmp356, %tmp48 @@ -1049,8 +1318,9 @@ IF189: ; preds = %LOOP %tmp360 = insertelement <2 x i32> undef, i32 %tmp358, i32 0 %tmp361 = insertelement <2 x i32> %tmp360, i32 %tmp359, i32 1 %tmp152.bc = bitcast <16 x i8> %tmp152 to <4 x i32> - %tmp362 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %tmp361, <8 x i32> %tmp150, <4 x i32> %tmp152.bc, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) - %tmp363 = extractelement <4 x float> %tmp362, i32 2 + %a.bc.i3 = bitcast <2 x i32> %tmp361 to <2 x float> + %tmp1 = call <4 x float> @llvm.amdgcn.image.sample.v4f32.v2f32.v8i32(<2 x float> %a.bc.i3, <8 x i32> %tmp150, <4 x i32> %tmp152.bc, i32 15, i1 false, i1 false, i1 false, i1 false, i1 false) + %tmp363 = extractelement <4 x float> %tmp1, i32 2 %tmp364 = fmul float %result.i40, %result.i %tmp365 = fmul float %result.i36, %result.i44 %tmp366 = fmul float %result.i32, %result.i42 @@ -1060,11 +1330,12 @@ IF189: ; preds = %LOOP %tmp370 = insertelement <2 x i32> undef, i32 %tmp368, i32 0 %tmp371 = insertelement <2 x i32> %tmp370, i32 %tmp369, i32 1 %tmp140.bc = bitcast <16 x i8> %tmp140 to <4 x i32> - %tmp372 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %tmp371, <8 x i32> %tmp138, <4 x i32> %tmp140.bc, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) - %tmp373 = extractelement <4 x float> %tmp372, i32 0 - %tmp374 = extractelement <4 x float> %tmp372, i32 1 - %tmp375 = extractelement <4 x float> %tmp372, i32 2 - %tmp376 = extractelement <4 x float> %tmp372, i32 3 + %a.bc.i2 = bitcast <2 x i32> %tmp371 to <2 x float> + %tmp2 = call <4 x float> @llvm.amdgcn.image.sample.v4f32.v2f32.v8i32(<2 x float> %a.bc.i2, <8 x i32> %tmp138, <4 x i32> %tmp140.bc, i32 15, i1 false, i1 false, i1 false, i1 false, i1 false) + %tmp373 = extractelement <4 x float> %tmp2, i32 0 + %tmp374 = extractelement <4 x float> %tmp2, i32 1 + %tmp375 = extractelement <4 x float> %tmp2, i32 2 + %tmp376 = extractelement <4 x float> %tmp2, i32 3 %tmp377 = fcmp olt float 0.000000e+00, %tmp375 %tmp378 = sext i1 %tmp377 to i32 %tmp379 = bitcast i32 %tmp378 to float @@ -1077,11 +1348,12 @@ IF189: ; preds = %LOOP %tmp384 = insertelement <2 x i32> undef, i32 %tmp382, i32 0 %tmp385 = insertelement <2 x i32> %tmp384, i32 %tmp383, i32 1 %tmp144.bc = bitcast <16 x i8> %tmp144 to <4 x i32> - %tmp386 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %tmp385, <8 x i32> %tmp142, <4 x i32> %tmp144.bc, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) - %tmp387 = extractelement <4 x float> %tmp386, i32 0 - %tmp388 = extractelement <4 x float> %tmp386, i32 1 - %tmp389 = extractelement <4 x float> %tmp386, i32 2 - %tmp390 = extractelement <4 x float> %tmp386, i32 3 + %a.bc.i1 = bitcast <2 x i32> %tmp385 to <2 x float> + %tmp3 = call <4 x float> @llvm.amdgcn.image.sample.v4f32.v2f32.v8i32(<2 x float> %a.bc.i1, <8 x i32> %tmp142, <4 x i32> %tmp144.bc, i32 15, i1 false, i1 false, i1 false, i1 false, i1 false) + %tmp387 = extractelement <4 x float> %tmp3, i32 0 + %tmp388 = extractelement <4 x float> %tmp3, i32 1 + %tmp389 = extractelement <4 x float> %tmp3, i32 2 + %tmp390 = extractelement <4 x float> %tmp3, i32 3 %tmp391 = fcmp olt float 0.000000e+00, %tmp389 %tmp392 = sext i1 %tmp391 to i32 %tmp393 = bitcast i32 %tmp392 to float @@ -1107,8 +1379,8 @@ IF189: ; preds = %LOOP %tmp411 = fmul float %tmp410, %tmp35 %tmp412 = fmul float %tmp409, %tmp363 %tmp413 = fmul float %tmp411, %tmp363 - %tmp414 = call float @fabs(float %tmp405) - %tmp415 = call float @fabs(float %tmp407) + %tmp414 = call float @llvm.fabs.f32(float %tmp405) + %tmp415 = call float @llvm.fabs.f32(float %tmp407) %tmp416 = fsub float -0.000000e+00, %tmp414 %tmp417 = fadd float 1.000000e+00, %tmp416 %tmp418 = fsub float -0.000000e+00, %tmp415 @@ -1122,26 +1394,27 @@ IF189: ; preds = %LOOP %tmp426 = fadd float %tmp424, %tmp425 %tmp427 = fsub float -0.000000e+00, %tmp426 %tmp428 = fadd float 0x3FF00068E0000000, %tmp427 - %tmp429 = call float @llvm.AMDGPU.clamp.f32(float %tmp428, float 0.000000e+00, float 1.000000e+00) - %tmp430 = call float @llvm.amdgcn.rsq.f32(float %tmp429) - %tmp431 = fmul float %tmp430, %tmp429 - %tmp432 = fsub float -0.000000e+00, %tmp429 + %max.0.i15 = call float @llvm.maxnum.f32(float %tmp428, float 0.000000e+00) + %clamp.i16 = call float @llvm.minnum.f32(float %max.0.i15, float 1.000000e+00) + %tmp430 = call float @llvm.amdgcn.rsq.f32(float %clamp.i16) + %tmp431 = fmul float %tmp430, %clamp.i16 + %tmp432 = fsub float -0.000000e+00, %clamp.i16 %cmp = fcmp ogt float 0.000000e+00, %tmp432 %tmp433 = select i1 %cmp, float %tmp431, float 0.000000e+00 - %tmp434 = fmul float %tmp183, %tmp421 - %tmp435 = fmul float %tmp184, %tmp421 - %tmp436 = fmul float %tmp185, %tmp421 - %tmp437 = fmul float %tmp186, %tmp423 + %tmp434 = fmul float %p2.i72, %tmp421 + %tmp435 = fmul float %p2.i66, %tmp421 + %tmp436 = fmul float %p2.i60, %tmp421 + %tmp437 = fmul float %p2.i54, %tmp423 %tmp438 = fadd float %tmp437, %tmp434 - %tmp439 = fmul float %tmp187, %tmp423 + %tmp439 = fmul float %p2.i48, %tmp423 %tmp440 = fadd float %tmp439, %tmp435 - %tmp441 = fmul float %tmp188, %tmp423 + %tmp441 = fmul float %p2.i42, %tmp423 %tmp442 = fadd float %tmp441, %tmp436 - %tmp443 = fmul float %tmp189, %tmp433 + %tmp443 = fmul float %p2.i36, %tmp433 %tmp444 = fadd float %tmp443, %tmp438 - %tmp445 = fmul float %tmp190, %tmp433 + %tmp445 = fmul float %p2.i30, %tmp433 %tmp446 = fadd float %tmp445, %tmp440 - %tmp447 = fmul float %tmp191, %tmp433 + %tmp447 = fmul float %p2.i24, %tmp433 %tmp448 = fadd float %tmp447, %tmp442 %tmp449 = fmul float %tmp444, %tmp444 %tmp450 = fmul float %tmp446, %tmp446 @@ -1174,7 +1447,8 @@ ENDIF197: ; preds = %IF198, %IF189 %tmp468 = insertelement <2 x i32> undef, i32 %tmp466, i32 0 %tmp469 = insertelement <2 x i32> %tmp468, i32 %tmp467, i32 1 %tmp160.bc = bitcast <16 x i8> %tmp160 to <4 x i32> - %tmp470 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %tmp469, <8 x i32> %tmp158, <4 x i32> %tmp160.bc, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) + %tmp469.bc = bitcast <2 x i32> %tmp469 to <2 x float> + %tmp470 = call <4 x float> @llvm.amdgcn.image.sample.v4f32.v2f32.v8i32(<2 x float> %tmp469.bc, <8 x i32> %tmp158, <4 x i32> %tmp160.bc, i32 15, i1 false, i1 false, i1 false, i1 false, i1 false) %tmp471 = extractelement <4 x float> %tmp470, i32 0 %tmp472 = extractelement <4 x float> %tmp470, i32 1 %tmp473 = extractelement <4 x float> %tmp470, i32 2 @@ -1187,12 +1461,13 @@ ENDIF197: ; preds = %IF198, %IF189 %tmp480 = fadd float %tmp479, %tmp40 %tmp481 = fmul float %tmp474, %tmp41 %tmp482 = fadd float %tmp481, %tmp42 - %tmp483 = bitcast float %tmp171 to i32 - %tmp484 = bitcast float %tmp172 to i32 + %tmp483 = bitcast float %p2.i144 to i32 + %tmp484 = bitcast float %p2.i138 to i32 %tmp485 = insertelement <2 x i32> undef, i32 %tmp483, i32 0 %tmp486 = insertelement <2 x i32> %tmp485, i32 %tmp484, i32 1 %tmp156.bc = bitcast <16 x i8> %tmp156 to <4 x i32> - %tmp487 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %tmp486, <8 x i32> %tmp154, <4 x i32> %tmp156.bc, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) + %tmp486.bc = bitcast <2 x i32> %tmp486 to <2 x float> + %tmp487 = call <4 x float> @llvm.amdgcn.image.sample.v4f32.v2f32.v8i32(<2 x float> %tmp486.bc, <8 x i32> %tmp154, <4 x i32> %tmp156.bc, i32 15, i1 false, i1 false, i1 false, i1 false, i1 false) %tmp488 = extractelement <4 x float> %tmp487, i32 0 %tmp489 = extractelement <4 x float> %tmp487, i32 1 %tmp490 = extractelement <4 x float> %tmp487, i32 2 @@ -1204,11 +1479,11 @@ ENDIF197: ; preds = %IF198, %IF189 %tmp496 = fmul float %tmp489, %tmp494 %tmp497 = fmul float %tmp490, %tmp494 %tmp498 = fmul float %tmp27, %tmp495 - %tmp499 = fadd float %tmp498, %tmp192 + %tmp499 = fadd float %tmp498, %p2.i18 %tmp500 = fmul float %tmp28, %tmp496 - %tmp501 = fadd float %tmp500, %tmp193 + %tmp501 = fadd float %tmp500, %p2.i12 %tmp502 = fmul float %tmp29, %tmp497 - %tmp503 = fadd float %tmp502, %tmp194 + %tmp503 = fadd float %tmp502, %p2.i6 %tmp504 = fmul float %tmp499, %tmp482 %tmp505 = fmul float %tmp501, %tmp482 %tmp506 = fmul float %tmp503, %tmp482 @@ -1242,18 +1517,19 @@ ENDIF197: ; preds = %IF198, %IF189 %tmp534 = fadd float %tmp533, %tmp532 %tmp535 = fmul float %temp14.0, %tmp531 %tmp536 = fadd float %tmp534, %tmp535 - %tmp537 = call float @llvm.AMDGPU.clamp.f32(float %tmp536, float 0.000000e+00, float 1.000000e+00) - %tmp538 = fmul float %tmp364, %tmp537 - %tmp539 = fmul float %tmp365, %tmp537 - %tmp540 = fmul float %tmp366, %tmp537 + %max.0.i13 = call float @llvm.maxnum.f32(float %tmp536, float 0.000000e+00) + %clamp.i14 = call float @llvm.minnum.f32(float %max.0.i13, float 1.000000e+00) + %tmp538 = fmul float %tmp364, %clamp.i14 + %tmp539 = fmul float %tmp365, %clamp.i14 + %tmp540 = fmul float %tmp366, %clamp.i14 %tmp541 = fmul float %tmp538, %tmp68 %tmp542 = fmul float %tmp539, %tmp69 %tmp543 = fmul float %tmp540, %tmp70 - %tmp544 = fsub float -0.000000e+00, %tmp163 + %tmp544 = fsub float -0.000000e+00, %p2.i %tmp545 = fadd float %tmp96, %tmp544 - %tmp546 = fsub float -0.000000e+00, %tmp164 + %tmp546 = fsub float -0.000000e+00, %p2.i186 %tmp547 = fadd float %tmp97, %tmp546 - %tmp548 = fsub float -0.000000e+00, %tmp165 + %tmp548 = fsub float -0.000000e+00, %p2.i180 %tmp549 = fadd float %tmp98, %tmp548 %tmp550 = fmul float %tmp545, %tmp545 %tmp551 = fmul float %tmp547, %tmp547 @@ -1339,31 +1615,31 @@ ENDIF209: ; preds = %ELSE214, %ELSE211, %temp69.0 = phi float [ %tmp112, %ENDIF200 ], [ %.231, %ELSE214 ], [ %tmp108, %ELSE211 ] %temp70.0 = phi float [ %tmp113, %ENDIF200 ], [ %.232, %ELSE214 ], [ %tmp109, %ELSE211 ] %temp71.0 = phi float [ %tmp114, %ENDIF200 ], [ %.233, %ELSE214 ], [ %tmp110, %ELSE211 ] - %tmp602 = fmul float %tmp163, %tmp84 - %tmp603 = fmul float %tmp164, %tmp85 + %tmp602 = fmul float %p2.i, %tmp84 + %tmp603 = fmul float %p2.i186, %tmp85 %tmp604 = fadd float %tmp602, %tmp603 - %tmp605 = fmul float %tmp165, %tmp86 + %tmp605 = fmul float %p2.i180, %tmp86 %tmp606 = fadd float %tmp604, %tmp605 - %tmp607 = fmul float %tmp166, %tmp87 + %tmp607 = fmul float %p2.i174, %tmp87 %tmp608 = fadd float %tmp606, %tmp607 - %tmp609 = fmul float %tmp163, %tmp88 - %tmp610 = fmul float %tmp164, %tmp89 + %tmp609 = fmul float %p2.i, %tmp88 + %tmp610 = fmul float %p2.i186, %tmp89 %tmp611 = fadd float %tmp609, %tmp610 - %tmp612 = fmul float %tmp165, %tmp90 + %tmp612 = fmul float %p2.i180, %tmp90 %tmp613 = fadd float %tmp611, %tmp612 - %tmp614 = fmul float %tmp166, %tmp91 + %tmp614 = fmul float %p2.i174, %tmp91 %tmp615 = fadd float %tmp613, %tmp614 - %tmp616 = fmul float %tmp163, %tmp92 - %tmp617 = fmul float %tmp164, %tmp93 + %tmp616 = fmul float %p2.i, %tmp92 + %tmp617 = fmul float %p2.i186, %tmp93 %tmp618 = fadd float %tmp616, %tmp617 - %tmp619 = fmul float %tmp165, %tmp94 + %tmp619 = fmul float %p2.i180, %tmp94 %tmp620 = fadd float %tmp618, %tmp619 - %tmp621 = fmul float %tmp166, %tmp95 + %tmp621 = fmul float %p2.i174, %tmp95 %tmp622 = fadd float %tmp620, %tmp621 %tmp623 = fsub float -0.000000e+00, %tmp77 %tmp624 = fadd float 1.000000e+00, %tmp623 - %tmp625 = call float @fabs(float %tmp608) - %tmp626 = call float @fabs(float %tmp615) + %tmp625 = call float @llvm.fabs.f32(float %tmp608) + %tmp626 = call float @llvm.fabs.f32(float %tmp615) %tmp627 = fcmp oge float %tmp624, %tmp625 %tmp628 = sext i1 %tmp627 to i32 %tmp629 = bitcast i32 %tmp628 to float @@ -1389,7 +1665,8 @@ ENDIF209: ; preds = %ELSE214, %ELSE211, %tmp649 = fadd float %temp80.0, -1.000000e+00 %tmp650 = fmul float %tmp649, %tmp76 %tmp651 = fadd float %tmp650, 1.000000e+00 - %tmp652 = call float @llvm.AMDGPU.clamp.f32(float %tmp651, float 0.000000e+00, float 1.000000e+00) + %max.0.i11 = call float @llvm.maxnum.f32(float %tmp651, float 0.000000e+00) + %clamp.i12 = call float @llvm.minnum.f32(float %max.0.i11, float 1.000000e+00) %tmp653 = bitcast float %tmp642 to i32 %tmp654 = bitcast float %tmp644 to i32 %tmp655 = bitcast float 0.000000e+00 to i32 @@ -1398,7 +1675,8 @@ ENDIF209: ; preds = %ELSE214, %ELSE211, %tmp658 = insertelement <4 x i32> %tmp657, i32 %tmp655, i32 2 %tmp659 = insertelement <4 x i32> %tmp658, i32 undef, i32 3 %tmp128.bc = bitcast <16 x i8> %tmp128 to <4 x i32> - %tmp660 = call <4 x float> @llvm.SI.image.sample.l.v4i32(<4 x i32> %tmp659, <8 x i32> %tmp126, <4 x i32> %tmp128.bc, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) + %tmp659.bc = bitcast <4 x i32> %tmp659 to <4 x float> + %tmp660 = call <4 x float> @llvm.amdgcn.image.sample.l.v4f32.v4f32.v8i32(<4 x float> %tmp659.bc, <8 x i32> %tmp126, <4 x i32> %tmp128.bc, i32 15, i1 false, i1 false, i1 false, i1 false, i1 false) %tmp661 = extractelement <4 x float> %tmp660, i32 0 %tmp662 = extractelement <4 x float> %tmp660, i32 1 %tmp663 = bitcast float %tmp646 to i32 @@ -1408,7 +1686,8 @@ ENDIF209: ; preds = %ELSE214, %ELSE211, %tmp667 = insertelement <4 x i32> %tmp666, i32 %tmp664, i32 1 %tmp668 = insertelement <4 x i32> %tmp667, i32 %tmp665, i32 2 %tmp669 = insertelement <4 x i32> %tmp668, i32 undef, i32 3 - %tmp670 = call <4 x float> @llvm.SI.image.sample.l.v4i32(<4 x i32> %tmp669, <8 x i32> %tmp126, <4 x i32> %tmp128.bc, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) + %tmp669.bc = bitcast <4 x i32> %tmp669 to <4 x float> + %tmp670 = call <4 x float> @llvm.amdgcn.image.sample.l.v4f32.v4f32.v8i32(<4 x float> %tmp669.bc, <8 x i32> %tmp126, <4 x i32> %tmp128.bc, i32 15, i1 false, i1 false, i1 false, i1 false, i1 false) %tmp671 = extractelement <4 x float> %tmp670, i32 0 %tmp672 = extractelement <4 x float> %tmp670, i32 1 %tmp673 = fsub float -0.000000e+00, %tmp662 @@ -1425,11 +1704,13 @@ ENDIF209: ; preds = %ELSE214, %ELSE211, %tmp684 = fadd float %tmp683, %temp89.0 %tmp685 = fmul float %tmp640, %temp90.0 %tmp686 = fadd float %tmp685, %temp91.0 - %tmp687 = call float @llvm.AMDGPU.clamp.f32(float %tmp684, float 0.000000e+00, float 1.000000e+00) - %tmp688 = call float @llvm.AMDGPU.clamp.f32(float %tmp686, float 0.000000e+00, float 1.000000e+00) - %tmp689 = fsub float -0.000000e+00, %tmp687 + %max.0.i9 = call float @llvm.maxnum.f32(float %tmp684, float 0.000000e+00) + %clamp.i10 = call float @llvm.minnum.f32(float %max.0.i9, float 1.000000e+00) + %max.0.i7 = call float @llvm.maxnum.f32(float %tmp686, float 0.000000e+00) + %clamp.i8 = call float @llvm.minnum.f32(float %max.0.i7, float 1.000000e+00) + %tmp689 = fsub float -0.000000e+00, %clamp.i10 %tmp690 = fadd float %tmp661, %tmp689 - %tmp691 = fsub float -0.000000e+00, %tmp688 + %tmp691 = fsub float -0.000000e+00, %clamp.i8 %tmp692 = fadd float %tmp671, %tmp691 %tmp693 = fmul float %tmp661, %tmp661 %tmp694 = fmul float %tmp671, %tmp671 @@ -1461,16 +1742,17 @@ ENDIF209: ; preds = %ELSE214, %ELSE211, %tmp719 = bitcast float %tmp718 to i32 %tmp720 = icmp ne i32 %tmp719, 0 %temp28.0 = select i1 %tmp720, float 1.000000e+00, float %tmp710 - %one.sub.a.i25 = fsub float 1.000000e+00, %tmp652 + %one.sub.a.i25 = fsub float 1.000000e+00, %clamp.i12 %one.sub.ac.i26 = fmul float %one.sub.a.i25, %.229 %mul.i27 = fmul float %temp28.0, %.229 %result.i28 = fadd float %mul.i27, %one.sub.ac.i26 %tmp721 = call float @llvm.pow.f32(float %result.i28, float %tmp75) %tmp722 = fmul float %tmp721, %tmp78 %tmp723 = fadd float %tmp722, %tmp79 - %tmp724 = call float @llvm.AMDGPU.clamp.f32(float %tmp723, float 0.000000e+00, float 1.000000e+00) - %tmp725 = fmul float %tmp724, %tmp724 - %tmp726 = fmul float 2.000000e+00, %tmp724 + %max.0.i5 = call float @llvm.maxnum.f32(float %tmp723, float 0.000000e+00) + %clamp.i6 = call float @llvm.minnum.f32(float %max.0.i5, float 1.000000e+00) + %tmp725 = fmul float %clamp.i6, %clamp.i6 + %tmp726 = fmul float 2.000000e+00, %clamp.i6 %tmp727 = fsub float -0.000000e+00, %tmp726 %tmp728 = fadd float 3.000000e+00, %tmp727 %tmp729 = fmul float %tmp725, %tmp728 @@ -1504,12 +1786,13 @@ ENDIF209: ; preds = %ELSE214, %ELSE211, %tmp747 = fadd float %tmp746, %tmp745 %tmp748 = fmul float %temp14.0, %tmp217 %tmp749 = fadd float %tmp747, %tmp748 - %tmp750 = call float @fabs(float %tmp749) + %tmp750 = call float @llvm.fabs.f32(float %tmp749) %tmp751 = fmul float %tmp750, %tmp750 %tmp752 = fmul float %tmp751, %tmp49 %tmp753 = fadd float %tmp752, %tmp50 - %tmp754 = call float @llvm.AMDGPU.clamp.f32(float %tmp753, float 0.000000e+00, float 1.000000e+00) - %tmp755 = fsub float -0.000000e+00, %tmp754 + %max.0.i3 = call float @llvm.maxnum.f32(float %tmp753, float 0.000000e+00) + %clamp.i4 = call float @llvm.minnum.f32(float %max.0.i3, float 1.000000e+00) + %tmp755 = fsub float -0.000000e+00, %clamp.i4 %tmp756 = fadd float 1.000000e+00, %tmp755 %tmp757 = fmul float %tmp32, %tmp756 %tmp758 = fmul float %tmp32, %tmp756 @@ -1545,12 +1828,11 @@ ENDIF209: ; preds = %ELSE214, %ELSE211, %tmp772 = select i1 %tmp771, float 6.550400e+04, float %tmp766 %tmp773 = fmul float %result.i2, %tmp51 %tmp774 = fadd float %tmp773, %tmp52 - %tmp775 = call float @llvm.AMDGPU.clamp.f32(float %tmp774, float 0.000000e+00, float 1.000000e+00) - %tmp776 = call i32 @llvm.SI.packf16(float %tmp768, float %tmp770) - %tmp777 = bitcast i32 %tmp776 to float - %tmp778 = call i32 @llvm.SI.packf16(float %tmp772, float %tmp775) - %tmp779 = bitcast i32 %tmp778 to float - call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %tmp777, float %tmp779, float %tmp777, float %tmp779) + %max.0.i1 = call float @llvm.maxnum.f32(float %tmp774, float 0.000000e+00) + %clamp.i2 = call float @llvm.minnum.f32(float %max.0.i1, float 1.000000e+00) + %tmp776 = call <2 x half> @llvm.amdgcn.cvt.pkrtz(float %tmp768, float %tmp770) + %tmp778 = call <2 x half> @llvm.amdgcn.cvt.pkrtz(float %tmp772, float %clamp.i2) + call void @llvm.amdgcn.exp.compr.v2f16(i32 0, i32 15, <2 x half> %tmp776, <2 x half> %tmp778, i1 true, i1 true) #0 ret void ELSE214: ; preds = %ELSE211 @@ -1566,57 +1848,32 @@ ELSE214: ; preds = %ELSE211 br label %ENDIF209 } -; Function Attrs: readnone -declare float @llvm.AMDGPU.clamp.f32(float, float, 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) #2 - -; Function Attrs: nounwind readnone -declare <4 x float> @llvm.SI.image.sample.l.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #2 - - -declare float @llvm.exp2.f32(float) #2 - -; Function Attrs: nounwind readnone -declare float @llvm.SI.load.const(<16 x i8>, i32) #2 - -; Function Attrs: nounwind readnone -declare float @llvm.SI.fs.interp(i32, i32, i32, <2 x i32>) #2 - +declare float @llvm.exp2.f32(float) #1 +declare float @llvm.ceil.f32(float) #1 +declare float @llvm.fabs.f32(float) #1 +declare float @llvm.pow.f32(float, float) #1 +declare float @llvm.minnum.f32(float, float) #1 +declare float @llvm.maxnum.f32(float, float) #1 +declare float @llvm.amdgcn.rsq.f32(float) #1 +declare float @llvm.amdgcn.cubeid(float, float, float) #1 +declare float @llvm.amdgcn.cubesc(float, float, float) #1 +declare float @llvm.amdgcn.cubetc(float, float, float) #1 +declare float @llvm.amdgcn.cubema(float, float, float) #1 +declare float @llvm.amdgcn.interp.p1(float, i32, i32, i32) #1 +declare float @llvm.amdgcn.interp.p2(float, float, i32, i32, i32) #1 declare i32 @llvm.amdgcn.mbcnt.lo(i32, i32) #1 declare i32 @llvm.amdgcn.mbcnt.hi(i32, i32) #1 +declare void @llvm.amdgcn.exp.compr.v2f16(i32, i32, <2 x half>, <2 x half>, i1, i1) #0 +declare <2 x half> @llvm.amdgcn.cvt.pkrtz(float, float) #1 +declare <4 x float> @llvm.amdgcn.image.sample.v4f32.v2f32.v8i32(<2 x float>, <8 x i32>, <4 x i32>, i32, i1, i1, i1, i1, i1) #2 +declare <4 x float> @llvm.amdgcn.image.sample.v4f32.v4f32.v8i32(<4 x float>, <8 x i32>, <4 x i32>, i32, i1, i1, i1, i1, i1) #2 +declare <4 x float> @llvm.amdgcn.image.sample.d.v4f32.v8f32.v8i32(<8 x float>, <8 x i32>, <4 x i32>, i32, i1, i1, i1, i1, i1) #2 +declare <4 x float> @llvm.amdgcn.image.sample.l.v4f32.v4f32.v8i32(<4 x float>, <8 x i32>, <4 x i32>, i32, i1, i1, i1, i1, i1) #2 +declare float @llvm.SI.load.const(<16 x i8>, i32) #1 -; Function Attrs: nounwind readonly -declare float @ceil(float) #3 - -; Function Attrs: nounwind readnone -declare float @llvm.amdgcn.rsq.f32(float) #2 - -; Function Attrs: nounwind readnone -declare <4 x float> @llvm.SI.image.sample.d.v8i32(<8 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #2 - -; Function Attrs: readnone -declare <4 x float> @llvm.AMDGPU.cube(<4 x float>) #1 - -; Function Attrs: readnone -declare float @fabs(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) #2 - - -; Function Attrs: nounwind readnone -declare float @llvm.pow.f32(float, float) #2 - -; Function Attrs: nounwind readnone -declare i32 @llvm.SI.packf16(float, float) #2 - -declare void @llvm.SI.export(i32, i32, i32, i32, i32, float, float, float, float) - -attributes #1 = { readnone } -attributes #2 = { nounwind readnone } -attributes #3 = { nounwind readonly } +attributes #0 = { nounwind } +attributes #1 = { nounwind readnone } +attributes #2 = { nounwind readonly } !0 = !{!1, !1, i64 0, i32 1} !1 = !{!"const", !2} |