; 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([9 x <16 x i8>] addrspace(2)* byval, [17 x <16 x i8>] addrspace(2)* byval, [33 x <8 x i32>] addrspace(2)* byval, [16 x <8 x i32>] addrspace(2)* byval, [16 x <4 x i32>] addrspace(2)* byval, 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 = getelementptr [17 x <16 x i8>], [17 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0 %24 = load <16 x i8>, <16 x i8> addrspace(2)* %23, align 16, !tbaa !0 %25 = call float @llvm.SI.load.const(<16 x i8> %24, i32 0) %26 = call float @llvm.SI.load.const(<16 x i8> %24, i32 128) %27 = call float @llvm.SI.load.const(<16 x i8> %24, i32 176) %28 = call float @llvm.SI.load.const(<16 x i8> %24, i32 208) %29 = call float @llvm.SI.load.const(<16 x i8> %24, i32 240) %30 = call float @llvm.SI.load.const(<16 x i8> %24, i32 272) %31 = call float @llvm.SI.load.const(<16 x i8> %24, i32 304) %32 = call float @llvm.SI.load.const(<16 x i8> %24, i32 352) %33 = call float @llvm.SI.load.const(<16 x i8> %24, i32 356) %34 = getelementptr [17 x <16 x i8>], [17 x <16 x i8>] addrspace(2)* %1, i64 0, i64 1 %35 = load <16 x i8>, <16 x i8> addrspace(2)* %34, align 16, !tbaa !0 %36 = call float @llvm.SI.load.const(<16 x i8> %35, i32 176) %37 = call float @llvm.SI.load.const(<16 x i8> %35, i32 180) %38 = call float @llvm.SI.load.const(<16 x i8> %35, i32 292) %39 = call float @llvm.SI.load.const(<16 x i8> %35, i32 304) %40 = call float @llvm.SI.load.const(<16 x i8> %35, i32 308) %41 = call float @llvm.SI.load.const(<16 x i8> %35, i32 312) %42 = call float @llvm.SI.load.const(<16 x i8> %35, i32 328) %43 = call float @llvm.SI.load.const(<16 x i8> %35, i32 360) %44 = call float @llvm.SI.load.const(<16 x i8> %35, i32 392) %45 = getelementptr [33 x <8 x i32>], [33 x <8 x i32>] addrspace(2)* %2, i64 0, i64 0 %46 = load <8 x i32>, <8 x i32> addrspace(2)* %45, align 32, !tbaa !0 %47 = bitcast [33 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %48 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %47, i64 0, i64 3 %49 = load <4 x i32>, <4 x i32> addrspace(2)* %48, align 16, !tbaa !0 %50 = getelementptr [33 x <8 x i32>], [33 x <8 x i32>] addrspace(2)* %2, i64 0, i64 2 %51 = load <8 x i32>, <8 x i32> addrspace(2)* %50, align 32, !tbaa !0 %52 = bitcast [33 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %53 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %52, i64 0, i64 7 %54 = load <4 x i32>, <4 x i32> addrspace(2)* %53, align 16, !tbaa !0 %55 = extractelement <8 x i32> %51, i32 7 %56 = extractelement <4 x i32> %54, i32 0 %57 = and i32 %56, %55 %58 = insertelement <4 x i32> %54, i32 %57, i32 0 %59 = getelementptr [33 x <8 x i32>], [33 x <8 x i32>] addrspace(2)* %2, i64 0, i64 4 %60 = load <8 x i32>, <8 x i32> addrspace(2)* %59, align 32, !tbaa !0 %61 = bitcast [33 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %62 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %61, i64 0, i64 11 %63 = load <4 x i32>, <4 x i32> addrspace(2)* %62, align 16, !tbaa !0 %64 = extractelement <8 x i32> %60, i32 7 %65 = extractelement <4 x i32> %63, i32 0 %66 = and i32 %65, %64 %67 = insertelement <4 x i32> %63, i32 %66, i32 0 %68 = getelementptr [33 x <8 x i32>], [33 x <8 x i32>] addrspace(2)* %2, i64 0, i64 6 %69 = load <8 x i32>, <8 x i32> addrspace(2)* %68, align 32, !tbaa !0 %70 = bitcast [33 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %71 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %70, i64 0, i64 15 %72 = load <4 x i32>, <4 x i32> addrspace(2)* %71, align 16, !tbaa !0 %73 = extractelement <8 x i32> %69, i32 7 %74 = extractelement <4 x i32> %72, i32 0 %75 = and i32 %74, %73 %76 = insertelement <4 x i32> %72, i32 %75, i32 0 %77 = getelementptr [33 x <8 x i32>], [33 x <8 x i32>] addrspace(2)* %2, i64 0, i64 8 %78 = load <8 x i32>, <8 x i32> addrspace(2)* %77, align 32, !tbaa !0 %79 = call float @llvm.SI.fs.interp(i32 2, i32 0, i32 %6, <2 x i32> %8) %80 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %6, <2 x i32> %8) %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 = call float @llvm.SI.fs.interp(i32 3, i32 1, i32 %6, <2 x i32> %8) %85 = call float @llvm.SI.fs.interp(i32 0, i32 2, i32 %6, <2 x i32> %8) %86 = call float @llvm.SI.fs.interp(i32 3, i32 2, i32 %6, <2 x i32> %8) %87 = call float @llvm.SI.fs.interp(i32 0, i32 3, i32 %6, <2 x i32> %9) %88 = call float @llvm.SI.fs.interp(i32 1, i32 3, i32 %6, <2 x i32> %9) %89 = call float @llvm.SI.fs.interp(i32 2, i32 3, i32 %6, <2 x i32> %9) %90 = fmul float %32, %16 %91 = fadd float %90, %33 %92 = bitcast float %28 to i32 %93 = icmp eq i32 %92, 0 br i1 %93, label %ENDIF, label %IF IF: ; preds = %main_body %94 = call float @llvm.SI.fs.interp(i32 1, i32 0, i32 %6, <2 x i32> %8) %95 = call float @llvm.SI.fs.interp(i32 0, i32 0, i32 %6, <2 x i32> %8) %96 = extractelement <4 x i32> %49, i32 0 %97 = extractelement <8 x i32> %46, i32 7 %98 = and i32 %96, %97 %99 = insertelement <4 x i32> %49, i32 %98, i32 0 %100 = bitcast float %95 to i32 %101 = bitcast float %94 to i32 %102 = insertelement <2 x i32> undef, i32 %100, i32 0 %103 = insertelement <2 x i32> %102, i32 %101, i32 1 %104 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %103, <8 x i32> %46, <4 x i32> %99, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %105 = extractelement <4 x float> %104, i32 0 %106 = extractelement <4 x float> %104, i32 1 %107 = extractelement <4 x float> %104, i32 2 %108 = fmul float %38, %105 %109 = fmul float %38, %106 %110 = fmul float %38, %107 br label %ENDIF ENDIF: ; preds = %main_body, %IF %temp4.0 = phi float [ %108, %IF ], [ %39, %main_body ] %temp5.0 = phi float [ %109, %IF ], [ %40, %main_body ] %temp6.0 = phi float [ %110, %IF ], [ %41, %main_body ] %111 = bitcast float %29 to i32 %112 = icmp eq i32 %111, 0 br i1 %112, label %ENDIF16, label %IF17 IF17: ; preds = %ENDIF %113 = bitcast float %79 to i32 %114 = bitcast float %80 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> %51, <4 x i32> %58, 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 = fmul float %42, %118 %122 = fadd float %121, %temp4.0 %123 = fmul float %42, %119 %124 = fadd float %123, %temp5.0 %125 = fmul float %42, %120 %126 = fadd float %125, %temp6.0 br label %ENDIF16 ENDIF16: ; preds = %ENDIF, %IF17 %temp4.1 = phi float [ %122, %IF17 ], [ %temp4.0, %ENDIF ] %temp5.1 = phi float [ %124, %IF17 ], [ %temp5.0, %ENDIF ] %temp6.1 = phi float [ %126, %IF17 ], [ %temp6.0, %ENDIF ] %127 = bitcast float %25 to i32 %128 = icmp eq i32 %127, 0 br i1 %128, label %ENDIF19, label %IF20 IF20: ; preds = %ENDIF16 %129 = fmul float %temp4.1, %87 %130 = fmul float %temp5.1, %88 %131 = fmul float %temp6.1, %89 br label %ENDIF19 ENDIF19: ; preds = %ENDIF16, %IF20 %temp4.2 = phi float [ %129, %IF20 ], [ %temp4.1, %ENDIF16 ] %temp5.2 = phi float [ %130, %IF20 ], [ %temp5.1, %ENDIF16 ] %temp6.2 = phi float [ %131, %IF20 ], [ %temp6.1, %ENDIF16 ] %132 = bitcast float %30 to i32 %133 = icmp eq i32 %132, 0 br i1 %133, label %ENDIF22, label %IF23 IF23: ; preds = %ENDIF19 %134 = bitcast float %81 to i32 %135 = bitcast float %82 to i32 %136 = insertelement <2 x i32> undef, i32 %134, i32 0 %137 = insertelement <2 x i32> %136, i32 %135, i32 1 %138 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %137, <8 x i32> %60, <4 x i32> %67, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %139 = extractelement <4 x float> %138, i32 1 %140 = fmul float %43, %139 br label %ENDIF22 ENDIF22: ; preds = %ENDIF19, %IF23 %temp8.0 = phi float [ %140, %IF23 ], [ 1.000000e+00, %ENDIF19 ] %141 = bitcast float %31 to i32 %142 = icmp eq i32 %141, 0 br i1 %142, label %ENDIF25, label %IF26 IF26: ; preds = %ENDIF22 %143 = bitcast float %83 to i32 %144 = bitcast float %84 to i32 %145 = insertelement <2 x i32> undef, i32 %143, i32 0 %146 = insertelement <2 x i32> %145, i32 %144, i32 1 %147 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> %146, <8 x i32> %69, <4 x i32> %76, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %148 = extractelement <4 x float> %147, i32 1 %149 = fmul float %44, %148 %150 = fmul float %temp8.0, %149 br label %ENDIF25 ENDIF25: ; preds = %ENDIF22, %IF26 %temp8.1 = phi float [ %150, %IF26 ], [ %temp8.0, %ENDIF22 ] %151 = fmul float %temp4.2, %temp8.1 %152 = fmul float %temp5.2, %temp8.1 %153 = fmul float %temp6.2, %temp8.1 %154 = fadd float %151, 0x3EE4F8B580000000 %155 = fadd float %152, 0x3EE4F8B580000000 %156 = fadd float %153, 0x3EE4F8B580000000 %157 = call float @llvm.pow.f32(float %154, float 0x40019999A0000000) %158 = call float @llvm.pow.f32(float %155, float 0x40019999A0000000) %159 = call float @llvm.pow.f32(float %156, float 0x40019999A0000000) %160 = fdiv float 1.000000e+00, %86 %161 = fmul float %86, %160 %162 = fptosi float %15 to i32 %163 = fptosi float %91 to i32 %164 = insertelement <4 x i32> undef, i32 %162, i32 0 %165 = insertelement <4 x i32> %164, i32 %163, i32 1 %166 = insertelement <4 x i32> %165, i32 0, i32 2 %167 = call <4 x i32> @llvm.SI.image.load.mip.v4i32(<4 x i32> %166, <8 x i32> %78, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %bc = bitcast <4 x i32> %167 to <4 x float> %168 = extractelement <4 x float> %bc, i32 3 %169 = fmul float %161, %168 %170 = fsub float %86, %169 %171 = call float @llvm.fabs.f32(float %170) %172 = fsub float %171, %36 %173 = fsub float %37, %36 %174 = fadd float %173, 0x3EE4F8B580000000 %175 = fdiv float 1.000000e+00, %174 %176 = fmul float %172, %175 %177 = call float @llvm.AMDGPU.clamp.(float %176, float 0.000000e+00, float 1.000000e+00) %178 = fmul float %85, %177 %179 = fmul float %178, %27 %180 = fmul float %157, %179 %181 = fmul float %158, %179 %182 = fmul float %159, %179 %183 = bitcast float %5 to i32 %184 = 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 %183, 10 %185 = 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 }> %184, float %180, 11 %186 = 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 }> %185, float %181, 12 %187 = 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 }> %186, float %182, 13 %188 = 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 }> %187, float %26, 14 %189 = 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 }> %188, 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 }> %189 } ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #1 ; 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.pow.f32(float, float) #1 ; Function Attrs: nounwind readnone declare <4 x i32> @llvm.SI.image.load.mip.v4i32(<4 x i32>, <8 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.fabs.f32(float) #1 ; Function Attrs: readnone declare float @llvm.AMDGPU.clamp.(float, float, float) #2 attributes #0 = { "InitialPSInputAddr"="36983" } attributes #1 = { nounwind readnone } attributes #2 = { readnone } !0 = !{!"const", null, i32 1}