// 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 }