; RUN: llc < %s -mtriple=ve-unknown-unknown | FileCheck %s
define i8 @p0i8() {
; CHECK-LABEL: p0i8:
; CHECK: # %bb.0:
; CHECK-NEXT: or %s0, 0, (0)1
; CHECK-NEXT: b.l.t (, %s10)
ret i8 0
}
define signext i8 @p0si8() {
; CHECK-LABEL: p0si8:
; CHECK: # %bb.0:
; CHECK-NEXT: or %s0, 0, (0)1
; CHECK-NEXT: b.l.t (, %s10)
ret i8 0
}
define zeroext i8 @p0zi8() {
; CHECK-LABEL: p0zi8:
; CHECK: # %bb.0:
; CHECK-NEXT: or %s0, 0, (0)1
; CHECK-NEXT: b.l.t (, %s10)
ret i8 0
}
define i8 @p128i8() {
; CHECK-LABEL: p128i8:
; CHECK: # %bb.0:
; CHECK-NEXT: lea %s0, 128
; CHECK-NEXT: b.l.t (, %s10)
ret i8 128
}
define signext i8 @p128si8() {
; CHECK-LABEL: p128si8:
; CHECK: # %bb.0:
; CHECK-NEXT: lea %s0, -128
; CHECK-NEXT: b.l.t (, %s10)
ret i8 128
}
define zeroext i8 @p128zi8() {
; CHECK-LABEL: p128zi8:
; CHECK: # %bb.0:
; CHECK-NEXT: lea %s0, 128
; CHECK-NEXT: b.l.t (, %s10)
ret i8 128
}
define i8 @p256i8() {
; CHECK-LABEL: p256i8:
; CHECK: # %bb.0:
; CHECK-NEXT: or %s0, 0, (0)1
; CHECK-NEXT: b.l.t (, %s10)
ret i8 256
}
define signext i8 @p256si8() {
; CHECK-LABEL: p256si8:
; CHECK: # %bb.0:
; CHECK-NEXT: or %s0, 0, (0)1
; CHECK-NEXT: b.l.t (, %s10)
ret i8 256
}
define zeroext i8 @p256zi8() {
; CHECK-LABEL: p256zi8:
; CHECK: # %bb.0:
; CHECK-NEXT: or %s0, 0, (0)1
; CHECK-NEXT: b.l.t (, %s10)
ret i8 256
}
define i16 @p0i16() {
; CHECK-LABEL: p0i16:
; CHECK: # %bb.0:
; CHECK-NEXT: or %s0, 0, (0)1
; CHECK-NEXT: b.l.t (, %s10)
ret i16 0
}
define signext i16 @p0si16() {
; CHECK-LABEL: p0si16:
; CHECK: # %bb.0:
; CHECK-NEXT: or %s0, 0, (0)1
; CHECK-NEXT: b.l.t (, %s10)
ret i16 0
}
define zeroext i16 @p0zi16() {
; CHECK-LABEL: p0zi16:
; CHECK: # %bb.0:
; CHECK-NEXT: or %s0, 0, (0)1
; CHECK-NEXT: b.l.t (, %s10)
ret i16 0
}
define i32 @p0i32() {
; CHECK-LABEL: p0i32:
; CHECK: # %bb.0:
; CHECK-NEXT: or %s0, 0, (0)1
; CHECK-NEXT: b.l.t (, %s10)
ret i32 0
}
define signext i32 @p0si32() {
; CHECK-LABEL: p0si32:
; CHECK: # %bb.0:
; CHECK-NEXT: or %s0, 0, (0)1
; CHECK-NEXT: b.l.t (, %s10)
ret i32 0
}
define zeroext i32 @p0zi32() {
; CHECK-LABEL: p0zi32:
; CHECK: # %bb.0:
; CHECK-NEXT: or %s0, 0, (0)1
; CHECK-NEXT: b.l.t (, %s10)
ret i32 0
}
define i32 @p128i32() {
; CHECK-LABEL: p128i32:
; CHECK: # %bb.0:
; CHECK-NEXT: lea %s0, 128
; CHECK-NEXT: b.l.t (, %s10)
ret i32 128
}
define signext i32 @p128si32() {
; CHECK-LABEL: p128si32:
; CHECK: # %bb.0:
; CHECK-NEXT: lea %s0, 128
; CHECK-NEXT: b.l.t (, %s10)
ret i32 128
}
define zeroext i32 @p128zi32() {
; CHECK-LABEL: p128zi32:
; CHECK: # %bb.0:
; CHECK-NEXT: lea %s0, 128
; CHECK-NEXT: b.l.t (, %s10)
ret i32 128
}
define i64 @p0i64() {
; CHECK-LABEL: p0i64:
; CHECK: # %bb.0:
; CHECK-NEXT: or %s0, 0, (0)1
; CHECK-NEXT: b.l.t (, %s10)
ret i64 0
}
define signext i64 @p0si64() {
; CHECK-LABEL: p0si64:
; CHECK: # %bb.0:
; CHECK-NEXT: or %s0, 0, (0)1
; CHECK-NEXT: b.l.t (, %s10)
ret i64 0
}
define zeroext i64 @p0zi64() {
; CHECK-LABEL: p0zi64:
; CHECK: # %bb.0:
; CHECK-NEXT: or %s0, 0, (0)1
; CHECK-NEXT: b.l.t (, %s10)
ret i64 0
}
define i64 @p128i64() {
; CHECK-LABEL: p128i64:
; CHECK: # %bb.0:
; CHECK-NEXT: lea %s0, 128
; CHECK-NEXT: b.l.t (, %s10)
ret i64 128
}
define signext i64 @p128si64() {
; CHECK-LABEL: p128si64:
; CHECK: # %bb.0:
; CHECK-NEXT: lea %s0, 128
; CHECK-NEXT: b.l.t (, %s10)
ret i64 128
}
define zeroext i64 @p128zi64() {
; CHECK-LABEL: p128zi64:
; CHECK: # %bb.0:
; CHECK-NEXT: lea %s0, 128
; CHECK-NEXT: b.l.t (, %s10)
ret i64 128
}
define i64 @p2264924160i64() {
; CHECK-LABEL: p2264924160i64:
; CHECK: # %bb.0:
; CHECK-NEXT: lea %s0, -2030043136
; CHECK-NEXT: and %s0, %s0, (32)0
; CHECK-NEXT: b.l.t (, %s10)
ret i64 2264924160
}
define signext i64 @p2264924160si64() {
; CHECK-LABEL: p2264924160si64:
; CHECK: # %bb.0:
; CHECK-NEXT: lea %s0, -2030043136
; CHECK-NEXT: and %s0, %s0, (32)0
; CHECK-NEXT: b.l.t (, %s10)
ret i64 2264924160
}
define zeroext i64 @p2264924160zi64() {
; CHECK-LABEL: p2264924160zi64:
; CHECK: # %bb.0:
; CHECK-NEXT: lea %s0, -2030043136
; CHECK-NEXT: and %s0, %s0, (32)0
; CHECK-NEXT: b.l.t (, %s10)
ret i64 2264924160
}
define i64 @p2147483647i64() {
; CHECK-LABEL: p2147483647i64:
; CHECK: # %bb.0:
; CHECK-NEXT: lea %s0, 2147483647
; CHECK-NEXT: b.l.t (, %s10)
ret i64 2147483647
}
define signext i64 @p2147483647si64() {
; CHECK-LABEL: p2147483647si64:
; CHECK: # %bb.0:
; CHECK-NEXT: lea %s0, 2147483647
; CHECK-NEXT: b.l.t (, %s10)
ret i64 2147483647
}
define zeroext i64 @p2147483647zi64() {
; CHECK-LABEL: p2147483647zi64:
; CHECK: # %bb.0:
; CHECK-NEXT: lea %s0, 2147483647
; CHECK-NEXT: b.l.t (, %s10)
ret i64 2147483647
}
define i64 @p15032385535i64() {
; CHECK-LABEL: p15032385535i64:
; CHECK: # %bb.0:
; CHECK-NEXT: lea %s0, 2147483647
; CHECK-NEXT: lea.sl %s0, 3(, %s0)
; CHECK-NEXT: b.l.t (, %s10)
ret i64 15032385535
}
define signext i64 @p15032385535si64() {
; CHECK-LABEL: p15032385535si64:
; CHECK: # %bb.0:
; CHECK-NEXT: lea %s0, 2147483647
; CHECK-NEXT: lea.sl %s0, 3(, %s0)
; CHECK-NEXT: b.l.t (, %s10)
ret i64 15032385535
}
define zeroext i64 @p15032385535zi64() {
; CHECK-LABEL: p15032385535zi64:
; CHECK: # %bb.0:
; CHECK-NEXT: lea %s0, 2147483647
; CHECK-NEXT: lea.sl %s0, 3(, %s0)
; CHECK-NEXT: b.l.t (, %s10)
ret i64 15032385535
}
define i64 @p15032385536i64() {
; CHECK-LABEL: p15032385536i64:
; CHECK: # %bb.0:
; CHECK-NEXT: lea %s0, -2147483648
; CHECK-NEXT: and %s0, %s0, (32)0
; CHECK-NEXT: lea.sl %s0, 3(, %s0)
; CHECK-NEXT: b.l.t (, %s10)
ret i64 15032385536
}
define signext i64 @p15032385536si64() {
; CHECK-LABEL: p15032385536si64:
; CHECK: # %bb.0:
; CHECK-NEXT: lea %s0, -2147483648
; CHECK-NEXT: and %s0, %s0, (32)0
; CHECK-NEXT: lea.sl %s0, 3(, %s0)
; CHECK-NEXT: b.l.t (, %s10)
ret i64 15032385536
}
define zeroext i64 @p15032385536zi64() {
; CHECK-LABEL: p15032385536zi64:
; CHECK: # %bb.0:
; CHECK-NEXT: lea %s0, -2147483648
; CHECK-NEXT: and %s0, %s0, (32)0
; CHECK-NEXT: lea.sl %s0, 3(, %s0)
; CHECK-NEXT: b.l.t (, %s10)
ret i64 15032385536
}
define float @m5f32() {
; CHECK-LABEL: m5f32:
; CHECK: # %bb.0:
; CHECK-NEXT: lea.sl %s0, -1063256064
; CHECK-NEXT: b.l.t (, %s10)
ret float -5.000000e+00
}
define double @m5f64() {
; CHECK-LABEL: m5f64:
; CHECK: # %bb.0:
; CHECK-NEXT: lea.sl %s0, -1072431104
; CHECK-NEXT: b.l.t (, %s10)
ret double -5.000000e+00
}
define float @p2p3f32() {
; CHECK-LABEL: p2p3f32:
; CHECK: # %bb.0:
; CHECK-NEXT: lea.sl %s0, 1075000115
; CHECK-NEXT: b.l.t (, %s10)
ret float 0x4002666660000000 ; 2.3
}
define double @p2p3f64() {
; CHECK-LABEL: p2p3f64:
; CHECK: # %bb.0:
; CHECK-NEXT: lea %s0, 1717986918
; CHECK-NEXT: lea.sl %s0, 1073899110(, %s0)
; CHECK-NEXT: b.l.t (, %s10)
ret double 2.3
}
define float @p128p3f32() {
; CHECK-LABEL: p128p3f32:
; CHECK: # %bb.0:
; CHECK-NEXT: lea.sl %s0, 1124093133
; CHECK-NEXT: b.l.t (, %s10)
ret float 0x40600999A0000000 ; 128.3
}
define double @p128p3f64() {
; CHECK-LABEL: p128p3f64:
; CHECK: # %bb.0:
; CHECK-NEXT: lea %s0, -1717986918
; CHECK-NEXT: and %s0, %s0, (32)0
; CHECK-NEXT: lea.sl %s0, 1080035737(, %s0)
; CHECK-NEXT: b.l.t (, %s10)
ret double 128.3
}