blob: 6e29cf69ee2156770e625a354e38d9b420e4ba7f [file] [log] [blame]
Tom Stellard49f8bfd2015-01-06 18:00:21 +00001; RUN: llc -march=amdgcn -mcpu=SI < %s | FileCheck %s
Marek Olsak75170772015-01-27 17:27:15 +00002; RUN: llc -march=amdgcn -mcpu=tonga < %s | FileCheck %s
Tom Stellard859199d2013-11-27 21:23:29 +00003
Tom Stellard859199d2013-11-27 21:23:29 +00004; These tests check that the compiler won't crash when it needs to spill
5; SGPRs.
6
Matt Arsenault77131622016-01-23 05:42:38 +00007@ddxy_lds = external addrspace(3) global [64 x i32]
8
Tom Stellard79243d92014-10-01 17:15:17 +00009; CHECK-LABEL: {{^}}main:
Michel Danzera7860772015-02-06 02:51:29 +000010; CHECK: s_wqm
Matt Arsenault0e3d3892015-11-30 21:15:53 +000011
12; Make sure not emitting unused scratch resource descriptor setup
13; CHECK-NOT: s_mov_b32
14; CHECK-NOT: s_mov_b32
15; CHECK-NOT: s_mov_b32
16; CHECK-NOT: s_mov_b32
17
18; CHECK: s_mov_b32 m0
19
20
Tom Stellard859199d2013-11-27 21:23:29 +000021; Writing to M0 from an SMRD instruction will hang the GPU.
Tom Stellard326d6ec2014-11-05 14:50:53 +000022; CHECK-NOT: s_buffer_load_dword m0
23; CHECK: s_endpgm
Matt Arsenault77131622016-01-23 05:42:38 +000024define void @main([17 x <16 x i8>] addrspace(2)* byval, [32 x <16 x i8>] addrspace(2)* byval, [16 x <32 x i8>] 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, float, float, float, float) #1 {
Tom Stellard859199d2013-11-27 21:23:29 +000025main_body:
David Blaikie79e6c742015-02-27 19:29:02 +000026 %21 = getelementptr [17 x <16 x i8>], [17 x <16 x i8>] addrspace(2)* %0, i64 0, i32 0
David Blaikiea79ac142015-02-27 21:17:42 +000027 %22 = load <16 x i8>, <16 x i8> addrspace(2)* %21, !tbaa !0
Tom Stellard859199d2013-11-27 21:23:29 +000028 %23 = call float @llvm.SI.load.const(<16 x i8> %22, i32 96)
29 %24 = call float @llvm.SI.load.const(<16 x i8> %22, i32 100)
30 %25 = call float @llvm.SI.load.const(<16 x i8> %22, i32 104)
31 %26 = call float @llvm.SI.load.const(<16 x i8> %22, i32 112)
32 %27 = call float @llvm.SI.load.const(<16 x i8> %22, i32 116)
33 %28 = call float @llvm.SI.load.const(<16 x i8> %22, i32 120)
34 %29 = call float @llvm.SI.load.const(<16 x i8> %22, i32 128)
35 %30 = call float @llvm.SI.load.const(<16 x i8> %22, i32 132)
36 %31 = call float @llvm.SI.load.const(<16 x i8> %22, i32 140)
37 %32 = call float @llvm.SI.load.const(<16 x i8> %22, i32 144)
38 %33 = call float @llvm.SI.load.const(<16 x i8> %22, i32 160)
39 %34 = call float @llvm.SI.load.const(<16 x i8> %22, i32 176)
40 %35 = call float @llvm.SI.load.const(<16 x i8> %22, i32 180)
41 %36 = call float @llvm.SI.load.const(<16 x i8> %22, i32 184)
42 %37 = call float @llvm.SI.load.const(<16 x i8> %22, i32 192)
43 %38 = call float @llvm.SI.load.const(<16 x i8> %22, i32 196)
44 %39 = call float @llvm.SI.load.const(<16 x i8> %22, i32 200)
45 %40 = call float @llvm.SI.load.const(<16 x i8> %22, i32 208)
46 %41 = call float @llvm.SI.load.const(<16 x i8> %22, i32 212)
47 %42 = call float @llvm.SI.load.const(<16 x i8> %22, i32 216)
48 %43 = call float @llvm.SI.load.const(<16 x i8> %22, i32 224)
49 %44 = call float @llvm.SI.load.const(<16 x i8> %22, i32 240)
50 %45 = call float @llvm.SI.load.const(<16 x i8> %22, i32 244)
51 %46 = call float @llvm.SI.load.const(<16 x i8> %22, i32 248)
52 %47 = call float @llvm.SI.load.const(<16 x i8> %22, i32 256)
53 %48 = call float @llvm.SI.load.const(<16 x i8> %22, i32 272)
54 %49 = call float @llvm.SI.load.const(<16 x i8> %22, i32 276)
55 %50 = call float @llvm.SI.load.const(<16 x i8> %22, i32 280)
56 %51 = call float @llvm.SI.load.const(<16 x i8> %22, i32 288)
57 %52 = call float @llvm.SI.load.const(<16 x i8> %22, i32 292)
58 %53 = call float @llvm.SI.load.const(<16 x i8> %22, i32 296)
59 %54 = call float @llvm.SI.load.const(<16 x i8> %22, i32 304)
60 %55 = call float @llvm.SI.load.const(<16 x i8> %22, i32 308)
61 %56 = call float @llvm.SI.load.const(<16 x i8> %22, i32 312)
62 %57 = call float @llvm.SI.load.const(<16 x i8> %22, i32 368)
63 %58 = call float @llvm.SI.load.const(<16 x i8> %22, i32 372)
64 %59 = call float @llvm.SI.load.const(<16 x i8> %22, i32 376)
65 %60 = call float @llvm.SI.load.const(<16 x i8> %22, i32 384)
David Blaikie79e6c742015-02-27 19:29:02 +000066 %61 = getelementptr [16 x <32 x i8>], [16 x <32 x i8>] addrspace(2)* %2, i64 0, i32 0
David Blaikiea79ac142015-02-27 21:17:42 +000067 %62 = load <32 x i8>, <32 x i8> addrspace(2)* %61, !tbaa !0
David Blaikie79e6c742015-02-27 19:29:02 +000068 %63 = getelementptr [32 x <16 x i8>], [32 x <16 x i8>] addrspace(2)* %1, i64 0, i32 0
David Blaikiea79ac142015-02-27 21:17:42 +000069 %64 = load <16 x i8>, <16 x i8> addrspace(2)* %63, !tbaa !0
David Blaikie79e6c742015-02-27 19:29:02 +000070 %65 = getelementptr [16 x <32 x i8>], [16 x <32 x i8>] addrspace(2)* %2, i64 0, i32 1
David Blaikiea79ac142015-02-27 21:17:42 +000071 %66 = load <32 x i8>, <32 x i8> addrspace(2)* %65, !tbaa !0
David Blaikie79e6c742015-02-27 19:29:02 +000072 %67 = getelementptr [32 x <16 x i8>], [32 x <16 x i8>] addrspace(2)* %1, i64 0, i32 1
David Blaikiea79ac142015-02-27 21:17:42 +000073 %68 = load <16 x i8>, <16 x i8> addrspace(2)* %67, !tbaa !0
David Blaikie79e6c742015-02-27 19:29:02 +000074 %69 = getelementptr [16 x <32 x i8>], [16 x <32 x i8>] addrspace(2)* %2, i64 0, i32 2
David Blaikiea79ac142015-02-27 21:17:42 +000075 %70 = load <32 x i8>, <32 x i8> addrspace(2)* %69, !tbaa !0
David Blaikie79e6c742015-02-27 19:29:02 +000076 %71 = getelementptr [32 x <16 x i8>], [32 x <16 x i8>] addrspace(2)* %1, i64 0, i32 2
David Blaikiea79ac142015-02-27 21:17:42 +000077 %72 = load <16 x i8>, <16 x i8> addrspace(2)* %71, !tbaa !0
David Blaikie79e6c742015-02-27 19:29:02 +000078 %73 = getelementptr [16 x <32 x i8>], [16 x <32 x i8>] addrspace(2)* %2, i64 0, i32 3
David Blaikiea79ac142015-02-27 21:17:42 +000079 %74 = load <32 x i8>, <32 x i8> addrspace(2)* %73, !tbaa !0
David Blaikie79e6c742015-02-27 19:29:02 +000080 %75 = getelementptr [32 x <16 x i8>], [32 x <16 x i8>] addrspace(2)* %1, i64 0, i32 3
David Blaikiea79ac142015-02-27 21:17:42 +000081 %76 = load <16 x i8>, <16 x i8> addrspace(2)* %75, !tbaa !0
David Blaikie79e6c742015-02-27 19:29:02 +000082 %77 = getelementptr [16 x <32 x i8>], [16 x <32 x i8>] addrspace(2)* %2, i64 0, i32 4
David Blaikiea79ac142015-02-27 21:17:42 +000083 %78 = load <32 x i8>, <32 x i8> addrspace(2)* %77, !tbaa !0
David Blaikie79e6c742015-02-27 19:29:02 +000084 %79 = getelementptr [32 x <16 x i8>], [32 x <16 x i8>] addrspace(2)* %1, i64 0, i32 4
David Blaikiea79ac142015-02-27 21:17:42 +000085 %80 = load <16 x i8>, <16 x i8> addrspace(2)* %79, !tbaa !0
David Blaikie79e6c742015-02-27 19:29:02 +000086 %81 = getelementptr [16 x <32 x i8>], [16 x <32 x i8>] addrspace(2)* %2, i64 0, i32 5
David Blaikiea79ac142015-02-27 21:17:42 +000087 %82 = load <32 x i8>, <32 x i8> addrspace(2)* %81, !tbaa !0
David Blaikie79e6c742015-02-27 19:29:02 +000088 %83 = getelementptr [32 x <16 x i8>], [32 x <16 x i8>] addrspace(2)* %1, i64 0, i32 5
David Blaikiea79ac142015-02-27 21:17:42 +000089 %84 = load <16 x i8>, <16 x i8> addrspace(2)* %83, !tbaa !0
David Blaikie79e6c742015-02-27 19:29:02 +000090 %85 = getelementptr [16 x <32 x i8>], [16 x <32 x i8>] addrspace(2)* %2, i64 0, i32 6
David Blaikiea79ac142015-02-27 21:17:42 +000091 %86 = load <32 x i8>, <32 x i8> addrspace(2)* %85, !tbaa !0
David Blaikie79e6c742015-02-27 19:29:02 +000092 %87 = getelementptr [32 x <16 x i8>], [32 x <16 x i8>] addrspace(2)* %1, i64 0, i32 6
David Blaikiea79ac142015-02-27 21:17:42 +000093 %88 = load <16 x i8>, <16 x i8> addrspace(2)* %87, !tbaa !0
David Blaikie79e6c742015-02-27 19:29:02 +000094 %89 = getelementptr [16 x <32 x i8>], [16 x <32 x i8>] addrspace(2)* %2, i64 0, i32 7
David Blaikiea79ac142015-02-27 21:17:42 +000095 %90 = load <32 x i8>, <32 x i8> addrspace(2)* %89, !tbaa !0
David Blaikie79e6c742015-02-27 19:29:02 +000096 %91 = getelementptr [32 x <16 x i8>], [32 x <16 x i8>] addrspace(2)* %1, i64 0, i32 7
David Blaikiea79ac142015-02-27 21:17:42 +000097 %92 = load <16 x i8>, <16 x i8> addrspace(2)* %91, !tbaa !0
Tom Stellard859199d2013-11-27 21:23:29 +000098 %93 = call float @llvm.SI.fs.interp(i32 0, i32 0, i32 %4, <2 x i32> %6)
99 %94 = call float @llvm.SI.fs.interp(i32 1, i32 0, i32 %4, <2 x i32> %6)
100 %95 = call float @llvm.SI.fs.interp(i32 0, i32 1, i32 %4, <2 x i32> %6)
101 %96 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %4, <2 x i32> %6)
102 %97 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %4, <2 x i32> %6)
103 %98 = call float @llvm.SI.fs.interp(i32 0, i32 2, i32 %4, <2 x i32> %6)
104 %99 = call float @llvm.SI.fs.interp(i32 1, i32 2, i32 %4, <2 x i32> %6)
105 %100 = call float @llvm.SI.fs.interp(i32 2, i32 2, i32 %4, <2 x i32> %6)
106 %101 = call float @llvm.SI.fs.interp(i32 0, i32 3, i32 %4, <2 x i32> %6)
107 %102 = call float @llvm.SI.fs.interp(i32 1, i32 3, i32 %4, <2 x i32> %6)
108 %103 = call float @llvm.SI.fs.interp(i32 2, i32 3, i32 %4, <2 x i32> %6)
109 %104 = call float @llvm.SI.fs.interp(i32 0, i32 4, i32 %4, <2 x i32> %6)
110 %105 = call float @llvm.SI.fs.interp(i32 1, i32 4, i32 %4, <2 x i32> %6)
111 %106 = call float @llvm.SI.fs.interp(i32 2, i32 4, i32 %4, <2 x i32> %6)
112 %107 = call float @llvm.SI.fs.interp(i32 0, i32 5, i32 %4, <2 x i32> %6)
113 %108 = call float @llvm.SI.fs.interp(i32 1, i32 5, i32 %4, <2 x i32> %6)
114 %109 = call float @llvm.SI.fs.interp(i32 2, i32 5, i32 %4, <2 x i32> %6)
115 %110 = call i32 @llvm.SI.tid()
David Blaikie79e6c742015-02-27 19:29:02 +0000116 %111 = getelementptr [64 x i32], [64 x i32] addrspace(3)* @ddxy_lds, i32 0, i32 %110
Tom Stellard859199d2013-11-27 21:23:29 +0000117 %112 = bitcast float %93 to i32
118 store i32 %112, i32 addrspace(3)* %111
119 %113 = bitcast float %94 to i32
120 store i32 %113, i32 addrspace(3)* %111
121 %114 = call i32 @llvm.SI.tid()
David Blaikie79e6c742015-02-27 19:29:02 +0000122 %115 = getelementptr [64 x i32], [64 x i32] addrspace(3)* @ddxy_lds, i32 0, i32 %114
Tom Stellard859199d2013-11-27 21:23:29 +0000123 %116 = and i32 %114, -4
David Blaikie79e6c742015-02-27 19:29:02 +0000124 %117 = getelementptr [64 x i32], [64 x i32] addrspace(3)* @ddxy_lds, i32 0, i32 %116
Tom Stellard859199d2013-11-27 21:23:29 +0000125 %118 = add i32 %116, 1
David Blaikie79e6c742015-02-27 19:29:02 +0000126 %119 = getelementptr [64 x i32], [64 x i32] addrspace(3)* @ddxy_lds, i32 0, i32 %118
Tom Stellard859199d2013-11-27 21:23:29 +0000127 %120 = bitcast float %93 to i32
128 store i32 %120, i32 addrspace(3)* %115
David Blaikiea79ac142015-02-27 21:17:42 +0000129 %121 = load i32, i32 addrspace(3)* %117
Tom Stellard859199d2013-11-27 21:23:29 +0000130 %122 = bitcast i32 %121 to float
David Blaikiea79ac142015-02-27 21:17:42 +0000131 %123 = load i32, i32 addrspace(3)* %119
Tom Stellard859199d2013-11-27 21:23:29 +0000132 %124 = bitcast i32 %123 to float
133 %125 = fsub float %124, %122
134 %126 = bitcast float %94 to i32
135 store i32 %126, i32 addrspace(3)* %115
David Blaikiea79ac142015-02-27 21:17:42 +0000136 %127 = load i32, i32 addrspace(3)* %117
Tom Stellard859199d2013-11-27 21:23:29 +0000137 %128 = bitcast i32 %127 to float
David Blaikiea79ac142015-02-27 21:17:42 +0000138 %129 = load i32, i32 addrspace(3)* %119
Tom Stellard859199d2013-11-27 21:23:29 +0000139 %130 = bitcast i32 %129 to float
140 %131 = fsub float %130, %128
141 %132 = insertelement <4 x float> undef, float %125, i32 0
142 %133 = insertelement <4 x float> %132, float %131, i32 1
143 %134 = insertelement <4 x float> %133, float %131, i32 2
144 %135 = insertelement <4 x float> %134, float %131, i32 3
145 %136 = extractelement <4 x float> %135, i32 0
146 %137 = extractelement <4 x float> %135, i32 1
147 %138 = fmul float %60, %93
148 %139 = fmul float %60, %94
149 %140 = fmul float %60, %94
150 %141 = fmul float %60, %94
151 %142 = call i32 @llvm.SI.tid()
David Blaikie79e6c742015-02-27 19:29:02 +0000152 %143 = getelementptr [64 x i32], [64 x i32] addrspace(3)* @ddxy_lds, i32 0, i32 %142
Tom Stellard859199d2013-11-27 21:23:29 +0000153 %144 = bitcast float %138 to i32
154 store i32 %144, i32 addrspace(3)* %143
155 %145 = bitcast float %139 to i32
156 store i32 %145, i32 addrspace(3)* %143
157 %146 = bitcast float %140 to i32
158 store i32 %146, i32 addrspace(3)* %143
159 %147 = bitcast float %141 to i32
160 store i32 %147, i32 addrspace(3)* %143
161 %148 = call i32 @llvm.SI.tid()
David Blaikie79e6c742015-02-27 19:29:02 +0000162 %149 = getelementptr [64 x i32], [64 x i32] addrspace(3)* @ddxy_lds, i32 0, i32 %148
Tom Stellard859199d2013-11-27 21:23:29 +0000163 %150 = and i32 %148, -4
David Blaikie79e6c742015-02-27 19:29:02 +0000164 %151 = getelementptr [64 x i32], [64 x i32] addrspace(3)* @ddxy_lds, i32 0, i32 %150
Tom Stellard859199d2013-11-27 21:23:29 +0000165 %152 = add i32 %150, 2
David Blaikie79e6c742015-02-27 19:29:02 +0000166 %153 = getelementptr [64 x i32], [64 x i32] addrspace(3)* @ddxy_lds, i32 0, i32 %152
Tom Stellard859199d2013-11-27 21:23:29 +0000167 %154 = bitcast float %138 to i32
168 store i32 %154, i32 addrspace(3)* %149
David Blaikiea79ac142015-02-27 21:17:42 +0000169 %155 = load i32, i32 addrspace(3)* %151
Tom Stellard859199d2013-11-27 21:23:29 +0000170 %156 = bitcast i32 %155 to float
David Blaikiea79ac142015-02-27 21:17:42 +0000171 %157 = load i32, i32 addrspace(3)* %153
Tom Stellard859199d2013-11-27 21:23:29 +0000172 %158 = bitcast i32 %157 to float
173 %159 = fsub float %158, %156
174 %160 = bitcast float %139 to i32
175 store i32 %160, i32 addrspace(3)* %149
David Blaikiea79ac142015-02-27 21:17:42 +0000176 %161 = load i32, i32 addrspace(3)* %151
Tom Stellard859199d2013-11-27 21:23:29 +0000177 %162 = bitcast i32 %161 to float
David Blaikiea79ac142015-02-27 21:17:42 +0000178 %163 = load i32, i32 addrspace(3)* %153
Tom Stellard859199d2013-11-27 21:23:29 +0000179 %164 = bitcast i32 %163 to float
180 %165 = fsub float %164, %162
181 %166 = bitcast float %140 to i32
182 store i32 %166, i32 addrspace(3)* %149
David Blaikiea79ac142015-02-27 21:17:42 +0000183 %167 = load i32, i32 addrspace(3)* %151
Tom Stellard859199d2013-11-27 21:23:29 +0000184 %168 = bitcast i32 %167 to float
David Blaikiea79ac142015-02-27 21:17:42 +0000185 %169 = load i32, i32 addrspace(3)* %153
Tom Stellard859199d2013-11-27 21:23:29 +0000186 %170 = bitcast i32 %169 to float
187 %171 = fsub float %170, %168
188 %172 = bitcast float %141 to i32
189 store i32 %172, i32 addrspace(3)* %149
David Blaikiea79ac142015-02-27 21:17:42 +0000190 %173 = load i32, i32 addrspace(3)* %151
Tom Stellard859199d2013-11-27 21:23:29 +0000191 %174 = bitcast i32 %173 to float
David Blaikiea79ac142015-02-27 21:17:42 +0000192 %175 = load i32, i32 addrspace(3)* %153
Tom Stellard859199d2013-11-27 21:23:29 +0000193 %176 = bitcast i32 %175 to float
194 %177 = fsub float %176, %174
195 %178 = insertelement <4 x float> undef, float %159, i32 0
196 %179 = insertelement <4 x float> %178, float %165, i32 1
197 %180 = insertelement <4 x float> %179, float %171, i32 2
198 %181 = insertelement <4 x float> %180, float %177, i32 3
199 %182 = extractelement <4 x float> %181, i32 0
200 %183 = extractelement <4 x float> %181, i32 1
201 %184 = fdiv float 1.000000e+00, %97
202 %185 = fmul float %33, %184
203 %186 = fcmp uge float 1.000000e+00, %185
204 %187 = select i1 %186, float %185, float 1.000000e+00
205 %188 = fmul float %187, %30
206 %189 = call float @ceil(float %188)
207 %190 = fcmp uge float 3.000000e+00, %189
208 %191 = select i1 %190, float 3.000000e+00, float %189
209 %192 = fdiv float 1.000000e+00, %191
210 %193 = fdiv float 1.000000e+00, %30
211 %194 = fmul float %191, %193
212 %195 = fmul float %31, %194
213 %196 = fmul float %95, %95
214 %197 = fmul float %96, %96
215 %198 = fadd float %197, %196
216 %199 = fmul float %97, %97
217 %200 = fadd float %198, %199
Matt Arsenaultbef34e22016-01-22 21:30:34 +0000218 %201 = call float @llvm.amdgcn.rsq.f32(float %200)
Tom Stellard859199d2013-11-27 21:23:29 +0000219 %202 = fmul float %95, %201
220 %203 = fmul float %96, %201
221 %204 = fmul float %202, %29
222 %205 = fmul float %203, %29
223 %206 = fmul float %204, -1.000000e+00
224 %207 = fmul float %205, 1.000000e+00
225 %208 = fmul float %206, %32
226 %209 = fmul float %207, %32
227 %210 = fsub float -0.000000e+00, %208
228 %211 = fadd float %93, %210
229 %212 = fsub float -0.000000e+00, %209
230 %213 = fadd float %94, %212
231 %214 = fmul float %206, %192
232 %215 = fmul float %207, %192
233 %216 = fmul float -1.000000e+00, %192
234 %217 = bitcast float %136 to i32
235 %218 = bitcast float %182 to i32
236 %219 = bitcast float %137 to i32
237 %220 = bitcast float %183 to i32
238 %221 = insertelement <8 x i32> undef, i32 %217, i32 0
239 %222 = insertelement <8 x i32> %221, i32 %218, i32 1
240 %223 = insertelement <8 x i32> %222, i32 %219, i32 2
241 %224 = insertelement <8 x i32> %223, i32 %220, i32 3
242 br label %LOOP
243
244LOOP: ; preds = %ENDIF, %main_body
245 %temp24.0 = phi float [ 1.000000e+00, %main_body ], [ %258, %ENDIF ]
246 %temp28.0 = phi float [ %211, %main_body ], [ %253, %ENDIF ]
247 %temp29.0 = phi float [ %213, %main_body ], [ %255, %ENDIF ]
248 %temp30.0 = phi float [ 1.000000e+00, %main_body ], [ %257, %ENDIF ]
249 %225 = fcmp oge float %temp24.0, %191
250 %226 = sext i1 %225 to i32
251 %227 = bitcast i32 %226 to float
252 %228 = bitcast float %227 to i32
253 %229 = icmp ne i32 %228, 0
254 br i1 %229, label %IF, label %ENDIF
255
256IF: ; preds = %LOOP
257 %230 = bitcast float %136 to i32
258 %231 = bitcast float %182 to i32
259 %232 = bitcast float %137 to i32
260 %233 = bitcast float %183 to i32
261 %234 = insertelement <8 x i32> undef, i32 %230, i32 0
262 %235 = insertelement <8 x i32> %234, i32 %231, i32 1
263 %236 = insertelement <8 x i32> %235, i32 %232, i32 2
264 %237 = insertelement <8 x i32> %236, i32 %233, i32 3
265 br label %LOOP65
266
267ENDIF: ; preds = %LOOP
268 %238 = bitcast float %temp28.0 to i32
269 %239 = bitcast float %temp29.0 to i32
270 %240 = insertelement <8 x i32> %224, i32 %238, i32 4
271 %241 = insertelement <8 x i32> %240, i32 %239, i32 5
272 %242 = insertelement <8 x i32> %241, i32 undef, i32 6
273 %243 = insertelement <8 x i32> %242, i32 undef, i32 7
274 %244 = call <4 x float> @llvm.SI.sampled.v8i32(<8 x i32> %243, <32 x i8> %62, <16 x i8> %64, i32 2)
275 %245 = extractelement <4 x float> %244, i32 3
276 %246 = fcmp oge float %temp30.0, %245
277 %247 = sext i1 %246 to i32
278 %248 = bitcast i32 %247 to float
279 %249 = bitcast float %248 to i32
280 %250 = and i32 %249, 1065353216
281 %251 = bitcast i32 %250 to float
282 %252 = fmul float %214, %251
283 %253 = fadd float %252, %temp28.0
284 %254 = fmul float %215, %251
285 %255 = fadd float %254, %temp29.0
286 %256 = fmul float %216, %251
287 %257 = fadd float %256, %temp30.0
288 %258 = fadd float %temp24.0, 1.000000e+00
289 br label %LOOP
290
291LOOP65: ; preds = %ENDIF66, %IF
292 %temp24.1 = phi float [ 0.000000e+00, %IF ], [ %610, %ENDIF66 ]
293 %temp28.1 = phi float [ %temp28.0, %IF ], [ %605, %ENDIF66 ]
294 %temp29.1 = phi float [ %temp29.0, %IF ], [ %607, %ENDIF66 ]
295 %temp30.1 = phi float [ %temp30.0, %IF ], [ %609, %ENDIF66 ]
296 %temp32.0 = phi float [ 1.000000e+00, %IF ], [ %611, %ENDIF66 ]
297 %259 = fcmp oge float %temp24.1, %195
298 %260 = sext i1 %259 to i32
299 %261 = bitcast i32 %260 to float
300 %262 = bitcast float %261 to i32
301 %263 = icmp ne i32 %262, 0
302 br i1 %263, label %IF67, label %ENDIF66
303
304IF67: ; preds = %LOOP65
305 %264 = bitcast float %136 to i32
306 %265 = bitcast float %182 to i32
307 %266 = bitcast float %137 to i32
308 %267 = bitcast float %183 to i32
309 %268 = bitcast float %temp28.1 to i32
310 %269 = bitcast float %temp29.1 to i32
311 %270 = insertelement <8 x i32> undef, i32 %264, i32 0
312 %271 = insertelement <8 x i32> %270, i32 %265, i32 1
313 %272 = insertelement <8 x i32> %271, i32 %266, i32 2
314 %273 = insertelement <8 x i32> %272, i32 %267, i32 3
315 %274 = insertelement <8 x i32> %273, i32 %268, i32 4
316 %275 = insertelement <8 x i32> %274, i32 %269, i32 5
317 %276 = insertelement <8 x i32> %275, i32 undef, i32 6
318 %277 = insertelement <8 x i32> %276, i32 undef, i32 7
319 %278 = call <4 x float> @llvm.SI.sampled.v8i32(<8 x i32> %277, <32 x i8> %66, <16 x i8> %68, i32 2)
320 %279 = extractelement <4 x float> %278, i32 0
321 %280 = extractelement <4 x float> %278, i32 1
322 %281 = extractelement <4 x float> %278, i32 2
323 %282 = extractelement <4 x float> %278, i32 3
324 %283 = fmul float %282, %47
325 %284 = bitcast float %136 to i32
326 %285 = bitcast float %182 to i32
327 %286 = bitcast float %137 to i32
328 %287 = bitcast float %183 to i32
329 %288 = bitcast float %temp28.1 to i32
330 %289 = bitcast float %temp29.1 to i32
331 %290 = insertelement <8 x i32> undef, i32 %284, i32 0
332 %291 = insertelement <8 x i32> %290, i32 %285, i32 1
333 %292 = insertelement <8 x i32> %291, i32 %286, i32 2
334 %293 = insertelement <8 x i32> %292, i32 %287, i32 3
335 %294 = insertelement <8 x i32> %293, i32 %288, i32 4
336 %295 = insertelement <8 x i32> %294, i32 %289, i32 5
337 %296 = insertelement <8 x i32> %295, i32 undef, i32 6
338 %297 = insertelement <8 x i32> %296, i32 undef, i32 7
339 %298 = call <4 x float> @llvm.SI.sampled.v8i32(<8 x i32> %297, <32 x i8> %82, <16 x i8> %84, i32 2)
340 %299 = extractelement <4 x float> %298, i32 0
341 %300 = extractelement <4 x float> %298, i32 1
342 %301 = extractelement <4 x float> %298, i32 2
343 %302 = bitcast float %136 to i32
344 %303 = bitcast float %182 to i32
345 %304 = bitcast float %137 to i32
346 %305 = bitcast float %183 to i32
347 %306 = bitcast float %temp28.1 to i32
348 %307 = bitcast float %temp29.1 to i32
349 %308 = insertelement <8 x i32> undef, i32 %302, i32 0
350 %309 = insertelement <8 x i32> %308, i32 %303, i32 1
351 %310 = insertelement <8 x i32> %309, i32 %304, i32 2
352 %311 = insertelement <8 x i32> %310, i32 %305, i32 3
353 %312 = insertelement <8 x i32> %311, i32 %306, i32 4
354 %313 = insertelement <8 x i32> %312, i32 %307, i32 5
355 %314 = insertelement <8 x i32> %313, i32 undef, i32 6
356 %315 = insertelement <8 x i32> %314, i32 undef, i32 7
357 %316 = call <4 x float> @llvm.SI.sampled.v8i32(<8 x i32> %315, <32 x i8> %78, <16 x i8> %80, i32 2)
358 %317 = extractelement <4 x float> %316, i32 0
359 %318 = extractelement <4 x float> %316, i32 1
360 %319 = extractelement <4 x float> %316, i32 2
361 %320 = fmul float %317, %23
362 %321 = fmul float %318, %24
363 %322 = fmul float %319, %25
364 %323 = fmul float %299, %26
365 %324 = fadd float %323, %320
366 %325 = fmul float %300, %27
367 %326 = fadd float %325, %321
368 %327 = fmul float %301, %28
369 %328 = fadd float %327, %322
370 %329 = fadd float %279, %324
371 %330 = fadd float %280, %326
372 %331 = fadd float %281, %328
373 %332 = bitcast float %136 to i32
374 %333 = bitcast float %182 to i32
375 %334 = bitcast float %137 to i32
376 %335 = bitcast float %183 to i32
377 %336 = bitcast float %temp28.1 to i32
378 %337 = bitcast float %temp29.1 to i32
379 %338 = insertelement <8 x i32> undef, i32 %332, i32 0
380 %339 = insertelement <8 x i32> %338, i32 %333, i32 1
381 %340 = insertelement <8 x i32> %339, i32 %334, i32 2
382 %341 = insertelement <8 x i32> %340, i32 %335, i32 3
383 %342 = insertelement <8 x i32> %341, i32 %336, i32 4
384 %343 = insertelement <8 x i32> %342, i32 %337, i32 5
385 %344 = insertelement <8 x i32> %343, i32 undef, i32 6
386 %345 = insertelement <8 x i32> %344, i32 undef, i32 7
387 %346 = call <4 x float> @llvm.SI.sampled.v8i32(<8 x i32> %345, <32 x i8> %62, <16 x i8> %64, i32 2)
388 %347 = extractelement <4 x float> %346, i32 0
389 %348 = extractelement <4 x float> %346, i32 1
390 %349 = extractelement <4 x float> %346, i32 2
391 %350 = fadd float %347, -5.000000e-01
392 %351 = fadd float %348, -5.000000e-01
393 %352 = fadd float %349, -5.000000e-01
394 %353 = fmul float %350, %350
395 %354 = fmul float %351, %351
396 %355 = fadd float %354, %353
397 %356 = fmul float %352, %352
398 %357 = fadd float %355, %356
Matt Arsenaultbef34e22016-01-22 21:30:34 +0000399 %358 = call float @llvm.amdgcn.rsq.f32(float %357)
Tom Stellard859199d2013-11-27 21:23:29 +0000400 %359 = fmul float %350, %358
401 %360 = fmul float %351, %358
402 %361 = fmul float %352, %358
403 %362 = bitcast float %136 to i32
404 %363 = bitcast float %182 to i32
405 %364 = bitcast float %137 to i32
406 %365 = bitcast float %183 to i32
407 %366 = bitcast float %temp28.1 to i32
408 %367 = bitcast float %temp29.1 to i32
409 %368 = insertelement <8 x i32> undef, i32 %362, i32 0
410 %369 = insertelement <8 x i32> %368, i32 %363, i32 1
411 %370 = insertelement <8 x i32> %369, i32 %364, i32 2
412 %371 = insertelement <8 x i32> %370, i32 %365, i32 3
413 %372 = insertelement <8 x i32> %371, i32 %366, i32 4
414 %373 = insertelement <8 x i32> %372, i32 %367, i32 5
415 %374 = insertelement <8 x i32> %373, i32 undef, i32 6
416 %375 = insertelement <8 x i32> %374, i32 undef, i32 7
417 %376 = call <4 x float> @llvm.SI.sampled.v8i32(<8 x i32> %375, <32 x i8> %70, <16 x i8> %72, i32 2)
418 %377 = extractelement <4 x float> %376, i32 0
419 %378 = extractelement <4 x float> %376, i32 1
420 %379 = extractelement <4 x float> %376, i32 2
421 %380 = extractelement <4 x float> %376, i32 3
422 %381 = fsub float -0.000000e+00, %95
423 %382 = fsub float -0.000000e+00, %96
424 %383 = fsub float -0.000000e+00, %97
425 %384 = fmul float %359, %381
426 %385 = fmul float %360, %382
427 %386 = fadd float %385, %384
428 %387 = fmul float %361, %383
429 %388 = fadd float %386, %387
430 %389 = fmul float %388, %359
431 %390 = fmul float %388, %360
432 %391 = fmul float %388, %361
433 %392 = fmul float 2.000000e+00, %389
434 %393 = fmul float 2.000000e+00, %390
435 %394 = fmul float 2.000000e+00, %391
436 %395 = fsub float -0.000000e+00, %392
437 %396 = fadd float %381, %395
438 %397 = fsub float -0.000000e+00, %393
439 %398 = fadd float %382, %397
440 %399 = fsub float -0.000000e+00, %394
441 %400 = fadd float %383, %399
442 %401 = fmul float %396, %98
443 %402 = fmul float %396, %99
444 %403 = fmul float %396, %100
445 %404 = fmul float %398, %101
446 %405 = fadd float %404, %401
447 %406 = fmul float %398, %102
448 %407 = fadd float %406, %402
449 %408 = fmul float %398, %103
450 %409 = fadd float %408, %403
451 %410 = fmul float %400, %104
452 %411 = fadd float %410, %405
453 %412 = fmul float %400, %105
454 %413 = fadd float %412, %407
455 %414 = fmul float %400, %106
456 %415 = fadd float %414, %409
457 %416 = bitcast float %136 to i32
458 %417 = bitcast float %182 to i32
459 %418 = bitcast float %137 to i32
460 %419 = bitcast float %183 to i32
461 %420 = bitcast float %temp28.1 to i32
462 %421 = bitcast float %temp29.1 to i32
463 %422 = insertelement <8 x i32> undef, i32 %416, i32 0
464 %423 = insertelement <8 x i32> %422, i32 %417, i32 1
465 %424 = insertelement <8 x i32> %423, i32 %418, i32 2
466 %425 = insertelement <8 x i32> %424, i32 %419, i32 3
467 %426 = insertelement <8 x i32> %425, i32 %420, i32 4
468 %427 = insertelement <8 x i32> %426, i32 %421, i32 5
469 %428 = insertelement <8 x i32> %427, i32 undef, i32 6
470 %429 = insertelement <8 x i32> %428, i32 undef, i32 7
471 %430 = call <4 x float> @llvm.SI.sampled.v8i32(<8 x i32> %429, <32 x i8> %86, <16 x i8> %88, i32 2)
472 %431 = extractelement <4 x float> %430, i32 0
473 %432 = extractelement <4 x float> %430, i32 1
474 %433 = extractelement <4 x float> %430, i32 2
475 %434 = fmul float %48, %411
476 %435 = fmul float %49, %411
477 %436 = fmul float %50, %411
478 %437 = fmul float %51, %413
479 %438 = fadd float %437, %434
480 %439 = fmul float %52, %413
481 %440 = fadd float %439, %435
482 %441 = fmul float %53, %413
483 %442 = fadd float %441, %436
484 %443 = fmul float %54, %415
485 %444 = fadd float %443, %438
486 %445 = fmul float %55, %415
487 %446 = fadd float %445, %440
488 %447 = fmul float %56, %415
489 %448 = fadd float %447, %442
490 %449 = insertelement <4 x float> undef, float %444, i32 0
491 %450 = insertelement <4 x float> %449, float %446, i32 1
492 %451 = insertelement <4 x float> %450, float %448, i32 2
493 %452 = insertelement <4 x float> %451, float %195, i32 3
494 %453 = call <4 x float> @llvm.AMDGPU.cube(<4 x float> %452)
495 %454 = extractelement <4 x float> %453, i32 0
496 %455 = extractelement <4 x float> %453, i32 1
497 %456 = extractelement <4 x float> %453, i32 2
498 %457 = extractelement <4 x float> %453, i32 3
499 %458 = call float @fabs(float %456)
500 %459 = fdiv float 1.000000e+00, %458
501 %460 = fmul float %454, %459
502 %461 = fadd float %460, 1.500000e+00
503 %462 = fmul float %455, %459
504 %463 = fadd float %462, 1.500000e+00
505 %464 = bitcast float %463 to i32
506 %465 = bitcast float %461 to i32
507 %466 = bitcast float %457 to i32
508 %467 = insertelement <4 x i32> undef, i32 %464, i32 0
509 %468 = insertelement <4 x i32> %467, i32 %465, i32 1
510 %469 = insertelement <4 x i32> %468, i32 %466, i32 2
511 %470 = insertelement <4 x i32> %469, i32 undef, i32 3
512 %471 = call <4 x float> @llvm.SI.sample.v4i32(<4 x i32> %470, <32 x i8> %90, <16 x i8> %92, i32 4)
513 %472 = extractelement <4 x float> %471, i32 0
514 %473 = extractelement <4 x float> %471, i32 1
515 %474 = extractelement <4 x float> %471, i32 2
516 %475 = fmul float %431, %472
517 %476 = fadd float %475, %329
518 %477 = fmul float %432, %473
519 %478 = fadd float %477, %330
520 %479 = fmul float %433, %474
521 %480 = fadd float %479, %331
522 %481 = fmul float %107, %107
523 %482 = fmul float %108, %108
524 %483 = fadd float %482, %481
525 %484 = fmul float %109, %109
526 %485 = fadd float %483, %484
Matt Arsenaultbef34e22016-01-22 21:30:34 +0000527 %486 = call float @llvm.amdgcn.rsq.f32(float %485)
Tom Stellard859199d2013-11-27 21:23:29 +0000528 %487 = fmul float %107, %486
529 %488 = fmul float %108, %486
530 %489 = fmul float %109, %486
531 %490 = fmul float %377, %40
532 %491 = fmul float %378, %41
533 %492 = fmul float %379, %42
534 %493 = fmul float %359, %487
535 %494 = fmul float %360, %488
536 %495 = fadd float %494, %493
537 %496 = fmul float %361, %489
538 %497 = fadd float %495, %496
539 %498 = fmul float %497, %359
540 %499 = fmul float %497, %360
541 %500 = fmul float %497, %361
542 %501 = fmul float 2.000000e+00, %498
543 %502 = fmul float 2.000000e+00, %499
544 %503 = fmul float 2.000000e+00, %500
545 %504 = fsub float -0.000000e+00, %501
546 %505 = fadd float %487, %504
547 %506 = fsub float -0.000000e+00, %502
548 %507 = fadd float %488, %506
549 %508 = fsub float -0.000000e+00, %503
550 %509 = fadd float %489, %508
551 %510 = fmul float %95, %95
552 %511 = fmul float %96, %96
553 %512 = fadd float %511, %510
554 %513 = fmul float %97, %97
555 %514 = fadd float %512, %513
Matt Arsenaultbef34e22016-01-22 21:30:34 +0000556 %515 = call float @llvm.amdgcn.rsq.f32(float %514)
Tom Stellard859199d2013-11-27 21:23:29 +0000557 %516 = fmul float %95, %515
558 %517 = fmul float %96, %515
559 %518 = fmul float %97, %515
560 %519 = fmul float %505, %516
561 %520 = fmul float %507, %517
562 %521 = fadd float %520, %519
563 %522 = fmul float %509, %518
564 %523 = fadd float %521, %522
565 %524 = fsub float -0.000000e+00, %523
566 %525 = fcmp uge float %524, 0.000000e+00
567 %526 = select i1 %525, float %524, float 0.000000e+00
568 %527 = fmul float %43, %380
569 %528 = fadd float %527, 1.000000e+00
570 %529 = call float @llvm.pow.f32(float %526, float %528)
571 %530 = fmul float %476, %37
572 %531 = fmul float %478, %38
573 %532 = fmul float %480, %39
574 %533 = fmul float %359, %487
575 %534 = fmul float %360, %488
576 %535 = fadd float %534, %533
577 %536 = fmul float %361, %489
578 %537 = fadd float %535, %536
579 %538 = fcmp uge float %537, 0.000000e+00
580 %539 = select i1 %538, float %537, float 0.000000e+00
581 %540 = fmul float %530, %539
582 %541 = fmul float %531, %539
583 %542 = fmul float %532, %539
584 %543 = fmul float %490, %529
585 %544 = fadd float %543, %540
586 %545 = fmul float %491, %529
587 %546 = fadd float %545, %541
588 %547 = fmul float %492, %529
589 %548 = fadd float %547, %542
590 %549 = fmul float %476, %34
591 %550 = fmul float %478, %35
592 %551 = fmul float %480, %36
593 %552 = fmul float %544, %57
594 %553 = fadd float %552, %549
595 %554 = fmul float %546, %58
596 %555 = fadd float %554, %550
597 %556 = fmul float %548, %59
598 %557 = fadd float %556, %551
599 %558 = bitcast float %136 to i32
600 %559 = bitcast float %182 to i32
601 %560 = bitcast float %137 to i32
602 %561 = bitcast float %183 to i32
603 %562 = bitcast float %temp28.1 to i32
604 %563 = bitcast float %temp29.1 to i32
605 %564 = insertelement <8 x i32> undef, i32 %558, i32 0
606 %565 = insertelement <8 x i32> %564, i32 %559, i32 1
607 %566 = insertelement <8 x i32> %565, i32 %560, i32 2
608 %567 = insertelement <8 x i32> %566, i32 %561, i32 3
609 %568 = insertelement <8 x i32> %567, i32 %562, i32 4
610 %569 = insertelement <8 x i32> %568, i32 %563, i32 5
611 %570 = insertelement <8 x i32> %569, i32 undef, i32 6
612 %571 = insertelement <8 x i32> %570, i32 undef, i32 7
613 %572 = call <4 x float> @llvm.SI.sampled.v8i32(<8 x i32> %571, <32 x i8> %74, <16 x i8> %76, i32 2)
614 %573 = extractelement <4 x float> %572, i32 0
615 %574 = extractelement <4 x float> %572, i32 1
616 %575 = extractelement <4 x float> %572, i32 2
617 %576 = fmul float %573, %44
618 %577 = fadd float %576, %553
619 %578 = fmul float %574, %45
620 %579 = fadd float %578, %555
621 %580 = fmul float %575, %46
622 %581 = fadd float %580, %557
623 %582 = call i32 @llvm.SI.packf16(float %577, float %579)
624 %583 = bitcast i32 %582 to float
625 %584 = call i32 @llvm.SI.packf16(float %581, float %283)
626 %585 = bitcast i32 %584 to float
627 call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %583, float %585, float %583, float %585)
628 ret void
629
630ENDIF66: ; preds = %LOOP65
631 %586 = bitcast float %temp28.1 to i32
632 %587 = bitcast float %temp29.1 to i32
633 %588 = insertelement <8 x i32> %237, i32 %586, i32 4
634 %589 = insertelement <8 x i32> %588, i32 %587, i32 5
635 %590 = insertelement <8 x i32> %589, i32 undef, i32 6
636 %591 = insertelement <8 x i32> %590, i32 undef, i32 7
637 %592 = call <4 x float> @llvm.SI.sampled.v8i32(<8 x i32> %591, <32 x i8> %62, <16 x i8> %64, i32 2)
638 %593 = extractelement <4 x float> %592, i32 3
639 %594 = fcmp oge float %temp30.1, %593
640 %595 = sext i1 %594 to i32
641 %596 = bitcast i32 %595 to float
642 %597 = bitcast float %596 to i32
643 %598 = and i32 %597, 1065353216
644 %599 = bitcast i32 %598 to float
645 %600 = fmul float 5.000000e-01, %temp32.0
646 %601 = fsub float -0.000000e+00, %600
647 %602 = fmul float %599, %temp32.0
648 %603 = fadd float %602, %601
649 %604 = fmul float %214, %603
650 %605 = fadd float %604, %temp28.1
651 %606 = fmul float %215, %603
652 %607 = fadd float %606, %temp29.1
653 %608 = fmul float %216, %603
654 %609 = fadd float %608, %temp30.1
655 %610 = fadd float %temp24.1, 1.000000e+00
656 %611 = fmul float %temp32.0, 5.000000e-01
657 br label %LOOP65
658}
659
Tom Stellard79243d92014-10-01 17:15:17 +0000660; CHECK-LABEL: {{^}}main1:
Tom Stellard326d6ec2014-11-05 14:50:53 +0000661; CHECK: s_endpgm
Matt Arsenault77131622016-01-23 05:42:38 +0000662define void @main1([17 x <16 x i8>] addrspace(2)* byval, [32 x <16 x i8>] addrspace(2)* byval, [16 x <32 x i8>] 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, float, float, float, float) #1 {
Tom Stellardc149dc02013-11-27 21:23:35 +0000663main_body:
David Blaikie79e6c742015-02-27 19:29:02 +0000664 %21 = getelementptr [17 x <16 x i8>], [17 x <16 x i8>] addrspace(2)* %0, i64 0, i32 0
David Blaikiea79ac142015-02-27 21:17:42 +0000665 %22 = load <16 x i8>, <16 x i8> addrspace(2)* %21, !tbaa !0
Tom Stellardc149dc02013-11-27 21:23:35 +0000666 %23 = call float @llvm.SI.load.const(<16 x i8> %22, i32 0)
667 %24 = call float @llvm.SI.load.const(<16 x i8> %22, i32 4)
668 %25 = call float @llvm.SI.load.const(<16 x i8> %22, i32 8)
669 %26 = call float @llvm.SI.load.const(<16 x i8> %22, i32 12)
670 %27 = call float @llvm.SI.load.const(<16 x i8> %22, i32 28)
671 %28 = call float @llvm.SI.load.const(<16 x i8> %22, i32 48)
672 %29 = call float @llvm.SI.load.const(<16 x i8> %22, i32 52)
673 %30 = call float @llvm.SI.load.const(<16 x i8> %22, i32 56)
674 %31 = call float @llvm.SI.load.const(<16 x i8> %22, i32 64)
675 %32 = call float @llvm.SI.load.const(<16 x i8> %22, i32 68)
676 %33 = call float @llvm.SI.load.const(<16 x i8> %22, i32 72)
677 %34 = call float @llvm.SI.load.const(<16 x i8> %22, i32 76)
678 %35 = call float @llvm.SI.load.const(<16 x i8> %22, i32 128)
679 %36 = call float @llvm.SI.load.const(<16 x i8> %22, i32 132)
680 %37 = call float @llvm.SI.load.const(<16 x i8> %22, i32 144)
681 %38 = call float @llvm.SI.load.const(<16 x i8> %22, i32 148)
682 %39 = call float @llvm.SI.load.const(<16 x i8> %22, i32 152)
683 %40 = call float @llvm.SI.load.const(<16 x i8> %22, i32 160)
684 %41 = call float @llvm.SI.load.const(<16 x i8> %22, i32 164)
685 %42 = call float @llvm.SI.load.const(<16 x i8> %22, i32 168)
686 %43 = call float @llvm.SI.load.const(<16 x i8> %22, i32 172)
687 %44 = call float @llvm.SI.load.const(<16 x i8> %22, i32 176)
688 %45 = call float @llvm.SI.load.const(<16 x i8> %22, i32 180)
689 %46 = call float @llvm.SI.load.const(<16 x i8> %22, i32 184)
690 %47 = call float @llvm.SI.load.const(<16 x i8> %22, i32 192)
691 %48 = call float @llvm.SI.load.const(<16 x i8> %22, i32 196)
692 %49 = call float @llvm.SI.load.const(<16 x i8> %22, i32 200)
693 %50 = call float @llvm.SI.load.const(<16 x i8> %22, i32 208)
694 %51 = call float @llvm.SI.load.const(<16 x i8> %22, i32 212)
695 %52 = call float @llvm.SI.load.const(<16 x i8> %22, i32 216)
696 %53 = call float @llvm.SI.load.const(<16 x i8> %22, i32 220)
697 %54 = call float @llvm.SI.load.const(<16 x i8> %22, i32 236)
698 %55 = call float @llvm.SI.load.const(<16 x i8> %22, i32 240)
699 %56 = call float @llvm.SI.load.const(<16 x i8> %22, i32 244)
700 %57 = call float @llvm.SI.load.const(<16 x i8> %22, i32 248)
701 %58 = call float @llvm.SI.load.const(<16 x i8> %22, i32 252)
702 %59 = call float @llvm.SI.load.const(<16 x i8> %22, i32 256)
703 %60 = call float @llvm.SI.load.const(<16 x i8> %22, i32 260)
704 %61 = call float @llvm.SI.load.const(<16 x i8> %22, i32 264)
705 %62 = call float @llvm.SI.load.const(<16 x i8> %22, i32 268)
706 %63 = call float @llvm.SI.load.const(<16 x i8> %22, i32 272)
707 %64 = call float @llvm.SI.load.const(<16 x i8> %22, i32 276)
708 %65 = call float @llvm.SI.load.const(<16 x i8> %22, i32 280)
709 %66 = call float @llvm.SI.load.const(<16 x i8> %22, i32 284)
710 %67 = call float @llvm.SI.load.const(<16 x i8> %22, i32 288)
711 %68 = call float @llvm.SI.load.const(<16 x i8> %22, i32 292)
712 %69 = call float @llvm.SI.load.const(<16 x i8> %22, i32 464)
713 %70 = call float @llvm.SI.load.const(<16 x i8> %22, i32 468)
714 %71 = call float @llvm.SI.load.const(<16 x i8> %22, i32 472)
715 %72 = call float @llvm.SI.load.const(<16 x i8> %22, i32 496)
716 %73 = call float @llvm.SI.load.const(<16 x i8> %22, i32 500)
717 %74 = call float @llvm.SI.load.const(<16 x i8> %22, i32 504)
718 %75 = call float @llvm.SI.load.const(<16 x i8> %22, i32 512)
719 %76 = call float @llvm.SI.load.const(<16 x i8> %22, i32 516)
720 %77 = call float @llvm.SI.load.const(<16 x i8> %22, i32 524)
721 %78 = call float @llvm.SI.load.const(<16 x i8> %22, i32 532)
722 %79 = call float @llvm.SI.load.const(<16 x i8> %22, i32 536)
723 %80 = call float @llvm.SI.load.const(<16 x i8> %22, i32 540)
724 %81 = call float @llvm.SI.load.const(<16 x i8> %22, i32 544)
725 %82 = call float @llvm.SI.load.const(<16 x i8> %22, i32 548)
726 %83 = call float @llvm.SI.load.const(<16 x i8> %22, i32 552)
727 %84 = call float @llvm.SI.load.const(<16 x i8> %22, i32 556)
728 %85 = call float @llvm.SI.load.const(<16 x i8> %22, i32 560)
729 %86 = call float @llvm.SI.load.const(<16 x i8> %22, i32 564)
730 %87 = call float @llvm.SI.load.const(<16 x i8> %22, i32 568)
731 %88 = call float @llvm.SI.load.const(<16 x i8> %22, i32 572)
732 %89 = call float @llvm.SI.load.const(<16 x i8> %22, i32 576)
733 %90 = call float @llvm.SI.load.const(<16 x i8> %22, i32 580)
734 %91 = call float @llvm.SI.load.const(<16 x i8> %22, i32 584)
735 %92 = call float @llvm.SI.load.const(<16 x i8> %22, i32 588)
736 %93 = call float @llvm.SI.load.const(<16 x i8> %22, i32 592)
737 %94 = call float @llvm.SI.load.const(<16 x i8> %22, i32 596)
738 %95 = call float @llvm.SI.load.const(<16 x i8> %22, i32 600)
739 %96 = call float @llvm.SI.load.const(<16 x i8> %22, i32 604)
740 %97 = call float @llvm.SI.load.const(<16 x i8> %22, i32 608)
741 %98 = call float @llvm.SI.load.const(<16 x i8> %22, i32 612)
742 %99 = call float @llvm.SI.load.const(<16 x i8> %22, i32 616)
743 %100 = call float @llvm.SI.load.const(<16 x i8> %22, i32 624)
744 %101 = call float @llvm.SI.load.const(<16 x i8> %22, i32 628)
745 %102 = call float @llvm.SI.load.const(<16 x i8> %22, i32 632)
746 %103 = call float @llvm.SI.load.const(<16 x i8> %22, i32 636)
747 %104 = call float @llvm.SI.load.const(<16 x i8> %22, i32 640)
748 %105 = call float @llvm.SI.load.const(<16 x i8> %22, i32 644)
749 %106 = call float @llvm.SI.load.const(<16 x i8> %22, i32 648)
750 %107 = call float @llvm.SI.load.const(<16 x i8> %22, i32 652)
751 %108 = call float @llvm.SI.load.const(<16 x i8> %22, i32 656)
752 %109 = call float @llvm.SI.load.const(<16 x i8> %22, i32 660)
753 %110 = call float @llvm.SI.load.const(<16 x i8> %22, i32 664)
754 %111 = call float @llvm.SI.load.const(<16 x i8> %22, i32 668)
755 %112 = call float @llvm.SI.load.const(<16 x i8> %22, i32 672)
756 %113 = call float @llvm.SI.load.const(<16 x i8> %22, i32 676)
757 %114 = call float @llvm.SI.load.const(<16 x i8> %22, i32 680)
758 %115 = call float @llvm.SI.load.const(<16 x i8> %22, i32 684)
759 %116 = call float @llvm.SI.load.const(<16 x i8> %22, i32 688)
760 %117 = call float @llvm.SI.load.const(<16 x i8> %22, i32 692)
761 %118 = call float @llvm.SI.load.const(<16 x i8> %22, i32 696)
762 %119 = call float @llvm.SI.load.const(<16 x i8> %22, i32 700)
763 %120 = call float @llvm.SI.load.const(<16 x i8> %22, i32 704)
764 %121 = call float @llvm.SI.load.const(<16 x i8> %22, i32 708)
765 %122 = call float @llvm.SI.load.const(<16 x i8> %22, i32 712)
766 %123 = call float @llvm.SI.load.const(<16 x i8> %22, i32 716)
767 %124 = call float @llvm.SI.load.const(<16 x i8> %22, i32 864)
768 %125 = call float @llvm.SI.load.const(<16 x i8> %22, i32 868)
David Blaikie79e6c742015-02-27 19:29:02 +0000769 %126 = getelementptr [16 x <32 x i8>], [16 x <32 x i8>] addrspace(2)* %2, i64 0, i32 0
David Blaikiea79ac142015-02-27 21:17:42 +0000770 %127 = load <32 x i8>, <32 x i8> addrspace(2)* %126, !tbaa !0
David Blaikie79e6c742015-02-27 19:29:02 +0000771 %128 = getelementptr [32 x <16 x i8>], [32 x <16 x i8>] addrspace(2)* %1, i64 0, i32 0
David Blaikiea79ac142015-02-27 21:17:42 +0000772 %129 = load <16 x i8>, <16 x i8> addrspace(2)* %128, !tbaa !0
David Blaikie79e6c742015-02-27 19:29:02 +0000773 %130 = getelementptr [16 x <32 x i8>], [16 x <32 x i8>] addrspace(2)* %2, i64 0, i32 1
David Blaikiea79ac142015-02-27 21:17:42 +0000774 %131 = load <32 x i8>, <32 x i8> addrspace(2)* %130, !tbaa !0
David Blaikie79e6c742015-02-27 19:29:02 +0000775 %132 = getelementptr [32 x <16 x i8>], [32 x <16 x i8>] addrspace(2)* %1, i64 0, i32 1
David Blaikiea79ac142015-02-27 21:17:42 +0000776 %133 = load <16 x i8>, <16 x i8> addrspace(2)* %132, !tbaa !0
David Blaikie79e6c742015-02-27 19:29:02 +0000777 %134 = getelementptr [16 x <32 x i8>], [16 x <32 x i8>] addrspace(2)* %2, i64 0, i32 2
David Blaikiea79ac142015-02-27 21:17:42 +0000778 %135 = load <32 x i8>, <32 x i8> addrspace(2)* %134, !tbaa !0
David Blaikie79e6c742015-02-27 19:29:02 +0000779 %136 = getelementptr [32 x <16 x i8>], [32 x <16 x i8>] addrspace(2)* %1, i64 0, i32 2
David Blaikiea79ac142015-02-27 21:17:42 +0000780 %137 = load <16 x i8>, <16 x i8> addrspace(2)* %136, !tbaa !0
David Blaikie79e6c742015-02-27 19:29:02 +0000781 %138 = getelementptr [16 x <32 x i8>], [16 x <32 x i8>] addrspace(2)* %2, i64 0, i32 3
David Blaikiea79ac142015-02-27 21:17:42 +0000782 %139 = load <32 x i8>, <32 x i8> addrspace(2)* %138, !tbaa !0
David Blaikie79e6c742015-02-27 19:29:02 +0000783 %140 = getelementptr [32 x <16 x i8>], [32 x <16 x i8>] addrspace(2)* %1, i64 0, i32 3
David Blaikiea79ac142015-02-27 21:17:42 +0000784 %141 = load <16 x i8>, <16 x i8> addrspace(2)* %140, !tbaa !0
David Blaikie79e6c742015-02-27 19:29:02 +0000785 %142 = getelementptr [16 x <32 x i8>], [16 x <32 x i8>] addrspace(2)* %2, i64 0, i32 4
David Blaikiea79ac142015-02-27 21:17:42 +0000786 %143 = load <32 x i8>, <32 x i8> addrspace(2)* %142, !tbaa !0
David Blaikie79e6c742015-02-27 19:29:02 +0000787 %144 = getelementptr [32 x <16 x i8>], [32 x <16 x i8>] addrspace(2)* %1, i64 0, i32 4
David Blaikiea79ac142015-02-27 21:17:42 +0000788 %145 = load <16 x i8>, <16 x i8> addrspace(2)* %144, !tbaa !0
David Blaikie79e6c742015-02-27 19:29:02 +0000789 %146 = getelementptr [16 x <32 x i8>], [16 x <32 x i8>] addrspace(2)* %2, i64 0, i32 5
David Blaikiea79ac142015-02-27 21:17:42 +0000790 %147 = load <32 x i8>, <32 x i8> addrspace(2)* %146, !tbaa !0
David Blaikie79e6c742015-02-27 19:29:02 +0000791 %148 = getelementptr [32 x <16 x i8>], [32 x <16 x i8>] addrspace(2)* %1, i64 0, i32 5
David Blaikiea79ac142015-02-27 21:17:42 +0000792 %149 = load <16 x i8>, <16 x i8> addrspace(2)* %148, !tbaa !0
David Blaikie79e6c742015-02-27 19:29:02 +0000793 %150 = getelementptr [16 x <32 x i8>], [16 x <32 x i8>] addrspace(2)* %2, i64 0, i32 6
David Blaikiea79ac142015-02-27 21:17:42 +0000794 %151 = load <32 x i8>, <32 x i8> addrspace(2)* %150, !tbaa !0
David Blaikie79e6c742015-02-27 19:29:02 +0000795 %152 = getelementptr [32 x <16 x i8>], [32 x <16 x i8>] addrspace(2)* %1, i64 0, i32 6
David Blaikiea79ac142015-02-27 21:17:42 +0000796 %153 = load <16 x i8>, <16 x i8> addrspace(2)* %152, !tbaa !0
David Blaikie79e6c742015-02-27 19:29:02 +0000797 %154 = getelementptr [16 x <32 x i8>], [16 x <32 x i8>] addrspace(2)* %2, i64 0, i32 7
David Blaikiea79ac142015-02-27 21:17:42 +0000798 %155 = load <32 x i8>, <32 x i8> addrspace(2)* %154, !tbaa !0
David Blaikie79e6c742015-02-27 19:29:02 +0000799 %156 = getelementptr [32 x <16 x i8>], [32 x <16 x i8>] addrspace(2)* %1, i64 0, i32 7
David Blaikiea79ac142015-02-27 21:17:42 +0000800 %157 = load <16 x i8>, <16 x i8> addrspace(2)* %156, !tbaa !0
David Blaikie79e6c742015-02-27 19:29:02 +0000801 %158 = getelementptr [16 x <32 x i8>], [16 x <32 x i8>] addrspace(2)* %2, i64 0, i32 8
David Blaikiea79ac142015-02-27 21:17:42 +0000802 %159 = load <32 x i8>, <32 x i8> addrspace(2)* %158, !tbaa !0
David Blaikie79e6c742015-02-27 19:29:02 +0000803 %160 = getelementptr [32 x <16 x i8>], [32 x <16 x i8>] addrspace(2)* %1, i64 0, i32 8
David Blaikiea79ac142015-02-27 21:17:42 +0000804 %161 = load <16 x i8>, <16 x i8> addrspace(2)* %160, !tbaa !0
Tom Stellardc149dc02013-11-27 21:23:35 +0000805 %162 = fcmp ugt float %17, 0.000000e+00
806 %163 = select i1 %162, float 1.000000e+00, float 0.000000e+00
807 %164 = call float @llvm.SI.fs.interp(i32 0, i32 0, i32 %4, <2 x i32> %6)
808 %165 = call float @llvm.SI.fs.interp(i32 1, i32 0, i32 %4, <2 x i32> %6)
809 %166 = call float @llvm.SI.fs.interp(i32 2, i32 0, i32 %4, <2 x i32> %6)
810 %167 = call float @llvm.SI.fs.interp(i32 3, i32 0, i32 %4, <2 x i32> %6)
811 %168 = call float @llvm.SI.fs.interp(i32 0, i32 1, i32 %4, <2 x i32> %6)
812 %169 = call float @llvm.SI.fs.interp(i32 1, i32 1, i32 %4, <2 x i32> %6)
813 %170 = call float @llvm.SI.fs.interp(i32 2, i32 1, i32 %4, <2 x i32> %6)
814 %171 = call float @llvm.SI.fs.interp(i32 3, i32 1, i32 %4, <2 x i32> %6)
815 %172 = call float @llvm.SI.fs.interp(i32 0, i32 2, i32 %4, <2 x i32> %6)
816 %173 = call float @llvm.SI.fs.interp(i32 1, i32 2, i32 %4, <2 x i32> %6)
817 %174 = call float @llvm.SI.fs.interp(i32 2, i32 2, i32 %4, <2 x i32> %6)
818 %175 = call float @llvm.SI.fs.interp(i32 3, i32 2, i32 %4, <2 x i32> %6)
819 %176 = call float @llvm.SI.fs.interp(i32 0, i32 3, i32 %4, <2 x i32> %6)
820 %177 = call float @llvm.SI.fs.interp(i32 1, i32 3, i32 %4, <2 x i32> %6)
821 %178 = call float @llvm.SI.fs.interp(i32 2, i32 3, i32 %4, <2 x i32> %6)
822 %179 = call float @llvm.SI.fs.interp(i32 3, i32 3, i32 %4, <2 x i32> %6)
823 %180 = call float @llvm.SI.fs.interp(i32 0, i32 4, i32 %4, <2 x i32> %6)
824 %181 = call float @llvm.SI.fs.interp(i32 1, i32 4, i32 %4, <2 x i32> %6)
825 %182 = call float @llvm.SI.fs.interp(i32 2, i32 4, i32 %4, <2 x i32> %6)
826 %183 = call float @llvm.SI.fs.interp(i32 3, i32 4, i32 %4, <2 x i32> %6)
827 %184 = call float @llvm.SI.fs.interp(i32 0, i32 5, i32 %4, <2 x i32> %6)
828 %185 = call float @llvm.SI.fs.interp(i32 1, i32 5, i32 %4, <2 x i32> %6)
829 %186 = call float @llvm.SI.fs.interp(i32 2, i32 5, i32 %4, <2 x i32> %6)
830 %187 = call float @llvm.SI.fs.interp(i32 3, i32 5, i32 %4, <2 x i32> %6)
831 %188 = call float @llvm.SI.fs.interp(i32 0, i32 6, i32 %4, <2 x i32> %6)
832 %189 = call float @llvm.SI.fs.interp(i32 1, i32 6, i32 %4, <2 x i32> %6)
833 %190 = call float @llvm.SI.fs.interp(i32 2, i32 6, i32 %4, <2 x i32> %6)
834 %191 = call float @llvm.SI.fs.interp(i32 3, i32 6, i32 %4, <2 x i32> %6)
835 %192 = call float @llvm.SI.fs.interp(i32 0, i32 7, i32 %4, <2 x i32> %6)
836 %193 = call float @llvm.SI.fs.interp(i32 1, i32 7, i32 %4, <2 x i32> %6)
837 %194 = call float @llvm.SI.fs.interp(i32 2, i32 7, i32 %4, <2 x i32> %6)
838 %195 = call float @llvm.SI.fs.interp(i32 3, i32 7, i32 %4, <2 x i32> %6)
839 %196 = fmul float %14, %124
840 %197 = fadd float %196, %125
841 %198 = call float @llvm.AMDIL.clamp.(float %163, float 0.000000e+00, float 1.000000e+00)
842 %199 = call float @llvm.AMDIL.clamp.(float 0.000000e+00, float 0.000000e+00, float 1.000000e+00)
843 %200 = call float @llvm.AMDIL.clamp.(float 0.000000e+00, float 0.000000e+00, float 1.000000e+00)
844 %201 = call float @llvm.AMDIL.clamp.(float 1.000000e+00, float 0.000000e+00, float 1.000000e+00)
845 %202 = bitcast float %198 to i32
846 %203 = icmp ne i32 %202, 0
847 %. = select i1 %203, float -1.000000e+00, float 1.000000e+00
848 %204 = fsub float -0.000000e+00, %164
849 %205 = fadd float %44, %204
850 %206 = fsub float -0.000000e+00, %165
851 %207 = fadd float %45, %206
852 %208 = fsub float -0.000000e+00, %166
853 %209 = fadd float %46, %208
854 %210 = fmul float %205, %205
855 %211 = fmul float %207, %207
856 %212 = fadd float %211, %210
857 %213 = fmul float %209, %209
858 %214 = fadd float %212, %213
Matt Arsenaultbef34e22016-01-22 21:30:34 +0000859 %215 = call float @llvm.amdgcn.rsq.f32(float %214)
Tom Stellardc149dc02013-11-27 21:23:35 +0000860 %216 = fmul float %205, %215
861 %217 = fmul float %207, %215
862 %218 = fmul float %209, %215
863 %219 = fmul float %., %54
864 %220 = fmul float %13, %47
865 %221 = fmul float %197, %48
866 %222 = bitcast float %174 to i32
867 %223 = bitcast float %175 to i32
868 %224 = insertelement <2 x i32> undef, i32 %222, i32 0
869 %225 = insertelement <2 x i32> %224, i32 %223, i32 1
870 %226 = call <4 x float> @llvm.SI.sample.v2i32(<2 x i32> %225, <32 x i8> %131, <16 x i8> %133, i32 2)
871 %227 = extractelement <4 x float> %226, i32 0
872 %228 = extractelement <4 x float> %226, i32 1
873 %229 = extractelement <4 x float> %226, i32 2
874 %230 = extractelement <4 x float> %226, i32 3
875 %231 = fmul float %227, 0x4012611180000000
876 %232 = fmul float %228, 0x4012611180000000
877 %233 = fmul float %229, 0x4012611180000000
Matt Arsenault77131622016-01-23 05:42:38 +0000878 %one.sub.a.i = fsub float 1.000000e+00, %27
879 %result.i = fadd float %231, %one.sub.a.i
880 %one.sub.a.i43 = fsub float 1.000000e+00, %27
881 %result.i44 = fadd float %232, %one.sub.a.i43
882 %one.sub.a.i41 = fsub float 1.000000e+00, %27
883 %result.i42 = fadd float %233, %one.sub.a.i41
884 %234 = fmul float %216, %184
885 %235 = fmul float %217, %185
886 %236 = fadd float %235, %234
887 %237 = fmul float %218, %186
888 %238 = fadd float %236, %237
889 %239 = fmul float %216, %187
890 %240 = fmul float %217, %188
891 %241 = fadd float %240, %239
892 %242 = fmul float %218, %189
893 %243 = fadd float %241, %242
894 %244 = fmul float %216, %190
895 %245 = fmul float %217, %191
896 %246 = fadd float %245, %244
897 %247 = fmul float %218, %192
898 %248 = fadd float %246, %247
899 %249 = call float @llvm.AMDIL.clamp.(float %248, float 0.000000e+00, float 1.000000e+00)
900 %250 = fmul float %214, 0x3F5A36E2E0000000
901 %251 = call float @llvm.AMDIL.clamp.(float %250, float 0.000000e+00, float 1.000000e+00)
902 %252 = fsub float -0.000000e+00, %251
903 %253 = fadd float 1.000000e+00, %252
904 %254 = call float @llvm.pow.f32(float %249, float 2.500000e-01)
905 %255 = fmul float %39, %254
906 %256 = fmul float %238, %255
907 %257 = fmul float %243, %255
908 %258 = fmul float %256, %230
909 %259 = fmul float %257, %230
910 %260 = fadd float %249, 0x3EE4F8B580000000
911 %261 = fsub float -0.000000e+00, %249
912 %262 = fadd float 1.000000e+00, %261
913 %263 = fmul float 1.200000e+01, %262
914 %264 = fadd float %263, 4.000000e+00
915 %265 = fsub float -0.000000e+00, %264
916 %266 = fmul float %265, %260
917 %267 = fsub float -0.000000e+00, %264
918 %268 = fmul float %267, %260
919 %269 = fsub float -0.000000e+00, %264
920 %270 = fmul float %269, %260
921 %271 = fdiv float 1.000000e+00, %266
922 %272 = fdiv float 1.000000e+00, %268
923 %273 = fdiv float 1.000000e+00, %270
924 %274 = fmul float %258, %271
925 %275 = fmul float %259, %272
926 %276 = fmul float %260, %273
Tom Stellardc149dc02013-11-27 21:23:35 +0000927 br label %LOOP
928
929LOOP: ; preds = %LOOP, %main_body
Matt Arsenault77131622016-01-23 05:42:38 +0000930 %temp144.0 = phi float [ 1.000000e+00, %main_body ], [ %289, %LOOP ]
931 %temp168.0 = phi float [ %176, %main_body ], [ %285, %LOOP ]
932 %temp169.0 = phi float [ %177, %main_body ], [ %286, %LOOP ]
933 %temp170.0 = phi float [ %253, %main_body ], [ %287, %LOOP ]
934 %277 = bitcast float %temp168.0 to i32
935 %278 = bitcast float %temp169.0 to i32
936 %279 = insertelement <4 x i32> undef, i32 %277, i32 0
937 %280 = insertelement <4 x i32> %279, i32 %278, i32 1
938 %281 = insertelement <4 x i32> %280, i32 0, i32 2
939 %282 = insertelement <4 x i32> %281, i32 undef, i32 3
940 %283 = call <4 x float> @llvm.SI.samplel.v4i32(<4 x i32> %282, <32 x i8> %147, <16 x i8> %149, i32 2)
941 %284 = extractelement <4 x float> %283, i32 3
942 %285 = fadd float %temp168.0, %274
943 %286 = fadd float %temp169.0, %275
944 %287 = fadd float %temp170.0, %276
945 %288 = fsub float -0.000000e+00, %284
946 %289 = fadd float %287, %288
947 %290 = fcmp oge float 0.000000e+00, %289
948 %291 = sext i1 %290 to i32
949 %292 = bitcast i32 %291 to float
950 %293 = bitcast float %292 to i32
951 %294 = icmp ne i32 %293, 0
952 br i1 %294, label %IF189, label %LOOP
Tom Stellardc149dc02013-11-27 21:23:35 +0000953
954IF189: ; preds = %LOOP
Matt Arsenault77131622016-01-23 05:42:38 +0000955 %295 = extractelement <4 x float> %283, i32 0
956 %296 = extractelement <4 x float> %283, i32 1
957 %297 = extractelement <4 x float> %283, i32 2
958 %298 = fsub float -0.000000e+00, %289
959 %299 = fadd float %temp144.0, %298
960 %300 = fdiv float 1.000000e+00, %299
961 %301 = fmul float %289, %300
962 %302 = fadd float %301, -1.000000e+00
963 %303 = fmul float %302, %274
964 %304 = fadd float %303, %285
965 %305 = fmul float %302, %275
966 %306 = fadd float %305, %286
967 %307 = fsub float -0.000000e+00, %176
968 %308 = fadd float %304, %307
969 %309 = fsub float -0.000000e+00, %177
970 %310 = fadd float %306, %309
971 %311 = fadd float %176, %308
972 %312 = fadd float %177, %310
973 %313 = fmul float %308, %67
974 %314 = fmul float %310, %68
975 %315 = fmul float %313, %55
976 %316 = fmul float %313, %56
977 %317 = fmul float %314, %57
978 %318 = fadd float %317, %315
979 %319 = fmul float %314, %58
980 %320 = fadd float %319, %316
981 %321 = fadd float %178, %318
982 %322 = fadd float %179, %320
983 %323 = fmul float %313, %59
984 %324 = fmul float %313, %60
985 %325 = fmul float %313, %61
986 %326 = fmul float %313, %62
987 %327 = fmul float %314, %63
988 %328 = fadd float %327, %323
989 %329 = fmul float %314, %64
990 %330 = fadd float %329, %324
991 %331 = fmul float %314, %65
992 %332 = fadd float %331, %325
993 %333 = fmul float %314, %66
994 %334 = fadd float %333, %326
995 %335 = fadd float %168, %328
996 %336 = fadd float %169, %330
997 %337 = fadd float %170, %332
998 %338 = fadd float %171, %334
999 %339 = bitcast float %335 to i32
1000 %340 = bitcast float %336 to i32
1001 %341 = insertelement <2 x i32> undef, i32 %339, i32 0
1002 %342 = insertelement <2 x i32> %341, i32 %340, i32 1
1003 %343 = call <4 x float> @llvm.SI.sample.v2i32(<2 x i32> %342, <32 x i8> %135, <16 x i8> %137, i32 2)
1004 %344 = extractelement <4 x float> %343, i32 0
1005 %345 = extractelement <4 x float> %343, i32 1
1006 %346 = extractelement <4 x float> %343, i32 2
1007 %347 = extractelement <4 x float> %343, i32 3
1008 %348 = fmul float %344, %23
1009 %349 = fmul float %345, %24
1010 %350 = fmul float %346, %25
1011 %351 = fmul float %347, %26
1012 %352 = fmul float %348, %180
1013 %353 = fmul float %349, %181
1014 %354 = fmul float %350, %182
1015 %355 = fmul float %351, %183
1016 %356 = fsub float -0.000000e+00, %347
1017 %357 = fadd float 1.000000e+00, %356
1018 %358 = fmul float %357, %49
1019 %one.sub.a.i37 = fsub float 1.000000e+00, %358
1020 %one.sub.ac.i38 = fmul float %one.sub.a.i37, %352
1021 %mul.i39 = fmul float %344, %352
1022 %result.i40 = fadd float %mul.i39, %one.sub.ac.i38
1023 %one.sub.a.i33 = fsub float 1.000000e+00, %358
1024 %one.sub.ac.i34 = fmul float %one.sub.a.i33, %353
1025 %mul.i35 = fmul float %345, %353
1026 %result.i36 = fadd float %mul.i35, %one.sub.ac.i34
1027 %one.sub.a.i29 = fsub float 1.000000e+00, %358
1028 %one.sub.ac.i30 = fmul float %one.sub.a.i29, %354
1029 %mul.i31 = fmul float %346, %354
1030 %result.i32 = fadd float %mul.i31, %one.sub.ac.i30
1031 %359 = bitcast float %337 to i32
1032 %360 = bitcast float %338 to i32
1033 %361 = insertelement <2 x i32> undef, i32 %359, i32 0
1034 %362 = insertelement <2 x i32> %361, i32 %360, i32 1
1035 %363 = call <4 x float> @llvm.SI.sample.v2i32(<2 x i32> %362, <32 x i8> %151, <16 x i8> %153, i32 2)
1036 %364 = extractelement <4 x float> %363, i32 2
1037 %365 = fmul float %result.i40, %result.i
1038 %366 = fmul float %result.i36, %result.i44
1039 %367 = fmul float %result.i32, %result.i42
1040 %368 = fmul float %355, %230
1041 %369 = bitcast float %311 to i32
1042 %370 = bitcast float %312 to i32
1043 %371 = insertelement <2 x i32> undef, i32 %369, i32 0
1044 %372 = insertelement <2 x i32> %371, i32 %370, i32 1
1045 %373 = call <4 x float> @llvm.SI.sample.v2i32(<2 x i32> %372, <32 x i8> %139, <16 x i8> %141, i32 2)
1046 %374 = extractelement <4 x float> %373, i32 0
1047 %375 = extractelement <4 x float> %373, i32 1
1048 %376 = extractelement <4 x float> %373, i32 2
1049 %377 = extractelement <4 x float> %373, i32 3
1050 %378 = fcmp olt float 0.000000e+00, %376
1051 %379 = sext i1 %378 to i32
1052 %380 = bitcast i32 %379 to float
1053 %381 = bitcast float %380 to i32
1054 %382 = icmp ne i32 %381, 0
1055 %.224 = select i1 %382, float %375, float %374
1056 %.225 = select i1 %382, float %377, float %375
1057 %383 = bitcast float %321 to i32
1058 %384 = bitcast float %322 to i32
1059 %385 = insertelement <2 x i32> undef, i32 %383, i32 0
1060 %386 = insertelement <2 x i32> %385, i32 %384, i32 1
1061 %387 = call <4 x float> @llvm.SI.sample.v2i32(<2 x i32> %386, <32 x i8> %143, <16 x i8> %145, i32 2)
1062 %388 = extractelement <4 x float> %387, i32 0
1063 %389 = extractelement <4 x float> %387, i32 1
1064 %390 = extractelement <4 x float> %387, i32 2
1065 %391 = extractelement <4 x float> %387, i32 3
1066 %392 = fcmp olt float 0.000000e+00, %390
1067 %393 = sext i1 %392 to i32
1068 %394 = bitcast i32 %393 to float
1069 %395 = bitcast float %394 to i32
1070 %396 = icmp ne i32 %395, 0
1071 %temp112.1 = select i1 %396, float %389, float %388
1072 %temp113.1 = select i1 %396, float %391, float %389
1073 %397 = fmul float %.224, 2.000000e+00
1074 %398 = fadd float %397, -1.000000e+00
1075 %399 = fmul float %.225, 2.000000e+00
1076 %400 = fadd float %399, -1.000000e+00
1077 %401 = fmul float %temp112.1, 2.000000e+00
1078 %402 = fadd float %401, -1.000000e+00
1079 %403 = fmul float %temp113.1, 2.000000e+00
Tom Stellardc149dc02013-11-27 21:23:35 +00001080 %404 = fadd float %403, -1.000000e+00
Matt Arsenault77131622016-01-23 05:42:38 +00001081 %405 = fsub float -0.000000e+00, %398
1082 %406 = fmul float %405, %35
1083 %407 = fsub float -0.000000e+00, %400
1084 %408 = fmul float %407, %35
1085 %409 = fsub float -0.000000e+00, %402
1086 %410 = fmul float %409, %36
Tom Stellardc149dc02013-11-27 21:23:35 +00001087 %411 = fsub float -0.000000e+00, %404
Matt Arsenault77131622016-01-23 05:42:38 +00001088 %412 = fmul float %411, %36
1089 %413 = fmul float %410, %364
1090 %414 = fmul float %412, %364
1091 %415 = call float @fabs(float %406)
1092 %416 = call float @fabs(float %408)
1093 %417 = fsub float -0.000000e+00, %415
1094 %418 = fadd float 1.000000e+00, %417
1095 %419 = fsub float -0.000000e+00, %416
1096 %420 = fadd float 1.000000e+00, %419
1097 %421 = fmul float %418, %413
1098 %422 = fadd float %421, %406
1099 %423 = fmul float %420, %414
1100 %424 = fadd float %423, %408
1101 %425 = fmul float %422, %422
1102 %426 = fmul float %424, %424
1103 %427 = fadd float %425, %426
1104 %428 = fsub float -0.000000e+00, %427
1105 %429 = fadd float 0x3FF00068E0000000, %428
1106 %430 = call float @llvm.AMDIL.clamp.(float %429, float 0.000000e+00, float 1.000000e+00)
1107 %431 = call float @llvm.amdgcn.rsq.f32(float %430)
1108 %432 = fmul float %431, %430
1109 %433 = fsub float -0.000000e+00, %430
1110 %cmp = fcmp ogt float 0.000000e+00, %433
1111 %434 = select i1 %cmp, float %432, float 0.000000e+00
1112 %435 = fmul float %184, %422
1113 %436 = fmul float %185, %422
1114 %437 = fmul float %186, %422
1115 %438 = fmul float %187, %424
1116 %439 = fadd float %438, %435
1117 %440 = fmul float %188, %424
1118 %441 = fadd float %440, %436
1119 %442 = fmul float %189, %424
1120 %443 = fadd float %442, %437
1121 %444 = fmul float %190, %434
1122 %445 = fadd float %444, %439
1123 %446 = fmul float %191, %434
1124 %447 = fadd float %446, %441
1125 %448 = fmul float %192, %434
Tom Stellardc149dc02013-11-27 21:23:35 +00001126 %449 = fadd float %448, %443
Matt Arsenault77131622016-01-23 05:42:38 +00001127 %450 = fmul float %445, %445
1128 %451 = fmul float %447, %447
1129 %452 = fadd float %451, %450
1130 %453 = fmul float %449, %449
1131 %454 = fadd float %452, %453
1132 %455 = call float @llvm.amdgcn.rsq.f32(float %454)
1133 %456 = fmul float %445, %455
1134 %457 = fmul float %447, %455
1135 %458 = fmul float %449, %455
1136 %459 = fcmp olt float 0.000000e+00, %219
1137 %460 = sext i1 %459 to i32
1138 %461 = bitcast i32 %460 to float
1139 %462 = bitcast float %461 to i32
1140 %463 = icmp ne i32 %462, 0
1141 br i1 %463, label %IF198, label %ENDIF197
Tom Stellardc149dc02013-11-27 21:23:35 +00001142
1143IF198: ; preds = %IF189
Matt Arsenault77131622016-01-23 05:42:38 +00001144 %464 = fsub float -0.000000e+00, %456
1145 %465 = fsub float -0.000000e+00, %457
1146 %466 = fsub float -0.000000e+00, %458
Tom Stellardc149dc02013-11-27 21:23:35 +00001147 br label %ENDIF197
1148
Matt Arsenault77131622016-01-23 05:42:38 +00001149ENDIF197: ; preds = %IF198, %IF189
1150 %temp14.0 = phi float [ %466, %IF198 ], [ %458, %IF189 ]
1151 %temp13.0 = phi float [ %465, %IF198 ], [ %457, %IF189 ]
1152 %temp12.0 = phi float [ %464, %IF198 ], [ %456, %IF189 ]
1153 %467 = bitcast float %220 to i32
1154 %468 = bitcast float %221 to i32
1155 %469 = insertelement <2 x i32> undef, i32 %467, i32 0
1156 %470 = insertelement <2 x i32> %469, i32 %468, i32 1
1157 %471 = call <4 x float> @llvm.SI.sample.v2i32(<2 x i32> %470, <32 x i8> %159, <16 x i8> %161, i32 2)
1158 %472 = extractelement <4 x float> %471, i32 0
1159 %473 = extractelement <4 x float> %471, i32 1
1160 %474 = extractelement <4 x float> %471, i32 2
1161 %475 = extractelement <4 x float> %471, i32 3
1162 %476 = fmul float %472, %40
1163 %477 = fadd float %476, %41
1164 %478 = fmul float %473, %40
1165 %479 = fadd float %478, %41
1166 %480 = fmul float %474, %40
1167 %481 = fadd float %480, %41
1168 %482 = fmul float %475, %42
1169 %483 = fadd float %482, %43
1170 %484 = bitcast float %172 to i32
1171 %485 = bitcast float %173 to i32
1172 %486 = insertelement <2 x i32> undef, i32 %484, i32 0
1173 %487 = insertelement <2 x i32> %486, i32 %485, i32 1
1174 %488 = call <4 x float> @llvm.SI.sample.v2i32(<2 x i32> %487, <32 x i8> %155, <16 x i8> %157, i32 2)
1175 %489 = extractelement <4 x float> %488, i32 0
1176 %490 = extractelement <4 x float> %488, i32 1
1177 %491 = extractelement <4 x float> %488, i32 2
1178 %492 = extractelement <4 x float> %488, i32 3
1179 %493 = fmul float %492, 3.200000e+01
1180 %494 = fadd float %493, -1.600000e+01
1181 %495 = call float @llvm.AMDIL.exp.(float %494)
1182 %496 = fmul float %489, %495
1183 %497 = fmul float %490, %495
1184 %498 = fmul float %491, %495
1185 %499 = fmul float %28, %496
1186 %500 = fadd float %499, %193
1187 %501 = fmul float %29, %497
1188 %502 = fadd float %501, %194
1189 %503 = fmul float %30, %498
1190 %504 = fadd float %503, %195
1191 %505 = fmul float %500, %483
1192 %506 = fmul float %502, %483
1193 %507 = fmul float %504, %483
1194 %508 = fmul float %483, 5.000000e-01
1195 %509 = fadd float %508, 5.000000e-01
1196 %510 = fmul float %477, %509
1197 %511 = fadd float %510, %505
1198 %512 = fmul float %479, %509
1199 %513 = fadd float %512, %506
1200 %514 = fmul float %481, %509
1201 %515 = fadd float %514, %507
1202 %516 = fmul float %511, %365
1203 %517 = fmul float %513, %366
1204 %518 = fmul float %515, %367
1205 %519 = fmul float %422, 0x3FDB272440000000
1206 %520 = fmul float %424, 0xBFDB272440000000
1207 %521 = fadd float %520, %519
1208 %522 = fmul float %434, 0x3FE99999A0000000
1209 %523 = fadd float %521, %522
1210 %524 = fmul float %523, 5.000000e-01
1211 %525 = fadd float %524, 0x3FE3333340000000
1212 %526 = fmul float %525, %525
1213 %527 = fmul float %516, %526
1214 %528 = fmul float %517, %526
1215 %529 = fmul float %518, %526
1216 %530 = fsub float -0.000000e+00, %72
1217 %531 = fsub float -0.000000e+00, %73
1218 %532 = fsub float -0.000000e+00, %74
1219 %533 = fmul float %temp12.0, %530
1220 %534 = fmul float %temp13.0, %531
1221 %535 = fadd float %534, %533
1222 %536 = fmul float %temp14.0, %532
1223 %537 = fadd float %535, %536
1224 %538 = call float @llvm.AMDIL.clamp.(float %537, float 0.000000e+00, float 1.000000e+00)
1225 %539 = fmul float %365, %538
1226 %540 = fmul float %366, %538
1227 %541 = fmul float %367, %538
1228 %542 = fmul float %539, %69
1229 %543 = fmul float %540, %70
1230 %544 = fmul float %541, %71
1231 %545 = fsub float -0.000000e+00, %164
1232 %546 = fadd float %97, %545
1233 %547 = fsub float -0.000000e+00, %165
1234 %548 = fadd float %98, %547
1235 %549 = fsub float -0.000000e+00, %166
1236 %550 = fadd float %99, %549
1237 %551 = fmul float %546, %546
1238 %552 = fmul float %548, %548
1239 %553 = fadd float %552, %551
1240 %554 = fmul float %550, %550
1241 %555 = fadd float %553, %554
1242 %556 = call float @llvm.amdgcn.rsq.f32(float %555)
1243 %557 = fmul float %556, %555
1244 %558 = fsub float -0.000000e+00, %555
1245 %cmp1 = fcmp ogt float %558, 0.000000e+00
1246 %559 = select i1 %cmp1, float %557, float 0.000000e+00
1247 %560 = fsub float -0.000000e+00, %84
Tom Stellardc149dc02013-11-27 21:23:35 +00001248 %561 = fadd float %559, %560
Matt Arsenault77131622016-01-23 05:42:38 +00001249 %562 = fsub float -0.000000e+00, %83
1250 %563 = fadd float %559, %562
1251 %564 = fsub float -0.000000e+00, %82
1252 %565 = fadd float %559, %564
Tom Stellardc149dc02013-11-27 21:23:35 +00001253 %566 = fsub float -0.000000e+00, %84
Matt Arsenault77131622016-01-23 05:42:38 +00001254 %567 = fadd float %83, %566
Tom Stellardc149dc02013-11-27 21:23:35 +00001255 %568 = fsub float -0.000000e+00, %83
Matt Arsenault77131622016-01-23 05:42:38 +00001256 %569 = fadd float %82, %568
Tom Stellardc149dc02013-11-27 21:23:35 +00001257 %570 = fsub float -0.000000e+00, %82
Matt Arsenault77131622016-01-23 05:42:38 +00001258 %571 = fadd float %81, %570
1259 %572 = fdiv float 1.000000e+00, %567
1260 %573 = fdiv float 1.000000e+00, %569
1261 %574 = fdiv float 1.000000e+00, %571
1262 %575 = fmul float %561, %572
1263 %576 = fmul float %563, %573
1264 %577 = fmul float %565, %574
1265 %578 = fcmp olt float %559, %83
1266 %579 = sext i1 %578 to i32
1267 %580 = bitcast i32 %579 to float
1268 %581 = bitcast float %580 to i32
1269 %582 = icmp ne i32 %581, 0
1270 br i1 %582, label %ENDIF200, label %ELSE202
Tom Stellardc149dc02013-11-27 21:23:35 +00001271
1272ELSE202: ; preds = %ENDIF197
Matt Arsenault77131622016-01-23 05:42:38 +00001273 %583 = fcmp olt float %559, %82
1274 %584 = sext i1 %583 to i32
1275 %585 = bitcast i32 %584 to float
1276 %586 = bitcast float %585 to i32
1277 %587 = icmp ne i32 %586, 0
1278 br i1 %587, label %ENDIF200, label %ELSE205
Tom Stellardc149dc02013-11-27 21:23:35 +00001279
1280ENDIF200: ; preds = %ELSE205, %ELSE202, %ENDIF197
Matt Arsenault77131622016-01-23 05:42:38 +00001281 %temp80.0 = phi float [ %575, %ENDIF197 ], [ %.226, %ELSE205 ], [ %576, %ELSE202 ]
Tom Stellardc149dc02013-11-27 21:23:35 +00001282 %temp88.0 = phi float [ %122, %ENDIF197 ], [ %.227, %ELSE205 ], [ %120, %ELSE202 ]
1283 %temp89.0 = phi float [ %123, %ENDIF197 ], [ %.228, %ELSE205 ], [ %121, %ELSE202 ]
1284 %temp90.0 = phi float [ %120, %ENDIF197 ], [ %116, %ELSE205 ], [ %118, %ELSE202 ]
1285 %temp91.0 = phi float [ %121, %ENDIF197 ], [ %117, %ELSE205 ], [ %119, %ELSE202 ]
Matt Arsenault77131622016-01-23 05:42:38 +00001286 %588 = fcmp olt float %559, %83
1287 %589 = sext i1 %588 to i32
1288 %590 = bitcast i32 %589 to float
1289 %591 = bitcast float %590 to i32
1290 %592 = icmp ne i32 %591, 0
1291 br i1 %592, label %ENDIF209, label %ELSE211
Tom Stellardc149dc02013-11-27 21:23:35 +00001292
1293ELSE205: ; preds = %ELSE202
Matt Arsenault77131622016-01-23 05:42:38 +00001294 %593 = fcmp olt float %559, %81
1295 %594 = sext i1 %593 to i32
1296 %595 = bitcast i32 %594 to float
1297 %596 = bitcast float %595 to i32
1298 %597 = icmp ne i32 %596, 0
1299 %.226 = select i1 %597, float %577, float 1.000000e+00
1300 %.227 = select i1 %597, float %118, float %116
1301 %.228 = select i1 %597, float %119, float %117
Tom Stellardc149dc02013-11-27 21:23:35 +00001302 br label %ENDIF200
1303
1304ELSE211: ; preds = %ENDIF200
Matt Arsenault77131622016-01-23 05:42:38 +00001305 %598 = fcmp olt float %559, %82
1306 %599 = sext i1 %598 to i32
1307 %600 = bitcast i32 %599 to float
1308 %601 = bitcast float %600 to i32
1309 %602 = icmp ne i32 %601, 0
1310 br i1 %602, label %ENDIF209, label %ELSE214
Tom Stellardc149dc02013-11-27 21:23:35 +00001311
1312ENDIF209: ; preds = %ELSE214, %ELSE211, %ENDIF200
1313 %temp52.0 = phi float [ %108, %ENDIF200 ], [ %100, %ELSE214 ], [ %104, %ELSE211 ]
1314 %temp53.0 = phi float [ %109, %ENDIF200 ], [ %101, %ELSE214 ], [ %105, %ELSE211 ]
1315 %temp54.0 = phi float [ %110, %ENDIF200 ], [ %102, %ELSE214 ], [ %106, %ELSE211 ]
1316 %temp55.0 = phi float [ %111, %ENDIF200 ], [ %103, %ELSE214 ], [ %107, %ELSE211 ]
1317 %temp68.0 = phi float [ %112, %ENDIF200 ], [ %.230, %ELSE214 ], [ %108, %ELSE211 ]
1318 %temp69.0 = phi float [ %113, %ENDIF200 ], [ %.231, %ELSE214 ], [ %109, %ELSE211 ]
1319 %temp70.0 = phi float [ %114, %ENDIF200 ], [ %.232, %ELSE214 ], [ %110, %ELSE211 ]
1320 %temp71.0 = phi float [ %115, %ENDIF200 ], [ %.233, %ELSE214 ], [ %111, %ELSE211 ]
Matt Arsenault77131622016-01-23 05:42:38 +00001321 %603 = fmul float %164, %85
1322 %604 = fmul float %165, %86
1323 %605 = fadd float %603, %604
1324 %606 = fmul float %166, %87
1325 %607 = fadd float %605, %606
1326 %608 = fmul float %167, %88
1327 %609 = fadd float %607, %608
1328 %610 = fmul float %164, %89
1329 %611 = fmul float %165, %90
1330 %612 = fadd float %610, %611
1331 %613 = fmul float %166, %91
1332 %614 = fadd float %612, %613
1333 %615 = fmul float %167, %92
1334 %616 = fadd float %614, %615
1335 %617 = fmul float %164, %93
1336 %618 = fmul float %165, %94
1337 %619 = fadd float %617, %618
1338 %620 = fmul float %166, %95
1339 %621 = fadd float %619, %620
1340 %622 = fmul float %167, %96
1341 %623 = fadd float %621, %622
1342 %624 = fsub float -0.000000e+00, %78
1343 %625 = fadd float 1.000000e+00, %624
1344 %626 = call float @fabs(float %609)
1345 %627 = call float @fabs(float %616)
1346 %628 = fcmp oge float %625, %626
1347 %629 = sext i1 %628 to i32
1348 %630 = bitcast i32 %629 to float
1349 %631 = bitcast float %630 to i32
1350 %632 = and i32 %631, 1065353216
1351 %633 = bitcast i32 %632 to float
1352 %634 = fcmp oge float %625, %627
Tom Stellardc149dc02013-11-27 21:23:35 +00001353 %635 = sext i1 %634 to i32
1354 %636 = bitcast i32 %635 to float
1355 %637 = bitcast float %636 to i32
1356 %638 = and i32 %637, 1065353216
1357 %639 = bitcast i32 %638 to float
Matt Arsenault77131622016-01-23 05:42:38 +00001358 %640 = fmul float %633, %639
1359 %641 = fmul float %623, %640
1360 %642 = fmul float %609, %temp68.0
1361 %643 = fadd float %642, %temp70.0
1362 %644 = fmul float %616, %temp69.0
1363 %645 = fadd float %644, %temp71.0
1364 %646 = fmul float %609, %temp52.0
1365 %647 = fadd float %646, %temp54.0
1366 %648 = fmul float %616, %temp53.0
1367 %649 = fadd float %648, %temp55.0
1368 %650 = fadd float %temp80.0, -1.000000e+00
1369 %651 = fmul float %650, %77
1370 %652 = fadd float %651, 1.000000e+00
1371 %653 = call float @llvm.AMDIL.clamp.(float %652, float 0.000000e+00, float 1.000000e+00)
1372 %654 = bitcast float %643 to i32
1373 %655 = bitcast float %645 to i32
1374 %656 = bitcast float 0.000000e+00 to i32
1375 %657 = insertelement <4 x i32> undef, i32 %654, i32 0
1376 %658 = insertelement <4 x i32> %657, i32 %655, i32 1
1377 %659 = insertelement <4 x i32> %658, i32 %656, i32 2
1378 %660 = insertelement <4 x i32> %659, i32 undef, i32 3
1379 %661 = call <4 x float> @llvm.SI.samplel.v4i32(<4 x i32> %660, <32 x i8> %127, <16 x i8> %129, i32 2)
1380 %662 = extractelement <4 x float> %661, i32 0
1381 %663 = extractelement <4 x float> %661, i32 1
1382 %664 = bitcast float %647 to i32
1383 %665 = bitcast float %649 to i32
1384 %666 = bitcast float 0.000000e+00 to i32
1385 %667 = insertelement <4 x i32> undef, i32 %664, i32 0
1386 %668 = insertelement <4 x i32> %667, i32 %665, i32 1
1387 %669 = insertelement <4 x i32> %668, i32 %666, i32 2
1388 %670 = insertelement <4 x i32> %669, i32 undef, i32 3
1389 %671 = call <4 x float> @llvm.SI.samplel.v4i32(<4 x i32> %670, <32 x i8> %127, <16 x i8> %129, i32 2)
1390 %672 = extractelement <4 x float> %671, i32 0
1391 %673 = extractelement <4 x float> %671, i32 1
1392 %674 = fsub float -0.000000e+00, %663
1393 %675 = fadd float 1.000000e+00, %674
1394 %676 = fsub float -0.000000e+00, %673
1395 %677 = fadd float 1.000000e+00, %676
1396 %678 = fmul float %675, 2.500000e-01
1397 %679 = fmul float %677, 2.500000e-01
1398 %680 = fsub float -0.000000e+00, %678
1399 %681 = fadd float %662, %680
Tom Stellardc149dc02013-11-27 21:23:35 +00001400 %682 = fsub float -0.000000e+00, %679
Matt Arsenault77131622016-01-23 05:42:38 +00001401 %683 = fadd float %672, %682
1402 %684 = fmul float %641, %temp88.0
1403 %685 = fadd float %684, %temp89.0
1404 %686 = fmul float %641, %temp90.0
1405 %687 = fadd float %686, %temp91.0
1406 %688 = call float @llvm.AMDIL.clamp.(float %685, float 0.000000e+00, float 1.000000e+00)
1407 %689 = call float @llvm.AMDIL.clamp.(float %687, float 0.000000e+00, float 1.000000e+00)
1408 %690 = fsub float -0.000000e+00, %688
1409 %691 = fadd float %662, %690
1410 %692 = fsub float -0.000000e+00, %689
1411 %693 = fadd float %672, %692
1412 %694 = fmul float %662, %662
1413 %695 = fmul float %672, %672
Tom Stellardc149dc02013-11-27 21:23:35 +00001414 %696 = fsub float -0.000000e+00, %694
Matt Arsenault77131622016-01-23 05:42:38 +00001415 %697 = fadd float %681, %696
Tom Stellardc149dc02013-11-27 21:23:35 +00001416 %698 = fsub float -0.000000e+00, %695
Matt Arsenault77131622016-01-23 05:42:38 +00001417 %699 = fadd float %683, %698
1418 %700 = fcmp uge float %697, %75
1419 %701 = select i1 %700, float %697, float %75
1420 %702 = fcmp uge float %699, %75
1421 %703 = select i1 %702, float %699, float %75
1422 %704 = fmul float %691, %691
1423 %705 = fadd float %704, %701
1424 %706 = fmul float %693, %693
1425 %707 = fadd float %706, %703
1426 %708 = fdiv float 1.000000e+00, %705
1427 %709 = fdiv float 1.000000e+00, %707
1428 %710 = fmul float %701, %708
1429 %711 = fmul float %703, %709
1430 %712 = fcmp oge float %691, 0.000000e+00
1431 %713 = sext i1 %712 to i32
1432 %714 = bitcast i32 %713 to float
1433 %715 = bitcast float %714 to i32
1434 %716 = icmp ne i32 %715, 0
1435 %.229 = select i1 %716, float 1.000000e+00, float %710
1436 %717 = fcmp oge float %693, 0.000000e+00
1437 %718 = sext i1 %717 to i32
1438 %719 = bitcast i32 %718 to float
1439 %720 = bitcast float %719 to i32
1440 %721 = icmp ne i32 %720, 0
1441 %temp28.0 = select i1 %721, float 1.000000e+00, float %711
1442 %one.sub.a.i25 = fsub float 1.000000e+00, %653
1443 %one.sub.ac.i26 = fmul float %one.sub.a.i25, %.229
1444 %mul.i27 = fmul float %temp28.0, %.229
1445 %result.i28 = fadd float %mul.i27, %one.sub.ac.i26
1446 %722 = call float @llvm.pow.f32(float %result.i28, float %76)
1447 %723 = fmul float %722, %79
1448 %724 = fadd float %723, %80
1449 %725 = call float @llvm.AMDIL.clamp.(float %724, float 0.000000e+00, float 1.000000e+00)
1450 %726 = fmul float %725, %725
1451 %727 = fmul float 2.000000e+00, %725
1452 %728 = fsub float -0.000000e+00, %727
1453 %729 = fadd float 3.000000e+00, %728
1454 %730 = fmul float %726, %729
1455 %731 = fmul float %542, %730
1456 %732 = fmul float %543, %730
1457 %733 = fmul float %544, %730
1458 %734 = fmul float %731, %509
1459 %735 = fadd float %734, %527
1460 %736 = fmul float %732, %509
1461 %737 = fadd float %736, %528
1462 %738 = fmul float %733, %509
1463 %739 = fadd float %738, %529
1464 %one.sub.a.i23 = fsub float 1.000000e+00, %230
1465 %result.i24 = fadd float %284, %one.sub.a.i23
1466 %one.sub.a.i21 = fsub float 1.000000e+00, %37
1467 %result.i22 = fadd float %295, %one.sub.a.i21
1468 %one.sub.a.i19 = fsub float 1.000000e+00, %37
1469 %result.i20 = fadd float %296, %one.sub.a.i19
1470 %one.sub.a.i17 = fsub float 1.000000e+00, %37
1471 %result.i18 = fadd float %297, %one.sub.a.i17
1472 %one.sub.a.i15 = fsub float 1.000000e+00, %38
1473 %result.i16 = fadd float %result.i24, %one.sub.a.i15
1474 %740 = fmul float %result.i22, %result.i16
1475 %741 = fmul float %result.i20, %result.i16
1476 %742 = fmul float %result.i18, %result.i16
1477 %743 = fmul float %735, %740
1478 %744 = fmul float %737, %741
1479 %745 = fmul float %739, %742
1480 %746 = fmul float %temp12.0, %216
1481 %747 = fmul float %temp13.0, %217
1482 %748 = fadd float %747, %746
1483 %749 = fmul float %temp14.0, %218
1484 %750 = fadd float %748, %749
1485 %751 = call float @fabs(float %750)
1486 %752 = fmul float %751, %751
1487 %753 = fmul float %752, %50
1488 %754 = fadd float %753, %51
1489 %755 = call float @llvm.AMDIL.clamp.(float %754, float 0.000000e+00, float 1.000000e+00)
1490 %756 = fsub float -0.000000e+00, %755
1491 %757 = fadd float 1.000000e+00, %756
1492 %758 = fmul float %33, %757
1493 %759 = fmul float %33, %757
1494 %760 = fmul float %33, %757
1495 %761 = fmul float %34, %757
1496 %one.sub.a.i11 = fsub float 1.000000e+00, %758
1497 %one.sub.ac.i12 = fmul float %one.sub.a.i11, %743
1498 %mul.i13 = fmul float %31, %743
1499 %result.i14 = fadd float %mul.i13, %one.sub.ac.i12
1500 %one.sub.a.i7 = fsub float 1.000000e+00, %759
1501 %one.sub.ac.i8 = fmul float %one.sub.a.i7, %744
1502 %mul.i9 = fmul float %31, %744
1503 %result.i10 = fadd float %mul.i9, %one.sub.ac.i8
1504 %one.sub.a.i3 = fsub float 1.000000e+00, %760
1505 %one.sub.ac.i4 = fmul float %one.sub.a.i3, %745
1506 %mul.i5 = fmul float %31, %745
1507 %result.i6 = fadd float %mul.i5, %one.sub.ac.i4
1508 %one.sub.a.i1 = fsub float 1.000000e+00, %761
1509 %one.sub.ac.i = fmul float %one.sub.a.i1, %368
1510 %mul.i = fmul float %32, %368
1511 %result.i2 = fadd float %mul.i, %one.sub.ac.i
1512 %762 = fcmp uge float %result.i14, 0x3E6FFFFE60000000
1513 %763 = select i1 %762, float %result.i14, float 0x3E6FFFFE60000000
1514 %764 = fcmp uge float %result.i10, 0x3E6FFFFE60000000
1515 %765 = select i1 %764, float %result.i10, float 0x3E6FFFFE60000000
1516 %766 = fcmp uge float %result.i6, 0x3E6FFFFE60000000
1517 %767 = select i1 %766, float %result.i6, float 0x3E6FFFFE60000000
1518 %768 = fcmp uge float %763, 6.550400e+04
1519 %769 = select i1 %768, float 6.550400e+04, float %763
1520 %770 = fcmp uge float %765, 6.550400e+04
1521 %771 = select i1 %770, float 6.550400e+04, float %765
1522 %772 = fcmp uge float %767, 6.550400e+04
1523 %773 = select i1 %772, float 6.550400e+04, float %767
1524 %774 = fmul float %result.i2, %52
1525 %775 = fadd float %774, %53
1526 %776 = call float @llvm.AMDIL.clamp.(float %775, float 0.000000e+00, float 1.000000e+00)
1527 %777 = call i32 @llvm.SI.packf16(float %769, float %771)
1528 %778 = bitcast i32 %777 to float
1529 %779 = call i32 @llvm.SI.packf16(float %773, float %776)
1530 %780 = bitcast i32 %779 to float
1531 call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %778, float %780, float %778, float %780)
Tom Stellardc149dc02013-11-27 21:23:35 +00001532 ret void
1533
1534ELSE214: ; preds = %ELSE211
Matt Arsenault77131622016-01-23 05:42:38 +00001535 %781 = fcmp olt float %559, %81
1536 %782 = sext i1 %781 to i32
1537 %783 = bitcast i32 %782 to float
1538 %784 = bitcast float %783 to i32
1539 %785 = icmp ne i32 %784, 0
1540 %.230 = select i1 %785, float %104, float %100
1541 %.231 = select i1 %785, float %105, float %101
1542 %.232 = select i1 %785, float %106, float %102
1543 %.233 = select i1 %785, float %107, float %103
Tom Stellardc149dc02013-11-27 21:23:35 +00001544 br label %ENDIF209
1545}
1546
1547; Function Attrs: readnone
Matt Arsenault77131622016-01-23 05:42:38 +00001548declare float @llvm.AMDIL.clamp.(float, float, float) #3
Tom Stellardc149dc02013-11-27 21:23:35 +00001549
1550; Function Attrs: nounwind readnone
Matt Arsenault77131622016-01-23 05:42:38 +00001551declare <4 x float> @llvm.SI.sample.v2i32(<2 x i32>, <32 x i8>, <16 x i8>, i32) #2
Tom Stellardc149dc02013-11-27 21:23:35 +00001552
1553; Function Attrs: nounwind readnone
Matt Arsenault77131622016-01-23 05:42:38 +00001554declare <4 x float> @llvm.SI.samplel.v4i32(<4 x i32>, <32 x i8>, <16 x i8>, i32) #2
Tom Stellardc149dc02013-11-27 21:23:35 +00001555
1556; Function Attrs: readnone
Matt Arsenault77131622016-01-23 05:42:38 +00001557declare float @llvm.AMDIL.exp.(float) #3
1558
1559; Function Attrs: nounwind readnone
1560declare float @llvm.SI.load.const(<16 x i8>, i32) #2
1561
1562; Function Attrs: nounwind readnone
1563declare float @llvm.SI.fs.interp(i32, i32, i32, <2 x i32>) #2
Tom Stellardc149dc02013-11-27 21:23:35 +00001564
1565; Function Attrs: readnone
Matt Arsenault77131622016-01-23 05:42:38 +00001566declare i32 @llvm.SI.tid() #3
Tom Stellardc149dc02013-11-27 21:23:35 +00001567
Matt Arsenault77131622016-01-23 05:42:38 +00001568; Function Attrs: nounwind readonly
1569declare float @ceil(float) #4
1570
1571; Function Attrs: nounwind readnone
1572declare float @llvm.amdgcn.rsq.f32(float) #2
1573
1574; Function Attrs: nounwind readnone
1575declare <4 x float> @llvm.SI.sampled.v8i32(<8 x i32>, <32 x i8>, <16 x i8>, i32) #2
1576
1577; Function Attrs: readnone
1578declare <4 x float> @llvm.AMDGPU.cube(<4 x float>) #3
1579
1580; Function Attrs: readnone
1581declare float @fabs(float) #3
1582
1583; Function Attrs: nounwind readnone
1584declare <4 x float> @llvm.SI.sample.v4i32(<4 x i32>, <32 x i8>, <16 x i8>, i32) #2
1585
1586; Function Attrs: nounwind readnone
1587declare float @llvm.pow.f32(float, float) #2
1588
1589; Function Attrs: nounwind readnone
1590declare i32 @llvm.SI.packf16(float, float) #2
1591
1592declare void @llvm.SI.export(i32, i32, i32, i32, i32, float, float, float, float)
1593
1594
1595
1596attributes #0 = { alwaysinline nounwind readnone }
1597attributes #1 = { "ShaderType"="0" }
1598attributes #2 = { nounwind readnone }
1599attributes #3 = { readnone }
1600attributes #4 = { nounwind readonly }
1601
1602!0 = !{!1, !1, i64 0, i32 1}
1603!1 = !{!"const", null}