1; RUN: llc -march=nvptx < %s | FileCheck %s
2; RUN: %if ptxas %{ llc -march=nvptx < %s | %ptxas-verify %}
3
4; Test that %c works with immediates
5; CHECK-LABEL: test_inlineasm_c_output_template0
6; CHECK: //TEST 42
7define dso_local i32 @test_inlineasm_c_output_template0() {
8  tail call void asm sideeffect "//TEST ${0:c}", "i"(i32 42)
9  ret i32 42
10}
11
12; Test that %c works with global address
13; FIXME: seems this case isn't handled properly by
14; SelectionDAG TargetLowering::LowerAsmOperandForConstraint?
15; check: test_inlineasm_c_output_template1
16; check: //TEST baz
17;@baz = internal global i32 0, align 4
18;define dso_local i32 @test_inlineasm_c_output_template1() {
19;  tail call void asm sideeffect "//TEST ${0:c}", "i"(i32* nonnull @baz)
20;  ret i32 42
21;}
22
23; Test that %n works with immediates
24; CHECK-LABEL: test_inlineasm_c_output_template2
25; CHECK: //TEST -42
26define dso_local i32 @test_inlineasm_c_output_template2() {
27  tail call void asm sideeffect "//TEST ${0:n}", "i"(i32 42)
28  ret i32 42
29}
30