about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2021-04-23 08:59:49 -0700
committerAlex Crichton <alex@alexcrichton.com>2021-04-23 08:59:49 -0700
commited6dd40b28223f16aaabd88e66a26d2aa5cc4a50 (patch)
tree266d53170e3242fb51d3b917e067b6195a07977b
parent35ae752231dd8ea1abd2a1a970c358eda28b8ebd (diff)
downloadrust-ed6dd40b28223f16aaabd88e66a26d2aa5cc4a50.tar.gz
rust-ed6dd40b28223f16aaabd88e66a26d2aa5cc4a50.zip
Update wasm test assertions
-rw-r--r--src/test/codegen/wasm_casts_nontrapping.rs162
-rw-r--r--src/test/codegen/wasm_casts_trapping.rs23
2 files changed, 12 insertions, 173 deletions
diff --git a/src/test/codegen/wasm_casts_nontrapping.rs b/src/test/codegen/wasm_casts_nontrapping.rs
deleted file mode 100644
index bd6073d8c20..00000000000
--- a/src/test/codegen/wasm_casts_nontrapping.rs
+++ /dev/null
@@ -1,162 +0,0 @@
-// only-wasm32
-// compile-flags: -C target-feature=+nontrapping-fptoint
-#![crate_type = "lib"]
-
-// CHECK-LABEL: @cast_f64_i64
-#[no_mangle]
-pub fn cast_f64_i64(a: f64) -> i64 {
-    // CHECK: tail call i64 @llvm.wasm.trunc.saturate.signed.i64.f64(double {{.*}})
-    // CHECK-NEXT: ret i64 {{.*}}
-    a as _
-}
-
-// CHECK-LABEL: @cast_f64_i32
-#[no_mangle]
-pub fn cast_f64_i32(a: f64) -> i32 {
-    // CHECK: tail call i32 @llvm.wasm.trunc.saturate.signed.i32.f64(double {{.*}})
-    // CHECK-NEXT: ret i32 {{.*}}
-    a as _
-}
-
-// CHECK-LABEL: @cast_f32_i64
-#[no_mangle]
-pub fn cast_f32_i64(a: f32) -> i64 {
-    // CHECK: tail call i64 @llvm.wasm.trunc.saturate.signed.i64.f32(float {{.*}})
-    // CHECK-NEXT: ret i64 {{.*}}
-    a as _
-}
-
-// CHECK-LABEL: @cast_f32_i32
-#[no_mangle]
-pub fn cast_f32_i32(a: f32) -> i32 {
-    // CHECK: tail call i32 @llvm.wasm.trunc.saturate.signed.i32.f32(float {{.*}})
-    // CHECK-NEXT: ret i32 {{.*}}
-    a as _
-}
-
-
-// CHECK-LABEL: @cast_f64_u64
-#[no_mangle]
-pub fn cast_f64_u64(a: f64) -> u64 {
-    // CHECK: tail call i64 @llvm.wasm.trunc.saturate.unsigned.i64.f64(double {{.*}})
-    // CHECK-NEXT: ret i64 {{.*}}
-    a as _
-}
-
-// CHECK-LABEL: @cast_f64_u32
-#[no_mangle]
-pub fn cast_f64_u32(a: f64) -> u32 {
-    // CHECK: tail call i32 @llvm.wasm.trunc.saturate.unsigned.i32.f64(double {{.*}})
-    // CHECK-NEXT: ret i32 {{.*}}
-    a as _
-}
-
-// CHECK-LABEL: @cast_f32_u64
-#[no_mangle]
-pub fn cast_f32_u64(a: f32) -> u64 {
-    // CHECK: tail call i64 @llvm.wasm.trunc.saturate.unsigned.i64.f32(float {{.*}})
-    // CHECK-NEXT: ret i64 {{.*}}
-    a as _
-}
-
-// CHECK-LABEL: @cast_f32_u32
-#[no_mangle]
-pub fn cast_f32_u32(a: f32) -> u32 {
-    // CHECK: tail call i32 @llvm.wasm.trunc.saturate.unsigned.i32.f32(float {{.*}})
-    // CHECK-NEXT: ret i32 {{.*}}
-    a as _
-}
-
-// CHECK-LABEL: @cast_f32_u8
-#[no_mangle]
-pub fn cast_f32_u8(a: f32) -> u8 {
-    // CHECK-NOT: {{.*}} call {{.*}} @llvm.wasm.trunc.{{.*}}
-    // CHECK: fptoui float {{.*}} to i8
-    // CHECK-NEXT: select i1 {{.*}}, i8 {{.*}}, i8 {{.*}}
-    // CHECK-NEXT: ret i8 {{.*}}
-    a as _
-}
-
-
-
-// CHECK-LABEL: @cast_unchecked_f64_i64
-#[no_mangle]
-pub unsafe fn cast_unchecked_f64_i64(a: f64) -> i64 {
-    // CHECK-NOT: {{.*}} call {{.*}} @llvm.wasm.trunc.{{.*}}
-    // CHECK: fptosi double {{.*}} to i64
-    // CHECK-NEXT: ret i64 {{.*}}
-    a.to_int_unchecked()
-}
-
-// CHECK-LABEL: @cast_unchecked_f64_i32
-#[no_mangle]
-pub unsafe fn cast_unchecked_f64_i32(a: f64) -> i32 {
-    // CHECK-NOT: {{.*}} call {{.*}} @llvm.wasm.trunc.{{.*}}
-    // CHECK: fptosi double {{.*}} to i32
-    // CHECK-NEXT: ret i32 {{.*}}
-    a.to_int_unchecked()
-}
-
-// CHECK-LABEL: @cast_unchecked_f32_i64
-#[no_mangle]
-pub unsafe fn cast_unchecked_f32_i64(a: f32) -> i64 {
-    // CHECK-NOT: {{.*}} call {{.*}} @llvm.wasm.trunc.{{.*}}
-    // CHECK: fptosi float {{.*}} to i64
-    // CHECK-NEXT: ret i64 {{.*}}
-    a.to_int_unchecked()
-}
-
-// CHECK-LABEL: @cast_unchecked_f32_i32
-#[no_mangle]
-pub unsafe fn cast_unchecked_f32_i32(a: f32) -> i32 {
-    // CHECK-NOT: {{.*}} call {{.*}} @llvm.wasm.trunc.{{.*}}
-    // CHECK: fptosi float {{.*}} to i32
-    // CHECK-NEXT: ret i32 {{.*}}
-    a.to_int_unchecked()
-}
-
-
-// CHECK-LABEL: @cast_unchecked_f64_u64
-#[no_mangle]
-pub unsafe fn cast_unchecked_f64_u64(a: f64) -> u64 {
-    // CHECK-NOT: {{.*}} call {{.*}} @llvm.wasm.trunc.{{.*}}
-    // CHECK: fptoui double {{.*}} to i64
-    // CHECK-NEXT: ret i64 {{.*}}
-    a.to_int_unchecked()
-}
-
-// CHECK-LABEL: @cast_unchecked_f64_u32
-#[no_mangle]
-pub unsafe fn cast_unchecked_f64_u32(a: f64) -> u32 {
-    // CHECK-NOT: {{.*}} call {{.*}} @llvm.wasm.trunc.{{.*}}
-    // CHECK: fptoui double {{.*}} to i32
-    // CHECK-NEXT: ret i32 {{.*}}
-    a.to_int_unchecked()
-}
-
-// CHECK-LABEL: @cast_unchecked_f32_u64
-#[no_mangle]
-pub unsafe fn cast_unchecked_f32_u64(a: f32) -> u64 {
-    // CHECK-NOT: {{.*}} call {{.*}} @llvm.wasm.trunc.{{.*}}
-    // CHECK: fptoui float {{.*}} to i64
-    // CHECK-NEXT: ret i64 {{.*}}
-    a.to_int_unchecked()
-}
-
-// CHECK-LABEL: @cast_unchecked_f32_u32
-#[no_mangle]
-pub unsafe fn cast_unchecked_f32_u32(a: f32) -> u32 {
-    // CHECK-NOT: {{.*}} call {{.*}} @llvm.wasm.trunc.{{.*}}
-    // CHECK: fptoui float {{.*}} to i32
-    // CHECK-NEXT: ret i32 {{.*}}
-    a.to_int_unchecked()
-}
-
-// CHECK-LABEL: @cast_unchecked_f32_u8
-#[no_mangle]
-pub unsafe fn cast_unchecked_f32_u8(a: f32) -> u8 {
-    // CHECK-NOT: {{.*}} call {{.*}} @llvm.wasm.trunc.{{.*}}
-    // CHECK: fptoui float {{.*}} to i8
-    // CHECK-NEXT: ret i8 {{.*}}
-    a.to_int_unchecked()
-}
diff --git a/src/test/codegen/wasm_casts_trapping.rs b/src/test/codegen/wasm_casts_trapping.rs
index ed51faa7be1..baf130a8791 100644
--- a/src/test/codegen/wasm_casts_trapping.rs
+++ b/src/test/codegen/wasm_casts_trapping.rs
@@ -1,5 +1,6 @@
 // only-wasm32
 // compile-flags: -C target-feature=-nontrapping-fptoint
