Revert "[InstCombine] Support gep nuw in icmp folds" (#118698)
[llvm-project.git] / llvm / test / Transforms / ExpandLargeFpConvert / X86 / expand-large-fp-convert-fptoui129.ll
blobc699f805754cc19af265aa27affdc506050defe0
1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2 ; RUN: opt -S -mtriple=x86_64-- -expand-large-fp-convert < %s | FileCheck %s
3 ; RUN: opt -S -mtriple=x86_64-- -passes=expand-large-fp-convert < %s | FileCheck %s
5 define i129 @halftoui129(half %a) {
6 ; CHECK-LABEL: @halftoui129(
7 ; CHECK-NEXT:    [[TMP1:%.*]] = fptoui half [[A:%.*]] to i32
8 ; CHECK-NEXT:    [[TMP2:%.*]] = zext i32 [[TMP1]] to i129
9 ; CHECK-NEXT:    ret i129 [[TMP2]]
11   %conv = fptoui half %a to i129
12   ret i129 %conv
15 define i129 @floattoui129(float %a) {
16 ; CHECK-LABEL: @floattoui129(
17 ; CHECK-NEXT:  fp-to-i-entry:
18 ; CHECK-NEXT:    [[TMP0:%.*]] = bitcast float [[A:%.*]] to i32
19 ; CHECK-NEXT:    [[TMP1:%.*]] = zext i32 [[TMP0]] to i129
20 ; CHECK-NEXT:    [[TMP2:%.*]] = icmp sgt i32 [[TMP0]], -1
21 ; CHECK-NEXT:    [[TMP3:%.*]] = select i1 [[TMP2]], i129 1, i129 -1
22 ; CHECK-NEXT:    [[TMP4:%.*]] = lshr i129 [[TMP1]], 23
23 ; CHECK-NEXT:    [[TMP5:%.*]] = and i129 [[TMP4]], 255
24 ; CHECK-NEXT:    [[TMP6:%.*]] = and i129 [[TMP1]], 8388607
25 ; CHECK-NEXT:    [[TMP7:%.*]] = or i129 [[TMP6]], 8388608
26 ; CHECK-NEXT:    [[TMP8:%.*]] = icmp ult i129 [[TMP5]], 127
27 ; CHECK-NEXT:    br i1 [[TMP8]], label [[FP_TO_I_CLEANUP:%.*]], label [[FP_TO_I_IF_END:%.*]]
28 ; CHECK:       fp-to-i-if-end:
29 ; CHECK-NEXT:    [[TMP9:%.*]] = add i129 [[TMP5]], -256
30 ; CHECK-NEXT:    [[TMP10:%.*]] = icmp ult i129 [[TMP9]], -129
31 ; CHECK-NEXT:    br i1 [[TMP10]], label [[FP_TO_I_IF_THEN5:%.*]], label [[FP_TO_I_IF_END9:%.*]]
32 ; CHECK:       fp-to-i-if-then5:
33 ; CHECK-NEXT:    [[TMP11:%.*]] = select i1 [[TMP2]], i129 340282366920938463463374607431768211455, i129 -340282366920938463463374607431768211456
34 ; CHECK-NEXT:    br label [[FP_TO_I_CLEANUP]]
35 ; CHECK:       fp-to-i-if-end9:
36 ; CHECK-NEXT:    [[TMP12:%.*]] = icmp ult i129 [[TMP5]], 150
37 ; CHECK-NEXT:    br i1 [[TMP12]], label [[FP_TO_I_IF_THEN12:%.*]], label [[FP_TO_I_IF_ELSE:%.*]]
38 ; CHECK:       fp-to-i-if-then12:
39 ; CHECK-NEXT:    [[TMP13:%.*]] = sub i129 150, [[TMP5]]
40 ; CHECK-NEXT:    [[TMP14:%.*]] = lshr i129 [[TMP7]], [[TMP13]]
41 ; CHECK-NEXT:    [[TMP15:%.*]] = mul i129 [[TMP14]], [[TMP3]]
42 ; CHECK-NEXT:    br label [[FP_TO_I_CLEANUP]]
43 ; CHECK:       fp-to-i-if-else:
44 ; CHECK-NEXT:    [[TMP16:%.*]] = add i129 [[TMP5]], -150
45 ; CHECK-NEXT:    [[TMP17:%.*]] = shl i129 [[TMP7]], [[TMP16]]
46 ; CHECK-NEXT:    [[TMP18:%.*]] = mul i129 [[TMP17]], [[TMP3]]
47 ; CHECK-NEXT:    br label [[FP_TO_I_CLEANUP]]
48 ; CHECK:       fp-to-i-cleanup:
49 ; CHECK-NEXT:    [[TMP19:%.*]] = phi i129 [ [[TMP11]], [[FP_TO_I_IF_THEN5]] ], [ [[TMP15]], [[FP_TO_I_IF_THEN12]] ], [ [[TMP18]], [[FP_TO_I_IF_ELSE]] ], [ 0, [[FP_TO_I_ENTRY:%.*]] ]
50 ; CHECK-NEXT:    ret i129 [[TMP19]]
52   %conv = fptoui float %a to i129
53   ret i129 %conv
56 define i129 @doubletoui129(double %a) {
57 ; CHECK-LABEL: @doubletoui129(
58 ; CHECK-NEXT:  fp-to-i-entry:
59 ; CHECK-NEXT:    [[TMP0:%.*]] = bitcast double [[A:%.*]] to i64
60 ; CHECK-NEXT:    [[TMP1:%.*]] = zext i64 [[TMP0]] to i129
61 ; CHECK-NEXT:    [[TMP2:%.*]] = icmp sgt i64 [[TMP0]], -1
62 ; CHECK-NEXT:    [[TMP3:%.*]] = select i1 [[TMP2]], i129 1, i129 -1
63 ; CHECK-NEXT:    [[TMP4:%.*]] = lshr i129 [[TMP1]], 52
64 ; CHECK-NEXT:    [[TMP5:%.*]] = and i129 [[TMP4]], 2047
65 ; CHECK-NEXT:    [[TMP6:%.*]] = and i129 [[TMP1]], 4503599627370495
66 ; CHECK-NEXT:    [[TMP7:%.*]] = or i129 [[TMP6]], 4503599627370496
67 ; CHECK-NEXT:    [[TMP8:%.*]] = icmp ult i129 [[TMP5]], 1023
68 ; CHECK-NEXT:    br i1 [[TMP8]], label [[FP_TO_I_CLEANUP:%.*]], label [[FP_TO_I_IF_END:%.*]]
69 ; CHECK:       fp-to-i-if-end:
70 ; CHECK-NEXT:    [[TMP9:%.*]] = add i129 [[TMP5]], -1152
71 ; CHECK-NEXT:    [[TMP10:%.*]] = icmp ult i129 [[TMP9]], -129
72 ; CHECK-NEXT:    br i1 [[TMP10]], label [[FP_TO_I_IF_THEN5:%.*]], label [[FP_TO_I_IF_END9:%.*]]
73 ; CHECK:       fp-to-i-if-then5:
74 ; CHECK-NEXT:    [[TMP11:%.*]] = select i1 [[TMP2]], i129 340282366920938463463374607431768211455, i129 -340282366920938463463374607431768211456
75 ; CHECK-NEXT:    br label [[FP_TO_I_CLEANUP]]
76 ; CHECK:       fp-to-i-if-end9:
77 ; CHECK-NEXT:    [[TMP12:%.*]] = icmp ult i129 [[TMP5]], 1075
78 ; CHECK-NEXT:    br i1 [[TMP12]], label [[FP_TO_I_IF_THEN12:%.*]], label [[FP_TO_I_IF_ELSE:%.*]]
79 ; CHECK:       fp-to-i-if-then12:
80 ; CHECK-NEXT:    [[TMP13:%.*]] = sub i129 1075, [[TMP5]]
81 ; CHECK-NEXT:    [[TMP14:%.*]] = lshr i129 [[TMP7]], [[TMP13]]
82 ; CHECK-NEXT:    [[TMP15:%.*]] = mul i129 [[TMP14]], [[TMP3]]
83 ; CHECK-NEXT:    br label [[FP_TO_I_CLEANUP]]
84 ; CHECK:       fp-to-i-if-else:
85 ; CHECK-NEXT:    [[TMP16:%.*]] = add i129 [[TMP5]], -1075
86 ; CHECK-NEXT:    [[TMP17:%.*]] = shl i129 [[TMP7]], [[TMP16]]
87 ; CHECK-NEXT:    [[TMP18:%.*]] = mul i129 [[TMP17]], [[TMP3]]
88 ; CHECK-NEXT:    br label [[FP_TO_I_CLEANUP]]
89 ; CHECK:       fp-to-i-cleanup:
90 ; CHECK-NEXT:    [[TMP19:%.*]] = phi i129 [ [[TMP11]], [[FP_TO_I_IF_THEN5]] ], [ [[TMP15]], [[FP_TO_I_IF_THEN12]] ], [ [[TMP18]], [[FP_TO_I_IF_ELSE]] ], [ 0, [[FP_TO_I_ENTRY:%.*]] ]
91 ; CHECK-NEXT:    ret i129 [[TMP19]]
93   %conv = fptoui double %a to i129
94   ret i129 %conv
97 define i129 @x86_fp80toui129(x86_fp80 %a) {
98 ; CHECK-LABEL: @x86_fp80toui129(
99 ; CHECK-NEXT:  fp-to-i-entry:
100 ; CHECK-NEXT:    [[TMP0:%.*]] = fpext x86_fp80 [[A:%.*]] to fp128
101 ; CHECK-NEXT:    [[TMP1:%.*]] = bitcast fp128 [[TMP0]] to i128
102 ; CHECK-NEXT:    [[TMP2:%.*]] = zext i128 [[TMP1]] to i129
103 ; CHECK-NEXT:    [[TMP3:%.*]] = icmp sgt i128 [[TMP1]], -1
104 ; CHECK-NEXT:    [[TMP4:%.*]] = select i1 [[TMP3]], i129 1, i129 -1
105 ; CHECK-NEXT:    [[TMP5:%.*]] = lshr i129 [[TMP2]], 112
106 ; CHECK-NEXT:    [[TMP6:%.*]] = and i129 [[TMP5]], 32767
107 ; CHECK-NEXT:    [[TMP7:%.*]] = and i129 [[TMP2]], 5192296858534827628530496329220095
108 ; CHECK-NEXT:    [[TMP8:%.*]] = or i129 [[TMP7]], 5192296858534827628530496329220096
109 ; CHECK-NEXT:    [[TMP9:%.*]] = icmp ult i129 [[TMP6]], 16383
110 ; CHECK-NEXT:    br i1 [[TMP9]], label [[FP_TO_I_CLEANUP:%.*]], label [[FP_TO_I_IF_END:%.*]]
111 ; CHECK:       fp-to-i-if-end:
112 ; CHECK-NEXT:    [[TMP10:%.*]] = add i129 [[TMP6]], -16512
113 ; CHECK-NEXT:    [[TMP11:%.*]] = icmp ult i129 [[TMP10]], -129
114 ; CHECK-NEXT:    br i1 [[TMP11]], label [[FP_TO_I_IF_THEN5:%.*]], label [[FP_TO_I_IF_END9:%.*]]
115 ; CHECK:       fp-to-i-if-then5:
116 ; CHECK-NEXT:    [[TMP12:%.*]] = select i1 [[TMP3]], i129 340282366920938463463374607431768211455, i129 -340282366920938463463374607431768211456
117 ; CHECK-NEXT:    br label [[FP_TO_I_CLEANUP]]
118 ; CHECK:       fp-to-i-if-end9:
119 ; CHECK-NEXT:    [[TMP13:%.*]] = icmp ult i129 [[TMP6]], 16495
120 ; CHECK-NEXT:    br i1 [[TMP13]], label [[FP_TO_I_IF_THEN12:%.*]], label [[FP_TO_I_IF_ELSE:%.*]]
121 ; CHECK:       fp-to-i-if-then12:
122 ; CHECK-NEXT:    [[TMP14:%.*]] = sub i129 16495, [[TMP6]]
123 ; CHECK-NEXT:    [[TMP15:%.*]] = lshr i129 [[TMP8]], [[TMP14]]
124 ; CHECK-NEXT:    [[TMP16:%.*]] = mul i129 [[TMP15]], [[TMP4]]
125 ; CHECK-NEXT:    br label [[FP_TO_I_CLEANUP]]
126 ; CHECK:       fp-to-i-if-else:
127 ; CHECK-NEXT:    [[TMP17:%.*]] = add i129 [[TMP6]], -16495
128 ; CHECK-NEXT:    [[TMP18:%.*]] = shl i129 [[TMP8]], [[TMP17]]
129 ; CHECK-NEXT:    [[TMP19:%.*]] = mul i129 [[TMP18]], [[TMP4]]
130 ; CHECK-NEXT:    br label [[FP_TO_I_CLEANUP]]
131 ; CHECK:       fp-to-i-cleanup:
132 ; CHECK-NEXT:    [[TMP20:%.*]] = phi i129 [ [[TMP12]], [[FP_TO_I_IF_THEN5]] ], [ [[TMP16]], [[FP_TO_I_IF_THEN12]] ], [ [[TMP19]], [[FP_TO_I_IF_ELSE]] ], [ 0, [[FP_TO_I_ENTRY:%.*]] ]
133 ; CHECK-NEXT:    ret i129 [[TMP20]]
135   %conv = fptoui x86_fp80 %a to i129
136   ret i129 %conv
139 define i129 @fp128toui129(fp128 %a) {
140 ; CHECK-LABEL: @fp128toui129(
141 ; CHECK-NEXT:  fp-to-i-entry:
142 ; CHECK-NEXT:    [[TMP0:%.*]] = bitcast fp128 [[A:%.*]] to i128
143 ; CHECK-NEXT:    [[TMP1:%.*]] = zext i128 [[TMP0]] to i129
144 ; CHECK-NEXT:    [[TMP2:%.*]] = icmp sgt i128 [[TMP0]], -1
145 ; CHECK-NEXT:    [[TMP3:%.*]] = select i1 [[TMP2]], i129 1, i129 -1
146 ; CHECK-NEXT:    [[TMP4:%.*]] = lshr i129 [[TMP1]], 112
147 ; CHECK-NEXT:    [[TMP5:%.*]] = and i129 [[TMP4]], 32767
148 ; CHECK-NEXT:    [[TMP6:%.*]] = and i129 [[TMP1]], 5192296858534827628530496329220095
149 ; CHECK-NEXT:    [[TMP7:%.*]] = or i129 [[TMP6]], 5192296858534827628530496329220096
150 ; CHECK-NEXT:    [[TMP8:%.*]] = icmp ult i129 [[TMP5]], 16383
151 ; CHECK-NEXT:    br i1 [[TMP8]], label [[FP_TO_I_CLEANUP:%.*]], label [[FP_TO_I_IF_END:%.*]]
152 ; CHECK:       fp-to-i-if-end:
153 ; CHECK-NEXT:    [[TMP9:%.*]] = add i129 [[TMP5]], -16512
154 ; CHECK-NEXT:    [[TMP10:%.*]] = icmp ult i129 [[TMP9]], -129
155 ; CHECK-NEXT:    br i1 [[TMP10]], label [[FP_TO_I_IF_THEN5:%.*]], label [[FP_TO_I_IF_END9:%.*]]
156 ; CHECK:       fp-to-i-if-then5:
157 ; CHECK-NEXT:    [[TMP11:%.*]] = select i1 [[TMP2]], i129 340282366920938463463374607431768211455, i129 -340282366920938463463374607431768211456
158 ; CHECK-NEXT:    br label [[FP_TO_I_CLEANUP]]
159 ; CHECK:       fp-to-i-if-end9:
160 ; CHECK-NEXT:    [[TMP12:%.*]] = icmp ult i129 [[TMP5]], 16495
161 ; CHECK-NEXT:    br i1 [[TMP12]], label [[FP_TO_I_IF_THEN12:%.*]], label [[FP_TO_I_IF_ELSE:%.*]]
162 ; CHECK:       fp-to-i-if-then12:
163 ; CHECK-NEXT:    [[TMP13:%.*]] = sub i129 16495, [[TMP5]]
164 ; CHECK-NEXT:    [[TMP14:%.*]] = lshr i129 [[TMP7]], [[TMP13]]
165 ; CHECK-NEXT:    [[TMP15:%.*]] = mul i129 [[TMP14]], [[TMP3]]
166 ; CHECK-NEXT:    br label [[FP_TO_I_CLEANUP]]
167 ; CHECK:       fp-to-i-if-else:
168 ; CHECK-NEXT:    [[TMP16:%.*]] = add i129 [[TMP5]], -16495
169 ; CHECK-NEXT:    [[TMP17:%.*]] = shl i129 [[TMP7]], [[TMP16]]
170 ; CHECK-NEXT:    [[TMP18:%.*]] = mul i129 [[TMP17]], [[TMP3]]
171 ; CHECK-NEXT:    br label [[FP_TO_I_CLEANUP]]
172 ; CHECK:       fp-to-i-cleanup:
173 ; CHECK-NEXT:    [[TMP19:%.*]] = phi i129 [ [[TMP11]], [[FP_TO_I_IF_THEN5]] ], [ [[TMP15]], [[FP_TO_I_IF_THEN12]] ], [ [[TMP18]], [[FP_TO_I_IF_ELSE]] ], [ 0, [[FP_TO_I_ENTRY:%.*]] ]
174 ; CHECK-NEXT:    ret i129 [[TMP19]]
176   %conv = fptoui fp128 %a to i129
177   ret i129 %conv
180 define <2 x i129> @floattoui129v2(<2 x float> %a) {
181 ; CHECK-LABEL: @floattoui129v2(
182 ; CHECK-NEXT:  fp-to-i-entryfp-to-i-entry:
183 ; CHECK-NEXT:    [[TMP0:%.*]] = extractelement <2 x float> [[A:%.*]], i64 0
184 ; CHECK-NEXT:    [[TMP1:%.*]] = bitcast float [[TMP0]] to i32
185 ; CHECK-NEXT:    [[TMP2:%.*]] = zext i32 [[TMP1]] to i129
186 ; CHECK-NEXT:    [[TMP3:%.*]] = icmp sgt i32 [[TMP1]], -1
187 ; CHECK-NEXT:    [[TMP4:%.*]] = select i1 [[TMP3]], i129 1, i129 -1
188 ; CHECK-NEXT:    [[TMP5:%.*]] = lshr i129 [[TMP2]], 23
189 ; CHECK-NEXT:    [[TMP6:%.*]] = and i129 [[TMP5]], 255
190 ; CHECK-NEXT:    [[TMP7:%.*]] = and i129 [[TMP2]], 8388607
191 ; CHECK-NEXT:    [[TMP8:%.*]] = or i129 [[TMP7]], 8388608
192 ; CHECK-NEXT:    [[TMP9:%.*]] = icmp ult i129 [[TMP6]], 127
193 ; CHECK-NEXT:    br i1 [[TMP9]], label [[FP_TO_I_CLEANUP1:%.*]], label [[FP_TO_I_IF_END2:%.*]]
194 ; CHECK:       fp-to-i-if-end2:
195 ; CHECK-NEXT:    [[TMP10:%.*]] = add i129 [[TMP6]], -256
196 ; CHECK-NEXT:    [[TMP11:%.*]] = icmp ult i129 [[TMP10]], -129
197 ; CHECK-NEXT:    br i1 [[TMP11]], label [[FP_TO_I_IF_THEN53:%.*]], label [[FP_TO_I_IF_END94:%.*]]
198 ; CHECK:       fp-to-i-if-then53:
199 ; CHECK-NEXT:    [[TMP12:%.*]] = select i1 [[TMP3]], i129 340282366920938463463374607431768211455, i129 -340282366920938463463374607431768211456
200 ; CHECK-NEXT:    br label [[FP_TO_I_CLEANUP1]]
201 ; CHECK:       fp-to-i-if-end94:
202 ; CHECK-NEXT:    [[TMP13:%.*]] = icmp ult i129 [[TMP6]], 150
203 ; CHECK-NEXT:    br i1 [[TMP13]], label [[FP_TO_I_IF_THEN125:%.*]], label [[FP_TO_I_IF_ELSE6:%.*]]
204 ; CHECK:       fp-to-i-if-then125:
205 ; CHECK-NEXT:    [[TMP14:%.*]] = sub i129 150, [[TMP6]]
206 ; CHECK-NEXT:    [[TMP15:%.*]] = lshr i129 [[TMP8]], [[TMP14]]
207 ; CHECK-NEXT:    [[TMP16:%.*]] = mul i129 [[TMP15]], [[TMP4]]
208 ; CHECK-NEXT:    br label [[FP_TO_I_CLEANUP1]]
209 ; CHECK:       fp-to-i-if-else6:
210 ; CHECK-NEXT:    [[TMP17:%.*]] = add i129 [[TMP6]], -150
211 ; CHECK-NEXT:    [[TMP18:%.*]] = shl i129 [[TMP8]], [[TMP17]]
212 ; CHECK-NEXT:    [[TMP19:%.*]] = mul i129 [[TMP18]], [[TMP4]]
213 ; CHECK-NEXT:    br label [[FP_TO_I_CLEANUP1]]
214 ; CHECK:       fp-to-i-cleanup1:
215 ; CHECK-NEXT:    [[TMP20:%.*]] = phi i129 [ [[TMP12]], [[FP_TO_I_IF_THEN53]] ], [ [[TMP16]], [[FP_TO_I_IF_THEN125]] ], [ [[TMP19]], [[FP_TO_I_IF_ELSE6]] ], [ 0, [[FP_TO_I_ENTRYFP_TO_I_ENTRY:%.*]] ]
216 ; CHECK-NEXT:    [[TMP21:%.*]] = insertelement <2 x i129> poison, i129 [[TMP20]], i64 0
217 ; CHECK-NEXT:    [[TMP22:%.*]] = extractelement <2 x float> [[A]], i64 1
218 ; CHECK-NEXT:    [[TMP23:%.*]] = bitcast float [[TMP22]] to i32
219 ; CHECK-NEXT:    [[TMP24:%.*]] = zext i32 [[TMP23]] to i129
220 ; CHECK-NEXT:    [[TMP25:%.*]] = icmp sgt i32 [[TMP23]], -1
221 ; CHECK-NEXT:    [[TMP26:%.*]] = select i1 [[TMP25]], i129 1, i129 -1
222 ; CHECK-NEXT:    [[TMP27:%.*]] = lshr i129 [[TMP24]], 23
223 ; CHECK-NEXT:    [[TMP28:%.*]] = and i129 [[TMP27]], 255
224 ; CHECK-NEXT:    [[TMP29:%.*]] = and i129 [[TMP24]], 8388607
225 ; CHECK-NEXT:    [[TMP30:%.*]] = or i129 [[TMP29]], 8388608
226 ; CHECK-NEXT:    [[TMP31:%.*]] = icmp ult i129 [[TMP28]], 127
227 ; CHECK-NEXT:    br i1 [[TMP31]], label [[FP_TO_I_CLEANUP:%.*]], label [[FP_TO_I_IF_END:%.*]]
228 ; CHECK:       fp-to-i-if-end:
229 ; CHECK-NEXT:    [[TMP32:%.*]] = add i129 [[TMP28]], -256
230 ; CHECK-NEXT:    [[TMP33:%.*]] = icmp ult i129 [[TMP32]], -129
231 ; CHECK-NEXT:    br i1 [[TMP33]], label [[FP_TO_I_IF_THEN5:%.*]], label [[FP_TO_I_IF_END9:%.*]]
232 ; CHECK:       fp-to-i-if-then5:
233 ; CHECK-NEXT:    [[TMP34:%.*]] = select i1 [[TMP25]], i129 340282366920938463463374607431768211455, i129 -340282366920938463463374607431768211456
234 ; CHECK-NEXT:    br label [[FP_TO_I_CLEANUP]]
235 ; CHECK:       fp-to-i-if-end9:
236 ; CHECK-NEXT:    [[TMP35:%.*]] = icmp ult i129 [[TMP28]], 150
237 ; CHECK-NEXT:    br i1 [[TMP35]], label [[FP_TO_I_IF_THEN12:%.*]], label [[FP_TO_I_IF_ELSE:%.*]]
238 ; CHECK:       fp-to-i-if-then12:
239 ; CHECK-NEXT:    [[TMP36:%.*]] = sub i129 150, [[TMP28]]
240 ; CHECK-NEXT:    [[TMP37:%.*]] = lshr i129 [[TMP30]], [[TMP36]]
241 ; CHECK-NEXT:    [[TMP38:%.*]] = mul i129 [[TMP37]], [[TMP26]]
242 ; CHECK-NEXT:    br label [[FP_TO_I_CLEANUP]]
243 ; CHECK:       fp-to-i-if-else:
244 ; CHECK-NEXT:    [[TMP39:%.*]] = add i129 [[TMP28]], -150
245 ; CHECK-NEXT:    [[TMP40:%.*]] = shl i129 [[TMP30]], [[TMP39]]
246 ; CHECK-NEXT:    [[TMP41:%.*]] = mul i129 [[TMP40]], [[TMP26]]
247 ; CHECK-NEXT:    br label [[FP_TO_I_CLEANUP]]
248 ; CHECK:       fp-to-i-cleanup:
249 ; CHECK-NEXT:    [[TMP42:%.*]] = phi i129 [ [[TMP34]], [[FP_TO_I_IF_THEN5]] ], [ [[TMP38]], [[FP_TO_I_IF_THEN12]] ], [ [[TMP41]], [[FP_TO_I_IF_ELSE]] ], [ 0, [[FP_TO_I_CLEANUP1]] ]
250 ; CHECK-NEXT:    [[TMP43:%.*]] = insertelement <2 x i129> [[TMP21]], i129 [[TMP42]], i64 1
251 ; CHECK-NEXT:    ret <2 x i129> [[TMP43]]
253   %conv = fptoui <2 x float> %a to <2 x i129>
254   ret <2 x i129> %conv