xref: /llvm-project/llvm/test/CodeGen/WebAssembly/inlineasm-output-template.ll (revision 73856247eef35f5336e485dc009842a5b991c421)
1; RUN: llc -mtriple=wasm32 < %s | FileCheck %s
2
3; Skip past the functype directives, which interfere with the CHECK-LABEL
4; matches.
5;
6; Test that %c works with immediates
7; CHECK-LABEL: test_inlineasm_c_output_template0:
8; CHECK: #TEST 42
9define dso_local i32 @test_inlineasm_c_output_template0() {
10  tail call void asm sideeffect "#TEST ${0:c}", "i"(i32 42)
11  ret i32 42
12}
13
14; Test that %c works with global address
15; CHECK-LABEL: test_inlineasm_c_output_template2:
16; CHECK: #TEST baz
17@baz = internal global i32 0, align 4
18define dso_local i32 @test_inlineasm_c_output_template2() {
19  tail call void asm sideeffect "#TEST ${0:c}", "i"(ptr nonnull @baz)
20  ret i32 42
21}
22
23; Test that %n works with immediates
24; CHECK-LABEL: test_inlineasm_c_output_template1:
25; CHECK: #TEST -42
26define dso_local i32 @test_inlineasm_c_output_template1() {
27  tail call void asm sideeffect "#TEST ${0:n}", "i"(i32 42)
28  ret i32 42
29}
30