blob: 368f52eef278eab351d8a8b7f9699063e2f0ff77 [file]
//@ compile-flags: -C opt-level=3 -C no-prepopulate-passes
#![crate_type = "lib"]
#[unsafe(no_mangle)]
pub fn i16_min(a: i16, b: i16) -> i16 {
// CHECK-LABEL: i16_min
// CHECK: [[M:%.+]] = call i16 @llvm.smin.i16(i16 %a, i16 %b)
// CHECK-NEXT: ret i16 [[M]]
std::cmp::min(a, b)
}
#[unsafe(no_mangle)]
pub fn i32_max(a: i32, b: i32) -> i32 {
// CHECK-LABEL: i32_max
// CHECK: [[M:%.+]] = call i32 @llvm.smax.i32(i32 %a, i32 %b)
// CHECK-NEXT: ret i32 [[M]]
std::cmp::max(a, b)
}
#[unsafe(no_mangle)]
pub fn u8_min(a: u8, b: u8) -> u8 {
// CHECK-LABEL: u8_min
// CHECK: [[M:%.+]] = call i8 @llvm.umin.i8(i8 %a, i8 %b)
// CHECK-NEXT: ret i8 [[M]]
std::cmp::min(a, b)
}
#[unsafe(no_mangle)]
pub fn u16_max(a: u16, b: u16) -> u16 {
// CHECK-LABEL: u16_max
// CHECK: [[M:%.+]] = call i16 @llvm.umax.i16(i16 %a, i16 %b)
// CHECK-NEXT: ret i16 [[M]]
std::cmp::max(a, b)
}
#[unsafe(no_mangle)]
pub fn char_min(a: char, b: char) -> char {
// CHECK-LABEL: char_min
// CHECK: [[M:%.+]] = call i32 @llvm.umin.i32(i32 %a, i32 %b)
// CHECK: ret i32 [[M]]
std::cmp::min(a, b)
}
#[unsafe(no_mangle)]
pub fn char_max(a: char, b: char) -> char {
// CHECK-LABEL: char_max
// CHECK: [[M:%.+]] = call i32 @llvm.umax.i32(i32 %a, i32 %b)
// CHECK: ret i32 [[M]]
std::cmp::max(a, b)
}