blob: 106b6c933a49bcb88c998a3d366d84ea6e83b1a6 [file] [log] [blame]
// Registers R0 - R3 have different names inside the LLVM MSP430 target code.
// Test that they are handled properly when used inside clobber lists.
// At the time of writing, llc silently ignores unknown register names.
// REQUIRES: msp430-registered-target
// RUN: %clang -target msp430 -c %s -mllvm -stop-after=finalize-isel -o- | FileCheck %s
void test_function(void) {
asm volatile(""
:
:
: "r0");
asm volatile(""
:
:
: "r1");
asm volatile(""
:
:
: "r2");
asm volatile(""
:
:
: "r3");
asm volatile(""
:
:
: "r4");
asm volatile(""
:
:
: "r5");
asm volatile(""
:
:
: "r6");
asm volatile(""
:
:
: "r7");
asm volatile(""
:
:
: "r8");
asm volatile(""
:
:
: "r9");
asm volatile(""
:
:
: "r10");
asm volatile(""
:
:
: "r11");
asm volatile(""
:
:
: "r12");
asm volatile(""
:
:
: "r13");
asm volatile(""
:
:
: "r14");
asm volatile(""
:
:
: "r15");
// CHECK: call void asm sideeffect "", "~{pc}"()
// CHECK: call void asm sideeffect "", "~{sp}"()
// CHECK: call void asm sideeffect "", "~{sr}"()
// CHECK: call void asm sideeffect "", "~{cg}"()
// CHECK: call void asm sideeffect "", "~{r4}"()
// CHECK: call void asm sideeffect "", "~{r5}"()
// CHECK: call void asm sideeffect "", "~{r6}"()
// CHECK: call void asm sideeffect "", "~{r7}"()
// CHECK: call void asm sideeffect "", "~{r8}"()
// CHECK: call void asm sideeffect "", "~{r9}"()
// CHECK: call void asm sideeffect "", "~{r10}"()
// CHECK: call void asm sideeffect "", "~{r11}"()
// CHECK: call void asm sideeffect "", "~{r12}"()
// CHECK: call void asm sideeffect "", "~{r13}"()
// CHECK: call void asm sideeffect "", "~{r14}"()
// CHECK: call void asm sideeffect "", "~{r15}"()
// CHECK: INLINEASM &"", {{.*}} implicit-def early-clobber $pc
// CHECK: INLINEASM &"", {{.*}} implicit-def early-clobber $sp
// CHECK: INLINEASM &"", {{.*}} implicit-def early-clobber $sr
// CHECK: INLINEASM &"", {{.*}} implicit-def early-clobber $cg
// CHECK: INLINEASM &"", {{.*}} implicit-def early-clobber $r4
// CHECK: INLINEASM &"", {{.*}} implicit-def early-clobber $r5
// CHECK: INLINEASM &"", {{.*}} implicit-def early-clobber $r6
// CHECK: INLINEASM &"", {{.*}} implicit-def early-clobber $r7
// CHECK: INLINEASM &"", {{.*}} implicit-def early-clobber $r8
// CHECK: INLINEASM &"", {{.*}} implicit-def early-clobber $r9
// CHECK: INLINEASM &"", {{.*}} implicit-def early-clobber $r10
// CHECK: INLINEASM &"", {{.*}} implicit-def early-clobber $r11
// CHECK: INLINEASM &"", {{.*}} implicit-def early-clobber $r12
// CHECK: INLINEASM &"", {{.*}} implicit-def early-clobber $r13
// CHECK: INLINEASM &"", {{.*}} implicit-def early-clobber $r14
// CHECK: INLINEASM &"", {{.*}} implicit-def early-clobber $r15
}