diff options
author | Dan Gohman <dan433584@gmail.com> | 2018-05-22 04:58:36 +0000 |
---|---|---|
committer | Dan Gohman <dan433584@gmail.com> | 2018-05-22 04:58:36 +0000 |
commit | b81848272dc60d6ada098e6efe004140533ea277 (patch) | |
tree | ef19b0db70aea3f14c57bd34fdb8546b80c71c77 /llvm/test/CodeGen/WebAssembly/fast-isel-i256.ll | |
parent | 19da66759944f2a3d2b7142e76a409c68d4c87fd (diff) | |
download | bcm5719-llvm-b81848272dc60d6ada098e6efe004140533ea277.tar.gz bcm5719-llvm-b81848272dc60d6ada098e6efe004140533ea277.zip |
[WebAssembly] Fix fast-isel lowering illegal argument and return types.
For both argument and return types, promote illegal types like i24 to i32,
and if a type can't be easily promoted, clear out the signature before
bailing out, so avoid leaving it in a partially complete state.
Fixes PR37546.
llvm-svn: 332947
Diffstat (limited to 'llvm/test/CodeGen/WebAssembly/fast-isel-i256.ll')
-rw-r--r-- | llvm/test/CodeGen/WebAssembly/fast-isel-i256.ll | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/WebAssembly/fast-isel-i256.ll b/llvm/test/CodeGen/WebAssembly/fast-isel-i256.ll new file mode 100644 index 00000000000..a30ea353701 --- /dev/null +++ b/llvm/test/CodeGen/WebAssembly/fast-isel-i256.ll @@ -0,0 +1,33 @@ +; RUN: llc < %s -O0 +; PR36564 +; PR37546 + +; Test that fast-isel properly copes with i256 arguments and return types. + +target datalayout = "e-m:e-p:32:32-i64:64-n32:64-S128" +target triple = "wasm32-unknown-unknown" + +; CHECK-LABEL: add: +; CHECK-NEXT: .param i32, i64, i64, i64, i64, i64, i64, i64, i64{{$}} +; CHECK-NOT: .result +; CHECK: end_function +define i256 @add(i256 %x, i256 %y) { + %z = add i256 %x, %y + ret i256 %z +} + +; CHECK-LABEL: return_zero: +; CHECK-NEXT: .param i32{{$}} +; CHECK-NOT: .result +; CHECK: end_function +define i256 @return_zero() { + ret i256 0 +} + +; CHECK-LABEL: return_zero_with_params: +; CHECK-NEXT: .param i32, f32{{$}} +; CHECK-NOT: .result +; CHECK: end_function +define i256 @return_zero_with_params(float %x) { + ret i256 0 +} |