radeonsi: Compiling shader 17 TGSI shader LLVM IR: ; ModuleID = 'tgsi' source_filename = "tgsi" target datalayout = "e-p:32:32-p1:64:64-p2:64:64-p3:32:32-p4:64:64-p5:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-v2048:2048-n32:64" 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([13 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 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 3, !amdgpu.uniform !0 %24 = load <16 x i8>, <16 x i8> addrspace(2)* %23, align 16, !invariant.load !0 %25 = call float @llvm.SI.load.const(<16 x i8> %24, i32 368) %26 = bitcast <2 x i32> %8 to <2 x float> %27 = extractelement <2 x float> %26, i32 0 %28 = extractelement <2 x float> %26, i32 1 %29 = call float @llvm.amdgcn.interp.p1(float %27, i32 0, i32 2, i32 %6) %30 = call float @llvm.amdgcn.interp.p2(float %29, float %28, i32 0, i32 2, i32 %6) %31 = fcmp ult float %25, %30 br i1 %31, label %else11, label %if3 if3: ; preds = %main_body %32 = bitcast <2 x i32> %8 to <2 x float> %33 = extractelement <2 x float> %32, i32 0 %34 = extractelement <2 x float> %32, i32 1 %35 = call float @llvm.amdgcn.interp.p1(float %33, i32 3, i32 0, i32 %6) %36 = call float @llvm.amdgcn.interp.p2(float %35, float %34, i32 3, i32 0, i32 %6) %37 = fdiv float 1.000000e+00, %36, !fpmath !1 %38 = bitcast <2 x i32> %8 to <2 x float> %39 = extractelement <2 x float> %38, i32 0 %40 = extractelement <2 x float> %38, i32 1 %41 = call float @llvm.amdgcn.interp.p1(float %39, i32 0, i32 0, i32 %6) %42 = call float @llvm.amdgcn.interp.p2(float %41, float %40, i32 0, i32 0, i32 %6) %43 = fmul float %42, %37 %44 = bitcast <2 x i32> %8 to <2 x float> %45 = extractelement <2 x float> %44, i32 0 %46 = extractelement <2 x float> %44, i32 1 %47 = call float @llvm.amdgcn.interp.p1(float %45, i32 1, i32 0, i32 %6) %48 = call float @llvm.amdgcn.interp.p2(float %47, float %46, i32 1, i32 0, i32 %6) %49 = fmul float %48, %37 %50 = bitcast <2 x i32> %8 to <2 x float> %51 = extractelement <2 x float> %50, i32 0 %52 = extractelement <2 x float> %50, i32 1 %53 = call float @llvm.amdgcn.interp.p1(float %51, i32 2, i32 0, i32 %6) %54 = call float @llvm.amdgcn.interp.p2(float %53, float %52, i32 2, i32 0, i32 %6) br label %endif22.sink.split else11: ; preds = %main_body %55 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %1, i64 0, i64 3, !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 372) %58 = bitcast <2 x i32> %8 to <2 x float> %59 = extractelement <2 x float> %58, i32 0 %60 = extractelement <2 x float> %58, i32 1 %61 = call float @llvm.amdgcn.interp.p1(float %59, i32 0, i32 2, i32 %6) %62 = call float @llvm.amdgcn.interp.p2(float %61, float %60, i32 0, i32 2, i32 %6) %63 = fcmp ult float %57, %62 br i1 %63, label %endif22, label %if13 if13: ; preds = %else11 %64 = bitcast <2 x i32> %8 to <2 x float> %65 = extractelement <2 x float> %64, i32 0 %66 = extractelement <2 x float> %64, i32 1 %67 = call float @llvm.amdgcn.interp.p1(float %65, i32 3, i32 1, i32 %6) %68 = call float @llvm.amdgcn.interp.p2(float %67, float %66, i32 3, i32 1, i32 %6) %69 = fdiv float 1.000000e+00, %68, !fpmath !1 %70 = bitcast <2 x i32> %8 to <2 x float> %71 = extractelement <2 x float> %70, i32 0 %72 = extractelement <2 x float> %70, i32 1 %73 = call float @llvm.amdgcn.interp.p1(float %71, i32 0, i32 1, i32 %6) %74 = call float @llvm.amdgcn.interp.p2(float %73, float %72, i32 0, i32 1, i32 %6) %75 = fmul float %74, %69 %76 = bitcast <2 x i32> %8 to <2 x float> %77 = extractelement <2 x float> %76, i32 0 %78 = extractelement <2 x float> %76, i32 1 %79 = call float @llvm.amdgcn.interp.p1(float %77, i32 1, i32 1, i32 %6) %80 = call float @llvm.amdgcn.interp.p2(float %79, float %78, i32 1, i32 1, i32 %6) %81 = fmul float %80, %69 %82 = bitcast <2 x i32> %8 to <2 x float> %83 = extractelement <2 x float> %82, i32 0 %84 = extractelement <2 x float> %82, i32 1 %85 = call float @llvm.amdgcn.interp.p1(float %83, i32 2, i32 1, i32 %6) %86 = call float @llvm.amdgcn.interp.p2(float %85, float %84, i32 2, i32 1, i32 %6) br label %endif22.sink.split endif22.sink.split: ; preds = %if3, %if13 %.sink26 = phi i64 [ 0, %if3 ], [ 2, %if13 ] %.sink24 = phi i64 [ 3, %if3 ], [ 7, %if13 ] %.sink15 = phi float [ %54, %if3 ], [ %86, %if13 ] %.sink14 = phi float [ %43, %if3 ], [ %75, %if13 ] %.sink = phi float [ %49, %if3 ], [ %81, %if13 ] %.14.ph = phi float [ 0.000000e+00, %if3 ], [ 1.000000e+00, %if13 ] %.12.ph = phi float [ 1.000000e+00, %if3 ], [ 0.000000e+00, %if13 ] %87 = getelementptr [32 x <8 x i32>], [32 x <8 x i32>] addrspace(2)* %2, i64 0, i64 %.sink26 %88 = load <8 x i32>, <8 x i32> addrspace(2)* %87, align 32, !invariant.load !0 %89 = bitcast [32 x <8 x i32>] addrspace(2)* %2 to [0 x <4 x i32>] addrspace(2)* %90 = getelementptr [0 x <4 x i32>], [0 x <4 x i32>] addrspace(2)* %89, i64 0, i64 %.sink24 %91 = load <4 x i32>, <4 x i32> addrspace(2)* %90, align 16, !invariant.load !0 %92 = extractelement <8 x i32> %88, i32 7 %93 = extractelement <4 x i32> %91, i32 0 %94 = and i32 %93, %92 %95 = insertelement <4 x i32> %91, i32 %94, i32 0 %96 = bitcast float %.sink15 to i32 %97 = bitcast float %.sink14 to i32 %98 = bitcast float %.sink to i32 %99 = insertelement <4 x i32> undef, i32 %96, i32 0 %100 = insertelement <4 x i32> %99, i32 %97, i32 1 %101 = insertelement <4 x i32> %100, i32 %98, i32 2 %102 = call <4 x float> @llvm.SI.image.sample.c.v4i32(<4 x i32> %101, <8 x i32> %88, <4 x i32> %95, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) %103 = extractelement <4 x float> %102, i32 0 %phitmp = fmul float %103, 5.000000e-01 br label %endif22 endif22: ; preds = %else11, %endif22.sink.split %.16 = phi float [ 5.000000e-01, %else11 ], [ 0.000000e+00, %endif22.sink.split ] %.14 = phi float [ 1.000000e+00, %else11 ], [ %.14.ph, %endif22.sink.split ] %.12 = phi float [ 1.000000e+00, %else11 ], [ %.12.ph, %endif22.sink.split ] %.1 = phi float [ 5.000000e-01, %else11 ], [ %phitmp, %endif22.sink.split ] %104 = fadd float %.16, %.1 %105 = fmul float %.14, 5.000000e-01 %106 = fadd float %105, %.1 %107 = fmul float %.12, 5.000000e-01 %108 = fadd float %107, %.1 %109 = bitcast float %5 to i32 %110 = 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 %109, 10 %111 = 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 }> %110, float %104, 11 %112 = 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 }> %111, float %106, 12 %113 = 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 }> %112, float %108, 13 %114 = 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 }> %113, float 1.000000e+00, 14 %115 = 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 }> %114, 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 }> %115 } ; Function Attrs: nounwind readnone declare float @llvm.SI.load.const(<16 x i8>, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.amdgcn.interp.p1(float, i32, i32, i32) #1 ; Function Attrs: nounwind readnone declare float @llvm.amdgcn.interp.p2(float, float, i32, i32, i32) #1 ; 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 attributes #0 = { "InitialPSInputAddr"="36983" } attributes #1 = { nounwind readnone } !0 = !{} !1 = !{float 2.500000e+00}