diff options
| author | Matthew Maurer <mmaurer@google.com> | 2024-04-11 17:16:27 +0000 |
|---|---|---|
| committer | Matthew Maurer <mmaurer@google.com> | 2024-04-11 17:20:08 +0000 |
| commit | e70cf014b8618e332ada1e24c343549b88cd28ce (patch) | |
| tree | 78c2d526e03ae61c263cd784351f324a5f5d24f3 | |
| parent | 72fe8a0f0049873f4b1d0ab3c482170921819106 (diff) | |
| download | rust-e70cf014b8618e332ada1e24c343549b88cd28ce.tar.gz rust-e70cf014b8618e332ada1e24c343549b88cd28ce.zip | |
codegen tests: Tolerate `nuw` `nsw` on `trunc`
llvm/llvm-project#87910 infers `nuw` and `nsw` on some `trunc` instructions we're doing `FileCheck` on. Tolerate but don't require them to support both release and head LLVM.
| -rw-r--r-- | tests/codegen/ascii-char.rs | 2 | ||||
| -rw-r--r-- | tests/codegen/unchecked_shifts.rs | 8 |
2 files changed, 5 insertions, 5 deletions
diff --git a/tests/codegen/ascii-char.rs b/tests/codegen/ascii-char.rs index fab9f8632fc..86ec9d73afe 100644 --- a/tests/codegen/ascii-char.rs +++ b/tests/codegen/ascii-char.rs @@ -12,7 +12,7 @@ pub fn unwrap_digit_from_remainder(v: u32) -> AsciiChar { // CHECK-NOT: panic // CHECK: %[[R:.+]] = urem i32 %v, 10 - // CHECK-NEXT: %[[T:.+]] = trunc i32 %[[R]] to i8 + // CHECK-NEXT: %[[T:.+]] = trunc{{( nuw)?( nsw)?}} i32 %[[R]] to i8 // CHECK-NEXT: %[[D:.+]] = or{{( disjoint)?}} i8 %[[T]], 48 // CHECK-NEXT: ret i8 %[[D]] diff --git a/tests/codegen/unchecked_shifts.rs b/tests/codegen/unchecked_shifts.rs index 7d020fbb4d2..86517c89627 100644 --- a/tests/codegen/unchecked_shifts.rs +++ b/tests/codegen/unchecked_shifts.rs @@ -22,7 +22,7 @@ pub unsafe fn unchecked_shl_unsigned_smaller(a: u16, b: u32) -> u16 { // CHECK-DAG: %[[INRANGE:.+]] = icmp ult i32 %b, 16 // CHECK-DAG: tail call void @llvm.assume(i1 %[[INRANGE]]) - // CHECK-DAG: %[[TRUNC:.+]] = trunc i32 %b to i16 + // CHECK-DAG: %[[TRUNC:.+]] = trunc{{( nuw)?( nsw)?}} i32 %b to i16 // CHECK-DAG: shl i16 %a, %[[TRUNC]] a.unchecked_shl(b) } @@ -54,7 +54,7 @@ pub unsafe fn unchecked_shr_signed_smaller(a: i16, b: u32) -> i16 { // CHECK-DAG: %[[INRANGE:.+]] = icmp ult i32 %b, 16 // CHECK-DAG: tail call void @llvm.assume(i1 %[[INRANGE]]) - // CHECK-DAG: %[[TRUNC:.+]] = trunc i32 %b to i16 + // CHECK-DAG: %[[TRUNC:.+]] = trunc{{( nuw)?( nsw)?}} i32 %b to i16 // CHECK-DAG: ashr i16 %a, %[[TRUNC]] a.unchecked_shr(b) } @@ -94,7 +94,7 @@ pub unsafe fn unchecked_shl_u8_i128(a: u8, b: i128) -> u8 { // CHECK-DAG: %[[INRANGE:.+]] = icmp ult i128 %b, 8 // CHECK-DAG: tail call void @llvm.assume(i1 %[[INRANGE]]) - // CHECK-DAG: %[[TRUNC:.+]] = trunc i128 %b to i8 + // CHECK-DAG: %[[TRUNC:.+]] = trunc{{( nuw)?( nsw)?}} i128 %b to i8 // CHECK-DAG: shl i8 %a, %[[TRUNC]] std::intrinsics::unchecked_shl(a, b) } @@ -107,7 +107,7 @@ pub unsafe fn unchecked_shr_i8_u128(a: i8, b: u128) -> i8 { // CHECK-DAG: %[[INRANGE:.+]] = icmp ult i128 %b, 8 // CHECK-DAG: tail call void @llvm.assume(i1 %[[INRANGE]]) - // CHECK-DAG: %[[TRUNC:.+]] = trunc i128 %b to i8 + // CHECK-DAG: %[[TRUNC:.+]] = trunc{{( nuw)?( nsw)?}} i128 %b to i8 // CHECK-DAG: ashr i8 %a, %[[TRUNC]] std::intrinsics::unchecked_shr(a, b) } |
