1 ; RUN: llc < %s -mtriple=ve-unknown-unknown | FileCheck %s
6 ; CHECK-NEXT: or %s0, 0, (0)1
7 ; CHECK-NEXT: b.l.t (, %s10)
11 define signext i8 @p0si8() {
14 ; CHECK-NEXT: or %s0, 0, (0)1
15 ; CHECK-NEXT: b.l.t (, %s10)
19 define zeroext i8 @p0zi8() {
22 ; CHECK-NEXT: or %s0, 0, (0)1
23 ; CHECK-NEXT: b.l.t (, %s10)
28 ; CHECK-LABEL: p128i8:
30 ; CHECK-NEXT: lea %s0, 128
31 ; CHECK-NEXT: b.l.t (, %s10)
35 define signext i8 @p128si8() {
36 ; CHECK-LABEL: p128si8:
38 ; CHECK-NEXT: lea %s0, -128
39 ; CHECK-NEXT: b.l.t (, %s10)
43 define zeroext i8 @p128zi8() {
44 ; CHECK-LABEL: p128zi8:
46 ; CHECK-NEXT: lea %s0, 128
47 ; CHECK-NEXT: b.l.t (, %s10)
52 ; CHECK-LABEL: p256i8:
54 ; CHECK-NEXT: or %s0, 0, (0)1
55 ; CHECK-NEXT: b.l.t (, %s10)
59 define signext i8 @p256si8() {
60 ; CHECK-LABEL: p256si8:
62 ; CHECK-NEXT: or %s0, 0, (0)1
63 ; CHECK-NEXT: b.l.t (, %s10)
67 define zeroext i8 @p256zi8() {
68 ; CHECK-LABEL: p256zi8:
70 ; CHECK-NEXT: or %s0, 0, (0)1
71 ; CHECK-NEXT: b.l.t (, %s10)
78 ; CHECK-NEXT: or %s0, 0, (0)1
79 ; CHECK-NEXT: b.l.t (, %s10)
83 define signext i16 @p0si16() {
84 ; CHECK-LABEL: p0si16:
86 ; CHECK-NEXT: or %s0, 0, (0)1
87 ; CHECK-NEXT: b.l.t (, %s10)
91 define zeroext i16 @p0zi16() {
92 ; CHECK-LABEL: p0zi16:
94 ; CHECK-NEXT: or %s0, 0, (0)1
95 ; CHECK-NEXT: b.l.t (, %s10)
100 ; CHECK-LABEL: p0i32:
102 ; CHECK-NEXT: or %s0, 0, (0)1
103 ; CHECK-NEXT: b.l.t (, %s10)
107 define signext i32 @p0si32() {
108 ; CHECK-LABEL: p0si32:
110 ; CHECK-NEXT: or %s0, 0, (0)1
111 ; CHECK-NEXT: b.l.t (, %s10)
115 define zeroext i32 @p0zi32() {
116 ; CHECK-LABEL: p0zi32:
118 ; CHECK-NEXT: or %s0, 0, (0)1
119 ; CHECK-NEXT: b.l.t (, %s10)
123 define i32 @p128i32() {
124 ; CHECK-LABEL: p128i32:
126 ; CHECK-NEXT: lea %s0, 128
127 ; CHECK-NEXT: b.l.t (, %s10)
131 define signext i32 @p128si32() {
132 ; CHECK-LABEL: p128si32:
134 ; CHECK-NEXT: lea %s0, 128
135 ; CHECK-NEXT: b.l.t (, %s10)
139 define zeroext i32 @p128zi32() {
140 ; CHECK-LABEL: p128zi32:
142 ; CHECK-NEXT: lea %s0, 128
143 ; CHECK-NEXT: b.l.t (, %s10)
147 define i64 @p0i64() {
148 ; CHECK-LABEL: p0i64:
150 ; CHECK-NEXT: or %s0, 0, (0)1
151 ; CHECK-NEXT: b.l.t (, %s10)
155 define signext i64 @p0si64() {
156 ; CHECK-LABEL: p0si64:
158 ; CHECK-NEXT: or %s0, 0, (0)1
159 ; CHECK-NEXT: b.l.t (, %s10)
163 define zeroext i64 @p0zi64() {
164 ; CHECK-LABEL: p0zi64:
166 ; CHECK-NEXT: or %s0, 0, (0)1
167 ; CHECK-NEXT: b.l.t (, %s10)
171 define i64 @p128i64() {
172 ; CHECK-LABEL: p128i64:
174 ; CHECK-NEXT: lea %s0, 128
175 ; CHECK-NEXT: b.l.t (, %s10)
179 define signext i64 @p128si64() {
180 ; CHECK-LABEL: p128si64:
182 ; CHECK-NEXT: lea %s0, 128
183 ; CHECK-NEXT: b.l.t (, %s10)
187 define zeroext i64 @p128zi64() {
188 ; CHECK-LABEL: p128zi64:
190 ; CHECK-NEXT: lea %s0, 128
191 ; CHECK-NEXT: b.l.t (, %s10)
195 define i64 @p2264924160i64() {
196 ; CHECK-LABEL: p2264924160i64:
198 ; CHECK-NEXT: lea %s0, -2030043136
199 ; CHECK-NEXT: and %s0, %s0, (32)0
200 ; CHECK-NEXT: b.l.t (, %s10)
204 define signext i64 @p2264924160si64() {
205 ; CHECK-LABEL: p2264924160si64:
207 ; CHECK-NEXT: lea %s0, -2030043136
208 ; CHECK-NEXT: and %s0, %s0, (32)0
209 ; CHECK-NEXT: b.l.t (, %s10)
213 define zeroext i64 @p2264924160zi64() {
214 ; CHECK-LABEL: p2264924160zi64:
216 ; CHECK-NEXT: lea %s0, -2030043136
217 ; CHECK-NEXT: and %s0, %s0, (32)0
218 ; CHECK-NEXT: b.l.t (, %s10)
222 define i64 @p2147483647i64() {
223 ; CHECK-LABEL: p2147483647i64:
225 ; CHECK-NEXT: lea %s0, 2147483647
226 ; CHECK-NEXT: b.l.t (, %s10)
230 define signext i64 @p2147483647si64() {
231 ; CHECK-LABEL: p2147483647si64:
233 ; CHECK-NEXT: lea %s0, 2147483647
234 ; CHECK-NEXT: b.l.t (, %s10)
238 define zeroext i64 @p2147483647zi64() {
239 ; CHECK-LABEL: p2147483647zi64:
241 ; CHECK-NEXT: lea %s0, 2147483647
242 ; CHECK-NEXT: b.l.t (, %s10)
246 define i64 @p15032385535i64() {
247 ; CHECK-LABEL: p15032385535i64:
249 ; CHECK-NEXT: lea %s0, 2147483647
250 ; CHECK-NEXT: lea.sl %s0, 3(, %s0)
251 ; CHECK-NEXT: b.l.t (, %s10)
255 define signext i64 @p15032385535si64() {
256 ; CHECK-LABEL: p15032385535si64:
258 ; CHECK-NEXT: lea %s0, 2147483647
259 ; CHECK-NEXT: lea.sl %s0, 3(, %s0)
260 ; CHECK-NEXT: b.l.t (, %s10)
264 define zeroext i64 @p15032385535zi64() {
265 ; CHECK-LABEL: p15032385535zi64:
267 ; CHECK-NEXT: lea %s0, 2147483647
268 ; CHECK-NEXT: lea.sl %s0, 3(, %s0)
269 ; CHECK-NEXT: b.l.t (, %s10)
273 define i64 @p15032385536i64() {
274 ; CHECK-LABEL: p15032385536i64:
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)
283 define signext i64 @p15032385536si64() {
284 ; CHECK-LABEL: p15032385536si64:
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)
293 define zeroext i64 @p15032385536zi64() {
294 ; CHECK-LABEL: p15032385536zi64:
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)
303 define float @m5f32() {
304 ; CHECK-LABEL: m5f32:
306 ; CHECK-NEXT: lea.sl %s0, -1063256064
307 ; CHECK-NEXT: b.l.t (, %s10)
308 ret float -5.000000e+00
311 define double @m5f64() {
312 ; CHECK-LABEL: m5f64:
314 ; CHECK-NEXT: lea.sl %s0, -1072431104
315 ; CHECK-NEXT: b.l.t (, %s10)
316 ret double -5.000000e+00
319 define float @p2p3f32() {
320 ; CHECK-LABEL: p2p3f32:
322 ; CHECK-NEXT: lea.sl %s0, 1075000115
323 ; CHECK-NEXT: b.l.t (, %s10)
324 ret float 0x4002666660000000 ; 2.3
327 define double @p2p3f64() {
328 ; CHECK-LABEL: p2p3f64:
330 ; CHECK-NEXT: lea %s0, 1717986918
331 ; CHECK-NEXT: lea.sl %s0, 1073899110(, %s0)
332 ; CHECK-NEXT: b.l.t (, %s10)
336 define float @p128p3f32() {
337 ; CHECK-LABEL: p128p3f32:
339 ; CHECK-NEXT: lea.sl %s0, 1124093133
340 ; CHECK-NEXT: b.l.t (, %s10)
341 ret float 0x40600999A0000000 ; 128.3
344 define double @p128p3f64() {
345 ; CHECK-LABEL: p128p3f64:
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)