+// min-llvm-version: 12.0
 #![crate_type = "lib"]
 
 // CHECK-LABEL: @cast_f64_i64
@@ -7,7 +8,7 @@
 pub fn cast_f64_i64(a: f64) -> i64 {
     // CHECK-NOT: fptosi double {{.*}} to i64
     // CHECK-NOT: select i1 {{.*}}, i64 {{.*}}, i64 {{.*}}
-    // CHECK: {{.*}} call {{.*}} @llvm.wasm.trunc.{{.*}}
+    // CHECK: {{.*}} call {{.*}} @llvm.fptosi.sat.i64.f64{{.*}}
     a as _
 }
 
@@ -16,7 +17,7 @@ pub fn cast_f64_i64(a: f64) -> i64 {
 pub fn cast_f64_i32(a: f64) -> i32 {
     // CHECK-NOT: fptosi double {{.*}} to i32
     // CHECK-NOT: select i1 {{.*}}, i32 {{.*}}, i32 {{.*}}
-    // CHECK: {{.*}} call {{.*}} @llvm.wasm.trunc.{{.*}}
+    // CHECK: {{.*}} call {{.*}} @llvm.fptosi.sat.i32.f64{{.*}}
     a as _
 }
 
@@ -25,7 +26,7 @@ pub fn cast_f64_i32(a: f64) -> i32 {
 pub fn cast_f32_i64(a: f32) -> i64 {
     // CHECK-NOT: fptosi float {{.*}} to i64
     // CHECK-NOT: select i1 {{.*}}, i64 {{.*}}, i64 {{.*}}
-    // CHECK: {{.*}} call {{.*}} @llvm.wasm.trunc.{{.*}}
+    // CHECK: {{.*}} call {{.*}} @llvm.fptosi.sat.i64.f32{{.*}}
     a as _
 }
 
@@ -34,7 +35,7 @@ pub fn cast_f32_i64(a: f32) -> i64 {
 pub fn cast_f32_i32(a: f32) -> i32 {
     // CHECK-NOT: fptosi float {{.*}} to i32
     // CHECK-NOT: select i1 {{.*}}, i32 {{.*}}, i32 {{.*}}
-    // CHECK: {{.*}} call {{.*}} @llvm.wasm.trunc.{{.*}}
+    // CHECK: {{.*}} call {{.*}} @llvm.fptosi.sat.i32.f32{{.*}}
     a as _
 }
 
@@ -43,7 +44,7 @@ pub fn cast_f32_i32(a: f32) -> i32 {
 pub fn cast_f64_u64(a: f64) -> u64 {
     // CHECK-NOT: fptoui double {{.*}} to i64
     // CHECK-NOT: select i1 {{.*}}, i64 {{.*}}, i64 {{.*}}
-    // CHECK: {{.*}} call {{.*}} @llvm.wasm.trunc.{{.*}}
+    // CHECK: {{.*}} call {{.*}} @llvm.fptoui.sat.i64.f64{{.*}}
     a as _
 }
 
@@ -52,7 +53,7 @@ pub fn cast_f64_u64(a: f64) -> u64 {
 pub fn cast_f64_u32(a: f64) -> u32 {
     // CHECK-NOT: fptoui double {{.*}} to i32
     // CHECK-NOT: select i1 {{.*}}, i32 {{.*}}, i32 {{.*}}
-    // CHECK: {{.*}} call {{.*}} @llvm.wasm.trunc.{{.*}}
+    // CHECK: {{.*}} call {{.*}} @llvm.fptoui.sat.i32.f64{{.*}}
     a as _
 }
 
@@ -61,7 +62,7 @@ pub fn cast_f64_u32(a: f64) -> u32 {
 pub fn cast_f32_u64(a: f32) -> u64 {
     // CHECK-NOT: fptoui float {{.*}} to i64
     // CHECK-NOT: select i1 {{.*}}, i64 {{.*}}, i64 {{.*}}
-    // CHECK: {{.*}} call {{.*}} @llvm.wasm.trunc.{{.*}}
+    // CHECK: {{.*}} call {{.*}} @llvm.fptoui.sat.i64.f32{{.*}}
     a as _
 }
 
@@ -70,16 +71,16 @@ pub fn cast_f32_u64(a: f32) -> u64 {
 pub fn cast_f32_u32(a: f32) -> u32 {
     // CHECK-NOT: fptoui float {{.*}} to i32
     // CHECK-NOT: select i1 {{.*}}, i32 {{.*}}, i32 {{.*}}
-    // CHECK: {{.*}} call {{.*}} @llvm.wasm.trunc.{{.*}}
+    // CHECK: {{.*}} call {{.*}} @llvm.fptoui.sat.i32.f32{{.*}}
     a as _
 }
 
 // CHECK-LABEL: @cast_f32_u8
 #[no_mangle]
 pub fn cast_f32_u8(a: f32) -> u8 {
-    // CHECK-NOT: {{.*}} call {{.*}} @llvm.wasm.trunc.{{.*}}
-    // CHECK: fptoui float {{.*}} to i8
-    // CHECK-NEXT: select i1 {{.*}}, i8 {{.*}}, i8 {{.*}}
+    // CHECK-NOT: fptoui float {{.*}} to i8
+    // CHECK-NOT: select i1 {{.*}}, i8 {{.*}}, i8 {{.*}}
+    // CHECK: {{.*}} call {{.*}} @llvm.fptoui.sat.i8.f32{{.*}}
     a as _
 }