106 lines · c
1// Registers R0 - R3 have different names inside the LLVM MSP430 target code.2// Test that they are handled properly when used inside clobber lists.3// At the time of writing, llc silently ignores unknown register names.4 5// REQUIRES: msp430-registered-target6// RUN: %clang -target msp430 -c %s -mllvm -stop-after=finalize-isel -o- | FileCheck %s7 8void test_function(void) {9 asm volatile(""10 :11 :12 : "r0");13 asm volatile(""14 :15 :16 : "r1");17 asm volatile(""18 :19 :20 : "r2");21 asm volatile(""22 :23 :24 : "r3");25 asm volatile(""26 :27 :28 : "r4");29 asm volatile(""30 :31 :32 : "r5");33 asm volatile(""34 :35 :36 : "r6");37 asm volatile(""38 :39 :40 : "r7");41 asm volatile(""42 :43 :44 : "r8");45 asm volatile(""46 :47 :48 : "r9");49 asm volatile(""50 :51 :52 : "r10");53 asm volatile(""54 :55 :56 : "r11");57 asm volatile(""58 :59 :60 : "r12");61 asm volatile(""62 :63 :64 : "r13");65 asm volatile(""66 :67 :68 : "r14");69 asm volatile(""70 :71 :72 : "r15");73 // CHECK: call void asm sideeffect "", "~{pc}"()74 // CHECK: call void asm sideeffect "", "~{sp}"()75 // CHECK: call void asm sideeffect "", "~{sr}"()76 // CHECK: call void asm sideeffect "", "~{cg}"()77 // CHECK: call void asm sideeffect "", "~{r4}"()78 // CHECK: call void asm sideeffect "", "~{r5}"()79 // CHECK: call void asm sideeffect "", "~{r6}"()80 // CHECK: call void asm sideeffect "", "~{r7}"()81 // CHECK: call void asm sideeffect "", "~{r8}"()82 // CHECK: call void asm sideeffect "", "~{r9}"()83 // CHECK: call void asm sideeffect "", "~{r10}"()84 // CHECK: call void asm sideeffect "", "~{r11}"()85 // CHECK: call void asm sideeffect "", "~{r12}"()86 // CHECK: call void asm sideeffect "", "~{r13}"()87 // CHECK: call void asm sideeffect "", "~{r14}"()88 // CHECK: call void asm sideeffect "", "~{r15}"()89 // CHECK: INLINEASM &"", {{.*}} implicit-def early-clobber $pc90 // CHECK: INLINEASM &"", {{.*}} implicit-def early-clobber $sp91 // CHECK: INLINEASM &"", {{.*}} implicit-def early-clobber $sr92 // CHECK: INLINEASM &"", {{.*}} implicit-def early-clobber $cg93 // CHECK: INLINEASM &"", {{.*}} implicit-def early-clobber $r494 // CHECK: INLINEASM &"", {{.*}} implicit-def early-clobber $r595 // CHECK: INLINEASM &"", {{.*}} implicit-def early-clobber $r696 // CHECK: INLINEASM &"", {{.*}} implicit-def early-clobber $r797 // CHECK: INLINEASM &"", {{.*}} implicit-def early-clobber $r898 // CHECK: INLINEASM &"", {{.*}} implicit-def early-clobber $r999 // CHECK: INLINEASM &"", {{.*}} implicit-def early-clobber $r10100 // CHECK: INLINEASM &"", {{.*}} implicit-def early-clobber $r11101 // CHECK: INLINEASM &"", {{.*}} implicit-def early-clobber $r12102 // CHECK: INLINEASM &"", {{.*}} implicit-def early-clobber $r13103 // CHECK: INLINEASM &"", {{.*}} implicit-def early-clobber $r14104 // CHECK: INLINEASM &"", {{.*}} implicit-def early-clobber $r15105}106