1; RUN: llc < %s -mtriple=ve-unknown-unknown | FileCheck %s
2
3define i8 @p0i8() {
4; CHECK-LABEL: p0i8:
5; CHECK:       # %bb.0:
6; CHECK-NEXT:    or %s0, 0, (0)1
7; CHECK-NEXT:    b.l.t (, %s10)
8  ret i8 0
9}
10
11define signext i8 @p0si8() {
12; CHECK-LABEL: p0si8:
13; CHECK:       # %bb.0:
14; CHECK-NEXT:    or %s0, 0, (0)1
15; CHECK-NEXT:    b.l.t (, %s10)
16  ret i8 0
17}
18
19define zeroext i8 @p0zi8() {
20; CHECK-LABEL: p0zi8:
21; CHECK:       # %bb.0:
22; CHECK-NEXT:    or %s0, 0, (0)1
23; CHECK-NEXT:    b.l.t (, %s10)
24  ret i8 0
25}
26
27define i8 @p128i8() {
28; CHECK-LABEL: p128i8:
29; CHECK:       # %bb.0:
30; CHECK-NEXT:    lea %s0, 128
31; CHECK-NEXT:    b.l.t (, %s10)
32  ret i8 128
33}
34
35define signext i8 @p128si8() {
36; CHECK-LABEL: p128si8:
37; CHECK:       # %bb.0:
38; CHECK-NEXT:    lea %s0, -128
39; CHECK-NEXT:    b.l.t (, %s10)
40  ret i8 128
41}
42
43define zeroext i8 @p128zi8() {
44; CHECK-LABEL: p128zi8:
45; CHECK:       # %bb.0:
46; CHECK-NEXT:    lea %s0, 128
47; CHECK-NEXT:    b.l.t (, %s10)
48  ret i8 128
49}
50
51define i8 @p256i8() {
52; CHECK-LABEL: p256i8:
53; CHECK:       # %bb.0:
54; CHECK-NEXT:    or %s0, 0, (0)1
55; CHECK-NEXT:    b.l.t (, %s10)
56  ret i8 256
57}
58
59define signext i8 @p256si8() {
60; CHECK-LABEL: p256si8:
61; CHECK:       # %bb.0:
62; CHECK-NEXT:    or %s0, 0, (0)1
63; CHECK-NEXT:    b.l.t (, %s10)
64  ret i8 256
65}
66
67define zeroext i8 @p256zi8() {
68; CHECK-LABEL: p256zi8:
69; CHECK:       # %bb.0:
70; CHECK-NEXT:    or %s0, 0, (0)1
71; CHECK-NEXT:    b.l.t (, %s10)
72  ret i8 256
73}
74
75define i16 @p0i16() {
76; CHECK-LABEL: p0i16:
77; CHECK:       # %bb.0:
78; CHECK-NEXT:    or %s0, 0, (0)1
79; CHECK-NEXT:    b.l.t (, %s10)
80  ret i16 0
81}
82
83define signext i16 @p0si16() {
84; CHECK-LABEL: p0si16:
85; CHECK:       # %bb.0:
86; CHECK-NEXT:    or %s0, 0, (0)1
87; CHECK-NEXT:    b.l.t (, %s10)
88  ret i16 0
89}
90
91define zeroext i16 @p0zi16() {
92; CHECK-LABEL: p0zi16:
93; CHECK:       # %bb.0:
94; CHECK-NEXT:    or %s0, 0, (0)1
95; CHECK-NEXT:    b.l.t (, %s10)
96  ret i16 0
97}
98
99define i32 @p0i32() {
100; CHECK-LABEL: p0i32:
101; CHECK:       # %bb.0:
102; CHECK-NEXT:    or %s0, 0, (0)1
103; CHECK-NEXT:    b.l.t (, %s10)
104  ret i32 0
105}
106
107define signext i32 @p0si32() {
108; CHECK-LABEL: p0si32:
109; CHECK:       # %bb.0:
110; CHECK-NEXT:    or %s0, 0, (0)1
111; CHECK-NEXT:    b.l.t (, %s10)
112  ret i32 0
113}
114
115define zeroext i32 @p0zi32() {
116; CHECK-LABEL: p0zi32:
117; CHECK:       # %bb.0:
118; CHECK-NEXT:    or %s0, 0, (0)1
119; CHECK-NEXT:    b.l.t (, %s10)
120  ret i32 0
121}
122
123define i32 @p128i32() {
124; CHECK-LABEL: p128i32:
125; CHECK:       # %bb.0:
126; CHECK-NEXT:    lea %s0, 128
127; CHECK-NEXT:    b.l.t (, %s10)
128  ret i32 128
129}
130
131define signext i32 @p128si32() {
132; CHECK-LABEL: p128si32:
133; CHECK:       # %bb.0:
134; CHECK-NEXT:    lea %s0, 128
135; CHECK-NEXT:    b.l.t (, %s10)
136  ret i32 128
137}
138
139define zeroext i32 @p128zi32() {
140; CHECK-LABEL: p128zi32:
141; CHECK:       # %bb.0:
142; CHECK-NEXT:    lea %s0, 128
143; CHECK-NEXT:    b.l.t (, %s10)
144  ret i32 128
145}
146
147define i64 @p0i64() {
148; CHECK-LABEL: p0i64:
149; CHECK:       # %bb.0:
150; CHECK-NEXT:    or %s0, 0, (0)1
151; CHECK-NEXT:    b.l.t (, %s10)
152  ret i64 0
153}
154
155define signext i64 @p0si64() {
156; CHECK-LABEL: p0si64:
157; CHECK:       # %bb.0:
158; CHECK-NEXT:    or %s0, 0, (0)1
159; CHECK-NEXT:    b.l.t (, %s10)
160  ret i64 0
161}
162
163define zeroext i64 @p0zi64() {
164; CHECK-LABEL: p0zi64:
165; CHECK:       # %bb.0:
166; CHECK-NEXT:    or %s0, 0, (0)1
167; CHECK-NEXT:    b.l.t (, %s10)
168  ret i64 0
169}
170
171define i64 @p128i64() {
172; CHECK-LABEL: p128i64:
173; CHECK:       # %bb.0:
174; CHECK-NEXT:    lea %s0, 128
175; CHECK-NEXT:    b.l.t (, %s10)
176  ret i64 128
177}
178
179define signext i64 @p128si64() {
180; CHECK-LABEL: p128si64:
181; CHECK:       # %bb.0:
182; CHECK-NEXT:    lea %s0, 128
183; CHECK-NEXT:    b.l.t (, %s10)
184  ret i64 128
185}
186
187define zeroext i64 @p128zi64() {
188; CHECK-LABEL: p128zi64:
189; CHECK:       # %bb.0:
190; CHECK-NEXT:    lea %s0, 128
191; CHECK-NEXT:    b.l.t (, %s10)
192  ret i64 128
193}
194
195define i64 @p2264924160i64() {
196; CHECK-LABEL: p2264924160i64:
197; CHECK:       # %bb.0:
198; CHECK-NEXT:    lea %s0, -2030043136
199; CHECK-NEXT:    and %s0, %s0, (32)0
200; CHECK-NEXT:    b.l.t (, %s10)
201  ret i64 2264924160
202}
203
204define signext i64 @p2264924160si64() {
205; CHECK-LABEL: p2264924160si64:
206; CHECK:       # %bb.0:
207; CHECK-NEXT:    lea %s0, -2030043136
208; CHECK-NEXT:    and %s0, %s0, (32)0
209; CHECK-NEXT:    b.l.t (, %s10)
210  ret i64 2264924160
211}
212
213define zeroext i64 @p2264924160zi64() {
214; CHECK-LABEL: p2264924160zi64:
215; CHECK:       # %bb.0:
216; CHECK-NEXT:    lea %s0, -2030043136
217; CHECK-NEXT:    and %s0, %s0, (32)0
218; CHECK-NEXT:    b.l.t (, %s10)
219  ret i64 2264924160
220}
221
222define i64 @p2147483647i64() {
223; CHECK-LABEL: p2147483647i64:
224; CHECK:       # %bb.0:
225; CHECK-NEXT:    lea %s0, 2147483647
226; CHECK-NEXT:    b.l.t (, %s10)
227  ret i64 2147483647
228}
229
230define signext i64 @p2147483647si64() {
231; CHECK-LABEL: p2147483647si64:
232; CHECK:       # %bb.0:
233; CHECK-NEXT:    lea %s0, 2147483647
234; CHECK-NEXT:    b.l.t (, %s10)
235  ret i64 2147483647
236}
237
238define zeroext i64 @p2147483647zi64() {
239; CHECK-LABEL: p2147483647zi64:
240; CHECK:       # %bb.0:
241; CHECK-NEXT:    lea %s0, 2147483647
242; CHECK-NEXT:    b.l.t (, %s10)
243  ret i64 2147483647
244}
245
246define i64 @p15032385535i64() {
247; CHECK-LABEL: p15032385535i64:
248; CHECK:       # %bb.0:
249; CHECK-NEXT:    lea %s0, 2147483647
250; CHECK-NEXT:    lea.sl %s0, 3(, %s0)
251; CHECK-NEXT:    b.l.t (, %s10)
252  ret i64 15032385535
253}
254
255define signext i64 @p15032385535si64() {
256; CHECK-LABEL: p15032385535si64:
257; CHECK:       # %bb.0:
258; CHECK-NEXT:    lea %s0, 2147483647
259; CHECK-NEXT:    lea.sl %s0, 3(, %s0)
260; CHECK-NEXT:    b.l.t (, %s10)
261  ret i64 15032385535
262}
263
264define zeroext i64 @p15032385535zi64() {
265; CHECK-LABEL: p15032385535zi64:
266; CHECK:       # %bb.0:
267; CHECK-NEXT:    lea %s0, 2147483647
268; CHECK-NEXT:    lea.sl %s0, 3(, %s0)
269; CHECK-NEXT:    b.l.t (, %s10)
270  ret i64 15032385535
271}
272
273define i64 @p15032385536i64() {
274; CHECK-LABEL: p15032385536i64:
275; CHECK:       # %bb.0:
276; CHECK-NEXT:    lea %s0, -2147483648
277; CHECK-NEXT:    and %s0, %s0, (32)0
278; CHECK-NEXT:    lea.sl %s0, 3(, %s0)
279; CHECK-NEXT:    b.l.t (, %s10)
280  ret i64 15032385536
281}
282
283define signext i64 @p15032385536si64() {
284; CHECK-LABEL: p15032385536si64:
285; CHECK:       # %bb.0:
286; CHECK-NEXT:    lea %s0, -2147483648
287; CHECK-NEXT:    and %s0, %s0, (32)0
288; CHECK-NEXT:    lea.sl %s0, 3(, %s0)
289; CHECK-NEXT:    b.l.t (, %s10)
290  ret i64 15032385536
291}
292
293define zeroext i64 @p15032385536zi64() {
294; CHECK-LABEL: p15032385536zi64:
295; CHECK:       # %bb.0:
296; CHECK-NEXT:    lea %s0, -2147483648
297; CHECK-NEXT:    and %s0, %s0, (32)0
298; CHECK-NEXT:    lea.sl %s0, 3(, %s0)
299; CHECK-NEXT:    b.l.t (, %s10)
300  ret i64 15032385536
301}
302
303define float @m5f32() {
304; CHECK-LABEL: m5f32:
305; CHECK:       # %bb.0:
306; CHECK-NEXT:    lea.sl %s0, -1063256064
307; CHECK-NEXT:    b.l.t (, %s10)
308  ret float -5.000000e+00
309}
310
311define double @m5f64() {
312; CHECK-LABEL: m5f64:
313; CHECK:       # %bb.0:
314; CHECK-NEXT:    lea.sl %s0, -1072431104
315; CHECK-NEXT:    b.l.t (, %s10)
316  ret double -5.000000e+00
317}
318
319define float @p2p3f32() {
320; CHECK-LABEL: p2p3f32:
321; CHECK:       # %bb.0:
322; CHECK-NEXT:    lea.sl %s0, 1075000115
323; CHECK-NEXT:    b.l.t (, %s10)
324  ret float 0x4002666660000000 ; 2.3
325}
326
327define double @p2p3f64() {
328; CHECK-LABEL: p2p3f64:
329; CHECK:       # %bb.0:
330; CHECK-NEXT:    lea %s0, 1717986918
331; CHECK-NEXT:    lea.sl %s0, 1073899110(, %s0)
332; CHECK-NEXT:    b.l.t (, %s10)
333  ret double 2.3
334}
335
336define float @p128p3f32() {
337; CHECK-LABEL: p128p3f32:
338; CHECK:       # %bb.0:
339; CHECK-NEXT:    lea.sl %s0, 1124093133
340; CHECK-NEXT:    b.l.t (, %s10)
341  ret float 0x40600999A0000000 ; 128.3
342}
343
344define double @p128p3f64() {
345; CHECK-LABEL: p128p3f64:
346; CHECK:       # %bb.0:
347; CHECK-NEXT:    lea %s0, -1717986918
348; CHECK-NEXT:    and %s0, %s0, (32)0
349; CHECK-NEXT:    lea.sl %s0, 1080035737(, %s0)
350; CHECK-NEXT:    b.l.t (, %s10)
351  ret double 128.3
352}
353