To GNU as, register classes are determined by context. This patch
changes the asm printed to print just the register number alone on
non-Darwin platforms.

The "getRegisterPrefix" function might be a little too magical. I'd be
happy to hear any suggestions.

Nick Lewycky
Index: lib/Target/PowerPC/PPCAsmPrinter.cpp
===================================================================
RCS file: /var/cvs/llvm/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp,v
retrieving revision 1.221
diff -u -r1.221 PPCAsmPrinter.cpp
--- lib/Target/PowerPC/PPCAsmPrinter.cpp	12 Dec 2006 20:57:08 -0000	1.221
+++ lib/Target/PowerPC/PPCAsmPrinter.cpp	18 Dec 2006 00:36:48 -0000
@@ -90,10 +90,19 @@
     void printMachineInstruction(const MachineInstr *MI);
     void printOp(const MachineOperand &MO);
 
+    static std::string getRegisterPrefix(unsigned regno) {
+      if (regno > 76) return "v";
+      if (regno > 67) return "cr";
+      if (regno > 31) return "f";
+      return "r";
+    }
+
     void printOperand(const MachineInstr *MI, unsigned OpNo) {
       const MachineOperand &MO = MI->getOperand(OpNo);
       if (MO.isRegister()) {
         assert(MRegisterInfo::isPhysicalRegister(MO.getReg())&&"Not physreg??");
+        if (Subtarget.isDarwin())
+          O << getRegisterPrefix(MO.getReg());
         O << TM.getRegisterInfo()->get(MO.getReg()).Name;
       } else if (MO.isImmediate()) {
         O << MO.getImmedValue();
Index: lib/Target/PowerPC/PPCRegisterInfo.td
===================================================================
RCS file: /var/cvs/llvm/llvm/lib/Target/PowerPC/PPCRegisterInfo.td,v
retrieving revision 1.42
diff -u -r1.42 PPCRegisterInfo.td
--- lib/Target/PowerPC/PPCRegisterInfo.td	20 Nov 2006 20:48:05 -0000	1.42
+++ lib/Target/PowerPC/PPCRegisterInfo.td	18 Dec 2006 00:36:49 -0000
@@ -48,38 +48,38 @@
 }
 
 // General-purpose registers
-def R0  : GPR< 0,  "r0">, DwarfRegNum<0>;
-def R1  : GPR< 1,  "r1">, DwarfRegNum<1>;
-def R2  : GPR< 2,  "r2">, DwarfRegNum<2>;
-def R3  : GPR< 3,  "r3">, DwarfRegNum<3>;
-def R4  : GPR< 4,  "r4">, DwarfRegNum<4>;
-def R5  : GPR< 5,  "r5">, DwarfRegNum<5>;
-def R6  : GPR< 6,  "r6">, DwarfRegNum<6>;
-def R7  : GPR< 7,  "r7">, DwarfRegNum<7>;
-def R8  : GPR< 8,  "r8">, DwarfRegNum<8>;
-def R9  : GPR< 9,  "r9">, DwarfRegNum<9>;
-def R10 : GPR<10, "r10">, DwarfRegNum<10>;
-def R11 : GPR<11, "r11">, DwarfRegNum<11>;
-def R12 : GPR<12, "r12">, DwarfRegNum<12>;
-def R13 : GPR<13, "r13">, DwarfRegNum<13>;
-def R14 : GPR<14, "r14">, DwarfRegNum<14>;
-def R15 : GPR<15, "r15">, DwarfRegNum<15>;
-def R16 : GPR<16, "r16">, DwarfRegNum<16>;
-def R17 : GPR<17, "r17">, DwarfRegNum<17>;
-def R18 : GPR<18, "r18">, DwarfRegNum<18>;
-def R19 : GPR<19, "r19">, DwarfRegNum<19>;
-def R20 : GPR<20, "r20">, DwarfRegNum<20>;
-def R21 : GPR<21, "r21">, DwarfRegNum<21>;
-def R22 : GPR<22, "r22">, DwarfRegNum<22>;
-def R23 : GPR<23, "r23">, DwarfRegNum<23>;
-def R24 : GPR<24, "r24">, DwarfRegNum<24>;
-def R25 : GPR<25, "r25">, DwarfRegNum<25>;
-def R26 : GPR<26, "r26">, DwarfRegNum<26>;
-def R27 : GPR<27, "r27">, DwarfRegNum<27>;
-def R28 : GPR<28, "r28">, DwarfRegNum<28>;
-def R29 : GPR<29, "r29">, DwarfRegNum<29>;
-def R30 : GPR<30, "r30">, DwarfRegNum<30>;
-def R31 : GPR<31, "r31">, DwarfRegNum<31>;
+def R0  : GPR< 0,  "0">, DwarfRegNum<0>;
+def R1  : GPR< 1,  "1">, DwarfRegNum<1>;
+def R2  : GPR< 2,  "2">, DwarfRegNum<2>;
+def R3  : GPR< 3,  "3">, DwarfRegNum<3>;
+def R4  : GPR< 4,  "4">, DwarfRegNum<4>;
+def R5  : GPR< 5,  "5">, DwarfRegNum<5>;
+def R6  : GPR< 6,  "6">, DwarfRegNum<6>;
+def R7  : GPR< 7,  "7">, DwarfRegNum<7>;
+def R8  : GPR< 8,  "8">, DwarfRegNum<8>;
+def R9  : GPR< 9,  "9">, DwarfRegNum<9>;
+def R10 : GPR<10, "10">, DwarfRegNum<10>;
+def R11 : GPR<11, "11">, DwarfRegNum<11>;
+def R12 : GPR<12, "12">, DwarfRegNum<12>;
+def R13 : GPR<13, "13">, DwarfRegNum<13>;
+def R14 : GPR<14, "14">, DwarfRegNum<14>;
+def R15 : GPR<15, "15">, DwarfRegNum<15>;
+def R16 : GPR<16, "16">, DwarfRegNum<16>;
+def R17 : GPR<17, "17">, DwarfRegNum<17>;
+def R18 : GPR<18, "18">, DwarfRegNum<18>;
+def R19 : GPR<19, "19">, DwarfRegNum<19>;
+def R20 : GPR<20, "20">, DwarfRegNum<20>;
+def R21 : GPR<21, "21">, DwarfRegNum<21>;
+def R22 : GPR<22, "22">, DwarfRegNum<22>;
+def R23 : GPR<23, "23">, DwarfRegNum<23>;
+def R24 : GPR<24, "24">, DwarfRegNum<24>;
+def R25 : GPR<25, "25">, DwarfRegNum<25>;
+def R26 : GPR<26, "26">, DwarfRegNum<26>;
+def R27 : GPR<27, "27">, DwarfRegNum<27>;
+def R28 : GPR<28, "28">, DwarfRegNum<28>;
+def R29 : GPR<29, "29">, DwarfRegNum<29>;
+def R30 : GPR<30, "30">, DwarfRegNum<30>;
+def R31 : GPR<31, "31">, DwarfRegNum<31>;
 
 // 64-bit General-purpose registers
 def X0  : GP8< R0>, DwarfRegNum<0>;
@@ -116,82 +116,82 @@
 def X31 : GP8<R31>, DwarfRegNum<31>;
 
 // Floating-point registers
-def F0  : FPR< 0,  "f0">, DwarfRegNum<32>;
-def F1  : FPR< 1,  "f1">, DwarfRegNum<33>;
-def F2  : FPR< 2,  "f2">, DwarfRegNum<34>;
-def F3  : FPR< 3,  "f3">, DwarfRegNum<35>;
-def F4  : FPR< 4,  "f4">, DwarfRegNum<36>;
-def F5  : FPR< 5,  "f5">, DwarfRegNum<37>;
-def F6  : FPR< 6,  "f6">, DwarfRegNum<38>;
-def F7  : FPR< 7,  "f7">, DwarfRegNum<39>;
-def F8  : FPR< 8,  "f8">, DwarfRegNum<40>;
-def F9  : FPR< 9,  "f9">, DwarfRegNum<41>;
-def F10 : FPR<10, "f10">, DwarfRegNum<42>;
-def F11 : FPR<11, "f11">, DwarfRegNum<43>;
-def F12 : FPR<12, "f12">, DwarfRegNum<44>;
-def F13 : FPR<13, "f13">, DwarfRegNum<45>;
-def F14 : FPR<14, "f14">, DwarfRegNum<46>;
-def F15 : FPR<15, "f15">, DwarfRegNum<47>;
-def F16 : FPR<16, "f16">, DwarfRegNum<48>;
-def F17 : FPR<17, "f17">, DwarfRegNum<49>;
-def F18 : FPR<18, "f18">, DwarfRegNum<50>;
-def F19 : FPR<19, "f19">, DwarfRegNum<51>;
-def F20 : FPR<20, "f20">, DwarfRegNum<52>;
-def F21 : FPR<21, "f21">, DwarfRegNum<53>;
-def F22 : FPR<22, "f22">, DwarfRegNum<54>;
-def F23 : FPR<23, "f23">, DwarfRegNum<55>;
-def F24 : FPR<24, "f24">, DwarfRegNum<56>;
-def F25 : FPR<25, "f25">, DwarfRegNum<57>;
-def F26 : FPR<26, "f26">, DwarfRegNum<58>;
-def F27 : FPR<27, "f27">, DwarfRegNum<59>;
-def F28 : FPR<28, "f28">, DwarfRegNum<60>;
-def F29 : FPR<29, "f29">, DwarfRegNum<61>;
-def F30 : FPR<30, "f30">, DwarfRegNum<62>;
-def F31 : FPR<31, "f31">, DwarfRegNum<63>;
+def F0  : FPR< 0,  "0">, DwarfRegNum<32>;
+def F1  : FPR< 1,  "1">, DwarfRegNum<33>;
+def F2  : FPR< 2,  "2">, DwarfRegNum<34>;
+def F3  : FPR< 3,  "3">, DwarfRegNum<35>;
+def F4  : FPR< 4,  "4">, DwarfRegNum<36>;
+def F5  : FPR< 5,  "5">, DwarfRegNum<37>;
+def F6  : FPR< 6,  "6">, DwarfRegNum<38>;
+def F7  : FPR< 7,  "7">, DwarfRegNum<39>;
+def F8  : FPR< 8,  "8">, DwarfRegNum<40>;
+def F9  : FPR< 9,  "9">, DwarfRegNum<41>;
+def F10 : FPR<10, "10">, DwarfRegNum<42>;
+def F11 : FPR<11, "11">, DwarfRegNum<43>;
+def F12 : FPR<12, "12">, DwarfRegNum<44>;
+def F13 : FPR<13, "13">, DwarfRegNum<45>;
+def F14 : FPR<14, "14">, DwarfRegNum<46>;
+def F15 : FPR<15, "15">, DwarfRegNum<47>;
+def F16 : FPR<16, "16">, DwarfRegNum<48>;
+def F17 : FPR<17, "17">, DwarfRegNum<49>;
+def F18 : FPR<18, "18">, DwarfRegNum<50>;
+def F19 : FPR<19, "19">, DwarfRegNum<51>;
+def F20 : FPR<20, "20">, DwarfRegNum<52>;
+def F21 : FPR<21, "21">, DwarfRegNum<53>;
+def F22 : FPR<22, "22">, DwarfRegNum<54>;
+def F23 : FPR<23, "23">, DwarfRegNum<55>;
+def F24 : FPR<24, "24">, DwarfRegNum<56>;
+def F25 : FPR<25, "25">, DwarfRegNum<57>;
+def F26 : FPR<26, "26">, DwarfRegNum<58>;
+def F27 : FPR<27, "27">, DwarfRegNum<59>;
+def F28 : FPR<28, "28">, DwarfRegNum<60>;
+def F29 : FPR<29, "29">, DwarfRegNum<61>;
+def F30 : FPR<30, "30">, DwarfRegNum<62>;
+def F31 : FPR<31, "31">, DwarfRegNum<63>;
 
 // Vector registers
-def V0  : VR< 0,  "v0">, DwarfRegNum<77>;
-def V1  : VR< 1,  "v1">, DwarfRegNum<78>;
-def V2  : VR< 2,  "v2">, DwarfRegNum<79>;
-def V3  : VR< 3,  "v3">, DwarfRegNum<80>;
-def V4  : VR< 4,  "v4">, DwarfRegNum<81>;
-def V5  : VR< 5,  "v5">, DwarfRegNum<82>;
-def V6  : VR< 6,  "v6">, DwarfRegNum<83>;
-def V7  : VR< 7,  "v7">, DwarfRegNum<84>;
-def V8  : VR< 8,  "v8">, DwarfRegNum<85>;
-def V9  : VR< 9,  "v9">, DwarfRegNum<86>;
-def V10 : VR<10, "v10">, DwarfRegNum<87>;
-def V11 : VR<11, "v11">, DwarfRegNum<88>;
-def V12 : VR<12, "v12">, DwarfRegNum<89>;
-def V13 : VR<13, "v13">, DwarfRegNum<90>;
-def V14 : VR<14, "v14">, DwarfRegNum<91>;
-def V15 : VR<15, "v15">, DwarfRegNum<92>;
-def V16 : VR<16, "v16">, DwarfRegNum<93>;
-def V17 : VR<17, "v17">, DwarfRegNum<94>;
-def V18 : VR<18, "v18">, DwarfRegNum<95>;
-def V19 : VR<19, "v19">, DwarfRegNum<96>;
-def V20 : VR<20, "v20">, DwarfRegNum<97>;
-def V21 : VR<21, "v21">, DwarfRegNum<98>;
-def V22 : VR<22, "v22">, DwarfRegNum<99>;
-def V23 : VR<23, "v23">, DwarfRegNum<100>;
-def V24 : VR<24, "v24">, DwarfRegNum<101>;
-def V25 : VR<25, "v25">, DwarfRegNum<102>;
-def V26 : VR<26, "v26">, DwarfRegNum<103>;
-def V27 : VR<27, "v27">, DwarfRegNum<104>;
-def V28 : VR<28, "v28">, DwarfRegNum<105>;
-def V29 : VR<29, "v29">, DwarfRegNum<106>;
-def V30 : VR<30, "v30">, DwarfRegNum<107>;
-def V31 : VR<31, "v31">, DwarfRegNum<108>;
+def V0  : VR< 0,  "0">, DwarfRegNum<77>;
+def V1  : VR< 1,  "1">, DwarfRegNum<78>;
+def V2  : VR< 2,  "2">, DwarfRegNum<79>;
+def V3  : VR< 3,  "3">, DwarfRegNum<80>;
+def V4  : VR< 4,  "4">, DwarfRegNum<81>;
+def V5  : VR< 5,  "5">, DwarfRegNum<82>;
+def V6  : VR< 6,  "6">, DwarfRegNum<83>;
+def V7  : VR< 7,  "7">, DwarfRegNum<84>;
+def V8  : VR< 8,  "8">, DwarfRegNum<85>;
+def V9  : VR< 9,  "9">, DwarfRegNum<86>;
+def V10 : VR<10, "10">, DwarfRegNum<87>;
+def V11 : VR<11, "11">, DwarfRegNum<88>;
+def V12 : VR<12, "12">, DwarfRegNum<89>;
+def V13 : VR<13, "13">, DwarfRegNum<90>;
+def V14 : VR<14, "14">, DwarfRegNum<91>;
+def V15 : VR<15, "15">, DwarfRegNum<92>;
+def V16 : VR<16, "16">, DwarfRegNum<93>;
+def V17 : VR<17, "17">, DwarfRegNum<94>;
+def V18 : VR<18, "18">, DwarfRegNum<95>;
+def V19 : VR<19, "19">, DwarfRegNum<96>;
+def V20 : VR<20, "20">, DwarfRegNum<97>;
+def V21 : VR<21, "21">, DwarfRegNum<98>;
+def V22 : VR<22, "22">, DwarfRegNum<99>;
+def V23 : VR<23, "23">, DwarfRegNum<100>;
+def V24 : VR<24, "24">, DwarfRegNum<101>;
+def V25 : VR<25, "25">, DwarfRegNum<102>;
+def V26 : VR<26, "26">, DwarfRegNum<103>;
+def V27 : VR<27, "27">, DwarfRegNum<104>;
+def V28 : VR<28, "28">, DwarfRegNum<105>;
+def V29 : VR<29, "29">, DwarfRegNum<106>;
+def V30 : VR<30, "30">, DwarfRegNum<107>;
+def V31 : VR<31, "31">, DwarfRegNum<108>;
 
 // Condition registers
-def CR0 : CR<0, "cr0">, DwarfRegNum<68>;
-def CR1 : CR<1, "cr1">, DwarfRegNum<69>;
-def CR2 : CR<2, "cr2">, DwarfRegNum<70>;
-def CR3 : CR<3, "cr3">, DwarfRegNum<71>;
-def CR4 : CR<4, "cr4">, DwarfRegNum<72>;
-def CR5 : CR<5, "cr5">, DwarfRegNum<73>;
-def CR6 : CR<6, "cr6">, DwarfRegNum<74>;
-def CR7 : CR<7, "cr7">, DwarfRegNum<75>;
+def CR0 : CR<0, "0">, DwarfRegNum<68>;
+def CR1 : CR<1, "1">, DwarfRegNum<69>;
+def CR2 : CR<2, "2">, DwarfRegNum<70>;
+def CR3 : CR<3, "3">, DwarfRegNum<71>;
+def CR4 : CR<4, "4">, DwarfRegNum<72>;
+def CR5 : CR<5, "5">, DwarfRegNum<73>;
+def CR6 : CR<6, "6">, DwarfRegNum<74>;
+def CR7 : CR<7, "7">, DwarfRegNum<75>;
 
 // Link register
 def LR  : SPR<8, "lr">, DwarfRegNum<65>;
_______________________________________________
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits

Reply via email to