summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/WebAssembly/libcalls.ll
diff options
context:
space:
mode:
authorThomas Lively <tlively@google.com>2019-05-24 00:15:04 +0000
committerThomas Lively <tlively@google.com>2019-05-24 00:15:04 +0000
commit55229f6b10276526d76f7f6b900053e3c82b5bf7 (patch)
tree8f1b27b42fca7a2279233f0c5c8ebc9c82a4eb66 /llvm/test/CodeGen/WebAssembly/libcalls.ll
parent8869a98e82552ef698112df840575693780802a4 (diff)
downloadbcm5719-llvm-55229f6b10276526d76f7f6b900053e3c82b5bf7.tar.gz
bcm5719-llvm-55229f6b10276526d76f7f6b900053e3c82b5bf7.zip
[WebAssembly] Expand more SIMD float ops
Summary: These were previously causing ISel failures. Reviewers: aheejin Subscribers: dschuff, sbc100, jgravelle-google, hiraditya, sunfish, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D62354 llvm-svn: 361577
Diffstat (limited to 'llvm/test/CodeGen/WebAssembly/libcalls.ll')
-rw-r--r--llvm/test/CodeGen/WebAssembly/libcalls.ll17
1 files changed, 15 insertions, 2 deletions
diff --git a/llvm/test/CodeGen/WebAssembly/libcalls.ll b/llvm/test/CodeGen/WebAssembly/libcalls.ll
index 3849f1978a2..bccb438f3c0 100644
--- a/llvm/test/CodeGen/WebAssembly/libcalls.ll
+++ b/llvm/test/CodeGen/WebAssembly/libcalls.ll
@@ -13,6 +13,11 @@ declare fp128 @llvm.pow.f128(fp128, fp128)
declare double @llvm.cos.f64(double)
declare double @llvm.log10.f64(double)
+declare double @llvm.pow.f64(double, double)
+declare double @llvm.log.f64(double)
+declare double @llvm.exp.f64(double)
+declare i32 @llvm.lround(double)
+
; CHECK-LABEL: fp128libcalls:
@@ -51,12 +56,20 @@ define i128 @i128libcalls(i128 %x, i128 %y) {
}
; CHECK-LABEL: f64libcalls:
-define double @f64libcalls(double %x, double %y) {
+define i32 @f64libcalls(double %x, double %y) {
; CHECK: f64.call $push{{[0-9]}}=, cos
%a = call double @llvm.cos.f64(double %x)
; CHECK: f64.call $push{{[0-9]}}=, log10
%b = call double @llvm.log10.f64(double %a)
- ret double %b
+ ; CHECK: f64.call $push{{[0-9]}}=, pow
+ %c = call double @llvm.pow.f64(double %b, double %y)
+ ; CHECK: f64.call $push{{[0-9]}}=, log
+ %d = call double @llvm.log.f64(double %c)
+ ; CHECK: f64.call $push{{[0-9]}}=, exp
+ %e = call double @llvm.exp.f64(double %d)
+ ; CHECK: i32.call $push{{[0-9]}}=, lround
+ %f = call i32 @llvm.lround(double %e)
+ ret i32 %f
}
; fcmp ord and unord (RTLIB::O_F32 / RTLIB::UO_F32 etc) are a special case (see
OpenPOWER on IntegriCloud