[llvm] 430bdb1 - [NFC][WebAssembly] More fpclamptosat tests
Samuel Parker via llvm-commits
llvm-commits at lists.llvm.org
Wed Jan 25 02:25:34 PST 2023
Author: Samuel Parker
Date: 2023-01-25T10:25:23Z
New Revision: 430bdb121571794864c11e1aa527ea1bc376bde8
URL: https://github.com/llvm/llvm-project/commit/430bdb121571794864c11e1aa527ea1bc376bde8
DIFF: https://github.com/llvm/llvm-project/commit/430bdb121571794864c11e1aa527ea1bc376bde8.diff
LOG: [NFC][WebAssembly] More fpclamptosat tests
Added:
Modified:
llvm/test/CodeGen/WebAssembly/fpclamptosat.ll
Removed:
################################################################################
diff --git a/llvm/test/CodeGen/WebAssembly/fpclamptosat.ll b/llvm/test/CodeGen/WebAssembly/fpclamptosat.ll
index f648ca824f65a..4a1a9a2b3cf0e 100644
--- a/llvm/test/CodeGen/WebAssembly/fpclamptosat.ll
+++ b/llvm/test/CodeGen/WebAssembly/fpclamptosat.ll
@@ -564,6 +564,50 @@ entry:
ret i64 %conv6
}
+define i64 @utest_f64i64_cse_combine(double %x) #0 {
+; CHECK-LABEL: utest_f64i64_cse_combine:
+; CHECK: .functype utest_f64i64_cse_combine (f64) -> (i64)
+; CHECK-NEXT: .local i32, i64, i64
+; CHECK-NEXT: # %bb.0: # %entry
+; CHECK-NEXT: global.get __stack_pointer
+; CHECK-NEXT: i32.const 16
+; CHECK-NEXT: i32.sub
+; CHECK-NEXT: local.tee 1
+; CHECK-NEXT: global.set __stack_pointer
+; CHECK-NEXT: local.get 1
+; CHECK-NEXT: local.get 0
+; CHECK-NEXT: call __fixunsdfti
+; CHECK-NEXT: local.get 1
+; CHECK-NEXT: i32.const 8
+; CHECK-NEXT: i32.add
+; CHECK-NEXT: i64.load 0
+; CHECK-NEXT: local.set 2
+; CHECK-NEXT: local.get 1
+; CHECK-NEXT: i64.load 0
+; CHECK-NEXT: local.set 3
+; CHECK-NEXT: local.get 1
+; CHECK-NEXT: i32.const 16
+; CHECK-NEXT: i32.add
+; CHECK-NEXT: global.set __stack_pointer
+; CHECK-NEXT: i64.const 0
+; CHECK-NEXT: local.get 3
+; CHECK-NEXT: i64.const 0
+; CHECK-NEXT: local.get 2
+; CHECK-NEXT: i64.eqz
+; CHECK-NEXT: i64.select
+; CHECK-NEXT: local.get 2
+; CHECK-NEXT: i64.const 1
+; CHECK-NEXT: i64.eq
+; CHECK-NEXT: i64.select
+; CHECK-NEXT: # fallthrough-return
+entry:
+ %conv = fptoui double %x to i128
+ %spec.store.select = call i128 @llvm.umin.i128(i128 %conv, i128 18446744073709551616)
+ %conv6 = trunc i128 %spec.store.select to i64
+ ret i64 %conv6
+}
+
+
define i64 @ustest_f64i64(double %x) {
; CHECK-LABEL: ustest_f64i64:
; CHECK: .functype ustest_f64i64 (f64) -> (i64)
@@ -623,6 +667,66 @@ entry:
ret i64 %conv6
}
+define i64 @ustest_f64i64_cse_combine(double %x) #0 {
+; CHECK-LABEL: ustest_f64i64_cse_combine:
+; CHECK: .functype ustest_f64i64_cse_combine (f64) -> (i64)
+; CHECK-NEXT: .local i32, i64, i64
+; CHECK-NEXT: # %bb.0: # %entry
+; CHECK-NEXT: global.get __stack_pointer
+; CHECK-NEXT: i32.const 16
+; CHECK-NEXT: i32.sub
+; CHECK-NEXT: local.tee 1
+; CHECK-NEXT: global.set __stack_pointer
+; CHECK-NEXT: local.get 1
+; CHECK-NEXT: local.get 0
+; CHECK-NEXT: call __fixdfti
+; CHECK-NEXT: local.get 1
+; CHECK-NEXT: i32.const 8
+; CHECK-NEXT: i32.add
+; CHECK-NEXT: i64.load 0
+; CHECK-NEXT: local.set 2
+; CHECK-NEXT: local.get 1
+; CHECK-NEXT: i64.load 0
+; CHECK-NEXT: local.set 3
+; CHECK-NEXT: local.get 1
+; CHECK-NEXT: i32.const 16
+; CHECK-NEXT: i32.add
+; CHECK-NEXT: global.set __stack_pointer
+; CHECK-NEXT: i64.const 0
+; CHECK-NEXT: local.get 3
+; CHECK-NEXT: i64.const 0
+; CHECK-NEXT: local.get 2
+; CHECK-NEXT: i64.const 1
+; CHECK-NEXT: i64.lt_s
+; CHECK-NEXT: local.tee 1
+; CHECK-NEXT: i64.select
+; CHECK-NEXT: local.get 2
+; CHECK-NEXT: i64.const 1
+; CHECK-NEXT: i64.eq
+; CHECK-NEXT: i64.select
+; CHECK-NEXT: local.tee 3
+; CHECK-NEXT: local.get 3
+; CHECK-NEXT: i64.const 0
+; CHECK-NEXT: local.get 2
+; CHECK-NEXT: i64.const 1
+; CHECK-NEXT: local.get 1
+; CHECK-NEXT: i64.select
+; CHECK-NEXT: local.tee 2
+; CHECK-NEXT: i64.const 0
+; CHECK-NEXT: i64.gt_s
+; CHECK-NEXT: i64.select
+; CHECK-NEXT: local.get 2
+; CHECK-NEXT: i64.eqz
+; CHECK-NEXT: i64.select
+; CHECK-NEXT: # fallthrough-return
+entry:
+ %conv = fptosi double %x to i128
+ %spec.store.select = call i128 @llvm.smin.i128(i128 %conv, i128 18446744073709551616)
+ %spec.store.select7 = call i128 @llvm.smax.i128(i128 %spec.store.select, i128 0)
+ %conv6 = trunc i128 %spec.store.select7 to i64
+ ret i64 %conv6
+}
+
define i64 @stest_f32i64(float %x) {
; CHECK-LABEL: stest_f32i64:
; CHECK: .functype stest_f32i64 (f32) -> (i64)
@@ -679,6 +783,21 @@ entry:
ret i64 %conv6
}
+define i64 @stest_f32i64_cse_combine(float %x) #0 {
+; CHECK-LABEL: stest_f32i64_cse_combine:
+; CHECK: .functype stest_f32i64_cse_combine (f32) -> (i64)
+; CHECK-NEXT: # %bb.0: # %entry
+; CHECK-NEXT: local.get 0
+; CHECK-NEXT: i64.trunc_sat_f32_s
+; CHECK-NEXT: # fallthrough-return
+entry:
+ %conv = fptosi float %x to i128
+ %spec.store.select = call i128 @llvm.smin.i128(i128 %conv, i128 9223372036854775807)
+ %spec.store.select7 = call i128 @llvm.smax.i128(i128 %spec.store.select, i128 -9223372036854775808)
+ %conv6 = trunc i128 %spec.store.select7 to i64
+ ret i64 %conv6
+}
+
define i64 @ustest_f32i64(float %x) {
; CHECK-LABEL: ustest_f32i64:
; CHECK: .functype ustest_f32i64 (f32) -> (i64)
@@ -738,6 +857,66 @@ entry:
ret i64 %conv6
}
+define i64 @ustest_f32i64_cse_combine(float %x) #0 {
+; CHECK-LABEL: ustest_f32i64_cse_combine:
+; CHECK: .functype ustest_f32i64_cse_combine (f32) -> (i64)
+; CHECK-NEXT: .local i32, i64, i64
+; CHECK-NEXT: # %bb.0: # %entry
+; CHECK-NEXT: global.get __stack_pointer
+; CHECK-NEXT: i32.const 16
+; CHECK-NEXT: i32.sub
+; CHECK-NEXT: local.tee 1
+; CHECK-NEXT: global.set __stack_pointer
+; CHECK-NEXT: local.get 1
+; CHECK-NEXT: local.get 0
+; CHECK-NEXT: call __fixsfti
+; CHECK-NEXT: local.get 1
+; CHECK-NEXT: i32.const 8
+; CHECK-NEXT: i32.add
+; CHECK-NEXT: i64.load 0
+; CHECK-NEXT: local.set 2
+; CHECK-NEXT: local.get 1
+; CHECK-NEXT: i64.load 0
+; CHECK-NEXT: local.set 3
+; CHECK-NEXT: local.get 1
+; CHECK-NEXT: i32.const 16
+; CHECK-NEXT: i32.add
+; CHECK-NEXT: global.set __stack_pointer
+; CHECK-NEXT: i64.const 0
+; CHECK-NEXT: local.get 3
+; CHECK-NEXT: i64.const 0
+; CHECK-NEXT: local.get 2
+; CHECK-NEXT: i64.const 1
+; CHECK-NEXT: i64.lt_s
+; CHECK-NEXT: local.tee 1
+; CHECK-NEXT: i64.select
+; CHECK-NEXT: local.get 2
+; CHECK-NEXT: i64.const 1
+; CHECK-NEXT: i64.eq
+; CHECK-NEXT: i64.select
+; CHECK-NEXT: local.tee 3
+; CHECK-NEXT: local.get 3
+; CHECK-NEXT: i64.const 0
+; CHECK-NEXT: local.get 2
+; CHECK-NEXT: i64.const 1
+; CHECK-NEXT: local.get 1
+; CHECK-NEXT: i64.select
+; CHECK-NEXT: local.tee 2
+; CHECK-NEXT: i64.const 0
+; CHECK-NEXT: i64.gt_s
+; CHECK-NEXT: i64.select
+; CHECK-NEXT: local.get 2
+; CHECK-NEXT: i64.eqz
+; CHECK-NEXT: i64.select
+; CHECK-NEXT: # fallthrough-return
+entry:
+ %conv = fptosi float %x to i128
+ %spec.store.select = call i128 @llvm.smin.i128(i128 %conv, i128 18446744073709551616)
+ %spec.store.select7 = call i128 @llvm.smax.i128(i128 %spec.store.select, i128 0)
+ %conv6 = trunc i128 %spec.store.select7 to i64
+ ret i64 %conv6
+}
+
define i64 @stest_f16i64(half %x) {
; CHECK-LABEL: stest_f16i64:
; CHECK: .functype stest_f16i64 (f32) -> (i64)
More information about the llvm-commits
mailing list