[PowerPC] Support register name prefixes for vector registers
authorHal Finkel <hfinkel@anl.gov>
Thu, 23 Apr 2015 23:16:22 +0000 (23:16 +0000)
committerHal Finkel <hfinkel@anl.gov>
Thu, 23 Apr 2015 23:16:22 +0000 (23:16 +0000)
Match binutils by supporting the optional register name prefix for new vector
registers ("vs" for VSX registers and "q" for QPX registers).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@235665 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/PowerPC/AsmParser/PPCAsmParser.cpp
test/MC/PowerPC/qpx.s
test/MC/PowerPC/vsx.s

index 9492e1d3f6606170e8a2c05d760c34618f2cb968..b6f10e61079432049821a5941e38839c5f0e0962 100644 (file)
@@ -1219,10 +1219,18 @@ MatchRegisterName(const AsmToken &Tok, unsigned &RegNo, int64_t &IntVal) {
                !Name.substr(1).getAsInteger(10, IntVal) && IntVal < 32) {
       RegNo = FRegs[IntVal];
       return false;
+    } else if (Name.startswith_lower("vs") &&
+               !Name.substr(2).getAsInteger(10, IntVal) && IntVal < 64) {
+      RegNo = VSRegs[IntVal];
+      return false;
     } else if (Name.startswith_lower("v") &&
                !Name.substr(1).getAsInteger(10, IntVal) && IntVal < 32) {
       RegNo = VRegs[IntVal];
       return false;
+    } else if (Name.startswith_lower("q") &&
+               !Name.substr(1).getAsInteger(10, IntVal) && IntVal < 32) {
+      RegNo = QFRegs[IntVal];
+      return false;
     } else if (Name.startswith_lower("cr") &&
                !Name.substr(2).getAsInteger(10, IntVal) && IntVal < 8) {
       RegNo = CRRegs[IntVal];
index 0ada78b1b038cf676a9d32294b5c0c347e63d5f9..a1fb2090f8fff569c51ed04d9b2a50dd643bffdc 100644 (file)
@@ -1,6 +1,7 @@
 # RUN: llvm-mc -triple powerpc64-bgq-linux --show-encoding %s | FileCheck %s
 
-# FIXME: print qvflogical aliases.
+# CHECK: qvfabs 3, 5                     # encoding: [0x10,0x60,0x2a,0x10]
+         qvfabs %q3, %q5
 
 # CHECK: qvfabs 3, 5                     # encoding: [0x10,0x60,0x2a,0x10]
          qvfabs 3, 5
index f0b82c661893e3180a9375587d63c3b92a903358..f723a3ebc1a50c161a439baf55e63cb7a0258a08 100644 (file)
@@ -1,6 +1,10 @@
 # RUN: llvm-mc -triple powerpc64-unknown-linux-gnu --show-encoding %s | FileCheck -check-prefix=CHECK-BE %s
 # RUN: llvm-mc -triple powerpc64le-unknown-linux-gnu --show-encoding %s | FileCheck -check-prefix=CHECK-LE %s
 
+# CHECK-BE: xxswapd 7, 63                      # encoding: [0xf0,0xff,0xfa,0x56]
+# CHECK-LE: xxswapd 7, 63                      # encoding: [0x56,0xfa,0xff,0xf0]
+            xxswapd %vs7, %vs63
+
 # CHECK-BE: lxsdx 39, 5, 31                     # encoding: [0x7c,0xe5,0xfc,0x99]
 # CHECK-LE: lxsdx 39, 5, 31                     # encoding: [0x99,0xfc,0xe5,0x7c]
             lxsdx 39, 5, 31