rust/tests/codegen/array-cmp.rs
2025-03-30 23:44:31 -07:00

31 lines
803 B
Rust

// Ensure the asm for array comparisons is properly optimized.
//@ compile-flags: -C opt-level=2
#![crate_type = "lib"]
// CHECK-LABEL: @compare
// CHECK: start:
// CHECK-NEXT: ret i1 true
#[no_mangle]
pub fn compare() -> bool {
let bytes = 12.5f32.to_ne_bytes();
bytes
== if cfg!(target_endian = "big") {
[0x41, 0x48, 0x00, 0x00]
} else {
[0x00, 0x00, 0x48, 0x41]
}
}
// CHECK-LABEL: @array_of_tuple_le
// CHECK: call{{.+}}i8 @llvm.scmp.i8.i16
// CHECK: call{{.+}}i8 @llvm.ucmp.i8.i16
// CHECK: call{{.+}}i8 @llvm.scmp.i8.i16
// CHECK: call{{.+}}i8 @llvm.ucmp.i8.i16
// CHECK: %[[RET:.+]] = icmp slt i8 {{.+}}, 1
// CHECK: ret i8 %[[RET]]
#[no_mangle]
pub fn array_of_tuple_le(a: &[(i16, u16); 2], b: &[(i16, u16); 2]) -> bool {
a <= b
}