xref: /llvm-project/llvm/test/Transforms/ExpandLargeFpConvert/X86/expand-large-fp-convert-fptosi129.ll (revision 7edddee2aa6a6183e40784c9141afec3e2eabb95)
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
4
5define i129 @halftosi129(half %a) {
6; CHECK-LABEL: @halftosi129(
7; CHECK-NEXT:    [[TMP1:%.*]] = fptosi half [[A:%.*]] to i32
8; CHECK-NEXT:    [[TMP2:%.*]] = sext i32 [[TMP1]] to i129
9; CHECK-NEXT:    ret i129 [[TMP2]]
10;
11  %conv = fptosi half %a to i129
12  ret i129 %conv
13}
14
15define i129 @floattosi129(float %a) {
16; CHECK-LABEL: @floattosi129(
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]]
51;
52  %conv = fptosi float %a to i129
53  ret i129 %conv
54}
55
56define i129 @doubletosi129(double %a) {
57; CHECK-LABEL: @doubletosi129(
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]]
92;
93  %conv = fptosi double %a to i129
94  ret i129 %conv
95}
96
97define i129 @x86_fp80tosi129(x86_fp80 %a) {
98; CHECK-LABEL: @x86_fp80tosi129(
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]]
134;
135  %conv = fptosi x86_fp80 %a to i129
136  ret i129 %conv
137}
138
139define i129 @fp128tosi129(fp128 %a) {
140; CHECK-LABEL: @fp128tosi129(
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]]
175;
176  %conv = fptosi fp128 %a to i129
177  ret i129 %conv
178}
179
180define <2 x i129> @floattosi129v2(<2 x float> %a) {
181; CHECK-LABEL: @floattosi129v2(
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]]
252;
253  %conv = fptosi <2 x float> %a to <2 x i129>
254  ret <2 x i129> %conv
255}
256