xref: /llvm-project/llvm/test/CodeGen/WebAssembly/fast-isel-i24.ll (revision 122b0220fd45ee71acda912b0b712bb8edb6ba46)
1; RUN: llc < %s -O0 -wasm-keep-registers
2; PR36564
3; PR37546
4
5; Test that fast-isel properly copes with i24 arguments and return types.
6
7target triple = "wasm32-unknown-unknown"
8
9; CHECK-LABEL: add:
10; CHECK-NEXT: .functype add (i32, i32) -> (i32){{$}}
11; CHECK-NEXT: local.get	$push2=, 0{{$}}
12; CHECK-NEXT: local.get	$push1=, 1{{$}}
13; CHECK-NEXT: i32.add 	$push0=, $pop2, $pop1{{$}}
14; CHECK-NEXT: end_function
15define i24 @add(i24 %x, i24 %y) {
16    %z = add i24 %x, %y
17    ret i24 %z
18}
19
20; CHECK-LABEL: return_zero:
21; CHECK-NEXT: .functype return_zero () -> (i32){{$}}
22; CHECK-NEXT: i32.const	$push0=, 0{{$}}
23; CHECK-NEXT: end_function
24define i24 @return_zero() {
25    ret i24 0
26}
27