| ; RUN: llc -mtriple=ppc32 < %s | FileCheck %s | |
| ; RUN: llc -mtriple=ppc64 < %s | FileCheck %s --check-prefix=PPC64 | |
| ; Test that %c works with immediates | |
| ; CHECK-LABEL: test_inlineasm_c_output_template0 | |
| ; CHECK: #TEST 42 | |
| define dso_local i32 @test_inlineasm_c_output_template0() { | |
| tail call void asm sideeffect "#TEST ${0:c}", "i"(i32 42) | |
| ret i32 42 | |
| } | |
| ; Test that %c works with global address | |
| ; CHECK-LABEL: test_inlineasm_c_output_template1: | |
| ; CHECK: #TEST baz | |
| @baz = internal global i32 0, align 4 | |
| define dso_local i32 @test_inlineasm_c_output_template1() { | |
| tail call void asm sideeffect "#TEST ${0:c}", "i"(ptr nonnull @baz) | |
| ret i32 43 | |
| } | |
| ; Test that %n works with immediates | |
| ; CHECK-LABEL: test_inlineasm_c_output_template2 | |
| ; CHECK: #TEST -42 | |
| define dso_local i32 @test_inlineasm_c_output_template2() { | |
| tail call void asm sideeffect "#TEST ${0:n}", "i"(i32 42) | |
| ret i32 42 | |
| } | |
| ; Test that the machine specific %L works with memory operands. | |
| ; CHECK-LABEL: test_inlineasm_L_output_template | |
| ; CHECK: # 4(5) | |
| ; PPC64-LABEL: test_inlineasm_L_output_template | |
| ; PPC64: # 8(4) | |
| define dso_local void @test_inlineasm_L_output_template(i64 %0, ptr %1) { | |
| tail call void asm sideeffect "# ${0:L}", "*m"(ptr elementtype(i64) %1) | |
| ret void | |
| } |