forked from OSchip/llvm-project
Add support for m[ft][di]bat[ul] instructions.
llvm-svn: 214731
This commit is contained in:
parent
5d153e3133
commit
7405210418
|
@ -92,6 +92,8 @@ def FeatureE500 : SubtargetFeature<"E500", "IsE500", "true",
|
|||
"Enable E500/E500mc instructions">;
|
||||
def FeaturePPC4xx : SubtargetFeature<"ppc4xx", "IsPPC4xx", "true",
|
||||
"Enable PPC 4xx instructions">;
|
||||
def FeaturePPC6xx : SubtargetFeature<"ppc6xx", "IsPPC6xx", "true",
|
||||
"Enable PPC 6xx instructions">;
|
||||
def FeatureQPX : SubtargetFeature<"qpx","HasQPX", "true",
|
||||
"Enable QPX instructions">;
|
||||
def FeatureVSX : SubtargetFeature<"vsx","HasVSX", "true",
|
||||
|
|
|
@ -630,6 +630,7 @@ def In64BitMode : Predicate<"PPCSubTarget->isPPC64()">;
|
|||
def IsBookE : Predicate<"PPCSubTarget->isBookE()">;
|
||||
def IsNotBookE : Predicate<"!PPCSubTarget->isBookE()">;
|
||||
def IsPPC4xx : Predicate<"PPCSubTarget->isPPC4xx()">;
|
||||
def IsPPC6xx : Predicate<"PPCSubTarget->isPPC6xx()">;
|
||||
def IsE500 : Predicate<"PPCSubTarget->isE500()">;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
@ -3219,6 +3220,33 @@ def : InstAlias<"not. $rA, $rB", (NOR8o g8rc:$rA, g8rc:$rB, g8rc:$rB)>;
|
|||
|
||||
def : InstAlias<"mtcr $rA", (MTCRF8 255, g8rc:$rA)>;
|
||||
|
||||
foreach BATR = 0-3 in {
|
||||
def : InstAlias<"mtdbatu "#BATR#", $Rx",
|
||||
(MTSPR !add(BATR, !add(BATR, 536)), gprc:$Rx)>,
|
||||
Requires<[IsPPC6xx]>;
|
||||
def : InstAlias<"mfdbatu $Rx, "#BATR,
|
||||
(MFSPR gprc:$Rx, !add(BATR, !add(BATR, 536)))>,
|
||||
Requires<[IsPPC6xx]>;
|
||||
def : InstAlias<"mtdbatl "#BATR#", $Rx",
|
||||
(MTSPR !add(BATR, !add(BATR, 537)), gprc:$Rx)>,
|
||||
Requires<[IsPPC6xx]>;
|
||||
def : InstAlias<"mfdbatl $Rx, "#BATR,
|
||||
(MFSPR gprc:$Rx, !add(BATR, !add(BATR, 537)))>,
|
||||
Requires<[IsPPC6xx]>;
|
||||
def : InstAlias<"mtibatu "#BATR#", $Rx",
|
||||
(MTSPR !add(BATR, !add(BATR, 528)), gprc:$Rx)>,
|
||||
Requires<[IsPPC6xx]>;
|
||||
def : InstAlias<"mfibatu $Rx, "#BATR,
|
||||
(MFSPR gprc:$Rx, !add(BATR, !add(BATR, 528)))>,
|
||||
Requires<[IsPPC6xx]>;
|
||||
def : InstAlias<"mtibatl "#BATR#", $Rx",
|
||||
(MTSPR !add(BATR, !add(BATR, 529)), gprc:$Rx)>,
|
||||
Requires<[IsPPC6xx]>;
|
||||
def : InstAlias<"mfibatl $Rx, "#BATR,
|
||||
(MFSPR gprc:$Rx, !add(BATR, !add(BATR, 529)))>,
|
||||
Requires<[IsPPC6xx]>;
|
||||
}
|
||||
|
||||
def LAx : PPCAsmPseudo<"la $rA, $addr", (ins gprc:$rA, memri:$addr)>;
|
||||
|
||||
def SUBI : PPCAsmPseudo<"subi $rA, $rB, $imm",
|
||||
|
|
|
@ -137,6 +137,7 @@ void PPCSubtarget::initializeEnvironment() {
|
|||
HasLDBRX = false;
|
||||
IsBookE = false;
|
||||
IsPPC4xx = false;
|
||||
IsPPC6xx = false;
|
||||
IsE500 = false;
|
||||
DeprecatedMFTB = false;
|
||||
DeprecatedDST = false;
|
||||
|
|
|
@ -99,6 +99,7 @@ protected:
|
|||
bool IsBookE;
|
||||
bool IsE500;
|
||||
bool IsPPC4xx;
|
||||
bool IsPPC6xx;
|
||||
bool DeprecatedMFTB;
|
||||
bool DeprecatedDST;
|
||||
bool HasLazyResolverStubs;
|
||||
|
@ -221,6 +222,7 @@ public:
|
|||
bool hasLDBRX() const { return HasLDBRX; }
|
||||
bool isBookE() const { return IsBookE; }
|
||||
bool isPPC4xx() const { return IsPPC4xx; }
|
||||
bool isPPC6xx() const { return IsPPC6xx; }
|
||||
bool isE500() const { return IsE500; }
|
||||
bool isDeprecatedMFTB() const { return DeprecatedMFTB; }
|
||||
bool isDeprecatedDST() const { return DeprecatedDST; }
|
||||
|
|
|
@ -0,0 +1,102 @@
|
|||
# RUN: llvm-mc -triple powerpc64-unknown-unknown --show-encoding %s | FileCheck -check-prefix=CHECK-BE %s
|
||||
# RUN: llvm-mc -triple powerpc64le-unknown-unknown --show-encoding %s | FileCheck -check-prefix=CHECK-LE %s
|
||||
|
||||
# Instructions specific to the PowerPC 6xx family:
|
||||
|
||||
# CHECK-BE: mfspr 12, 528 # encoding: [0x7d,0x90,0x82,0xa6]
|
||||
# CHECK-LE: mfspr 12, 528 # encoding: [0xa6,0x82,0x90,0x7d]
|
||||
mfibatu %r12, 0
|
||||
# CHECK-BE: mfspr 12, 529 # encoding: [0x7d,0x91,0x82,0xa6]
|
||||
# CHECK-LE: mfspr 12, 529 # encoding: [0xa6,0x82,0x91,0x7d]
|
||||
mfibatl %r12, 0
|
||||
# CHECK-BE: mfspr 12, 530 # encoding: [0x7d,0x92,0x82,0xa6]
|
||||
# CHECK-LE: mfspr 12, 530 # encoding: [0xa6,0x82,0x92,0x7d]
|
||||
mfibatu %r12, 1
|
||||
# CHECK-BE: mfspr 12, 531 # encoding: [0x7d,0x93,0x82,0xa6]
|
||||
# CHECK-LE: mfspr 12, 531 # encoding: [0xa6,0x82,0x93,0x7d]
|
||||
mfibatl %r12, 1
|
||||
# CHECK-BE: mfspr 12, 532 # encoding: [0x7d,0x94,0x82,0xa6]
|
||||
# CHECK-LE: mfspr 12, 532 # encoding: [0xa6,0x82,0x94,0x7d]
|
||||
mfibatu %r12, 2
|
||||
# CHECK-BE: mfspr 12, 533 # encoding: [0x7d,0x95,0x82,0xa6]
|
||||
# CHECK-LE: mfspr 12, 533 # encoding: [0xa6,0x82,0x95,0x7d]
|
||||
mfibatl %r12, 2
|
||||
# CHECK-BE: mfspr 12, 534 # encoding: [0x7d,0x96,0x82,0xa6]
|
||||
# CHECK-LE: mfspr 12, 534 # encoding: [0xa6,0x82,0x96,0x7d]
|
||||
mfibatu %r12, 3
|
||||
# CHECK-BE: mfspr 12, 535 # encoding: [0x7d,0x97,0x82,0xa6]
|
||||
# CHECK-LE: mfspr 12, 535 # encoding: [0xa6,0x82,0x97,0x7d]
|
||||
mfibatl %r12, 3
|
||||
# CHECK-BE: mtspr 528, 12 # encoding: [0x7d,0x90,0x83,0xa6]
|
||||
# CHECK-LE: mtspr 528, 12 # encoding: [0xa6,0x83,0x90,0x7d]
|
||||
mtibatu 0, %r12
|
||||
# CHECK-BE: mtspr 529, 12 # encoding: [0x7d,0x91,0x83,0xa6]
|
||||
# CHECK-LE: mtspr 529, 12 # encoding: [0xa6,0x83,0x91,0x7d]
|
||||
mtibatl 0, %r12
|
||||
# CHECK-BE: mtspr 530, 12 # encoding: [0x7d,0x92,0x83,0xa6]
|
||||
# CHECK-LE: mtspr 530, 12 # encoding: [0xa6,0x83,0x92,0x7d]
|
||||
mtibatu 1, %r12
|
||||
# CHECK-BE: mtspr 531, 12 # encoding: [0x7d,0x93,0x83,0xa6]
|
||||
# CHECK-LE: mtspr 531, 12 # encoding: [0xa6,0x83,0x93,0x7d]
|
||||
mtibatl 1, %r12
|
||||
# CHECK-BE: mtspr 532, 12 # encoding: [0x7d,0x94,0x83,0xa6]
|
||||
# CHECK-LE: mtspr 532, 12 # encoding: [0xa6,0x83,0x94,0x7d]
|
||||
mtibatu 2, %r12
|
||||
# CHECK-BE: mtspr 533, 12 # encoding: [0x7d,0x95,0x83,0xa6]
|
||||
# CHECK-LE: mtspr 533, 12 # encoding: [0xa6,0x83,0x95,0x7d]
|
||||
mtibatl 2, %r12
|
||||
# CHECK-BE: mtspr 534, 12 # encoding: [0x7d,0x96,0x83,0xa6]
|
||||
# CHECK-LE: mtspr 534, 12 # encoding: [0xa6,0x83,0x96,0x7d]
|
||||
mtibatu 3, %r12
|
||||
# CHECK-BE: mtspr 535, 12 # encoding: [0x7d,0x97,0x83,0xa6]
|
||||
# CHECK-LE: mtspr 535, 12 # encoding: [0xa6,0x83,0x97,0x7d]
|
||||
mtibatl 3, %r12
|
||||
|
||||
# CHECK-BE: mfspr 12, 536 # encoding: [0x7d,0x98,0x82,0xa6]
|
||||
# CHECK-LE: mfspr 12, 536 # encoding: [0xa6,0x82,0x98,0x7d]
|
||||
mfdbatu %r12, 0
|
||||
# CHECK-BE: mfspr 12, 537 # encoding: [0x7d,0x99,0x82,0xa6]
|
||||
# CHECK-LE: mfspr 12, 537 # encoding: [0xa6,0x82,0x99,0x7d]
|
||||
mfdbatl %r12, 0
|
||||
# CHECK-BE: mfspr 12, 538 # encoding: [0x7d,0x9a,0x82,0xa6]
|
||||
# CHECK-LE: mfspr 12, 538 # encoding: [0xa6,0x82,0x9a,0x7d]
|
||||
mfdbatu %r12, 1
|
||||
# CHECK-BE: mfspr 12, 539 # encoding: [0x7d,0x9b,0x82,0xa6]
|
||||
# CHECK-LE: mfspr 12, 539 # encoding: [0xa6,0x82,0x9b,0x7d]
|
||||
mfdbatl %r12, 1
|
||||
# CHECK-BE: mfspr 12, 540 # encoding: [0x7d,0x9c,0x82,0xa6]
|
||||
# CHECK-LE: mfspr 12, 540 # encoding: [0xa6,0x82,0x9c,0x7d]
|
||||
mfdbatu %r12, 2
|
||||
# CHECK-BE: mfspr 12, 541 # encoding: [0x7d,0x9d,0x82,0xa6]
|
||||
# CHECK-LE: mfspr 12, 541 # encoding: [0xa6,0x82,0x9d,0x7d]
|
||||
mfdbatl %r12, 2
|
||||
# CHECK-BE: mfspr 12, 542 # encoding: [0x7d,0x9e,0x82,0xa6]
|
||||
# CHECK-LE: mfspr 12, 542 # encoding: [0xa6,0x82,0x9e,0x7d]
|
||||
mfdbatu %r12, 3
|
||||
# CHECK-BE: mfspr 12, 543 # encoding: [0x7d,0x9f,0x82,0xa6]
|
||||
# CHECK-LE: mfspr 12, 543 # encoding: [0xa6,0x82,0x9f,0x7d]
|
||||
mfdbatl %r12, 3
|
||||
# CHECK-BE: mtspr 536, 12 # encoding: [0x7d,0x98,0x83,0xa6]
|
||||
# CHECK-LE: mtspr 536, 12 # encoding: [0xa6,0x83,0x98,0x7d]
|
||||
mtdbatu 0, %r12
|
||||
# CHECK-BE: mtspr 537, 12 # encoding: [0x7d,0x99,0x83,0xa6]
|
||||
# CHECK-LE: mtspr 537, 12 # encoding: [0xa6,0x83,0x99,0x7d]
|
||||
mtdbatl 0, %r12
|
||||
# CHECK-BE: mtspr 538, 12 # encoding: [0x7d,0x9a,0x83,0xa6]
|
||||
# CHECK-LE: mtspr 538, 12 # encoding: [0xa6,0x83,0x9a,0x7d]
|
||||
mtdbatu 1, %r12
|
||||
# CHECK-BE: mtspr 539, 12 # encoding: [0x7d,0x9b,0x83,0xa6]
|
||||
# CHECK-LE: mtspr 539, 12 # encoding: [0xa6,0x83,0x9b,0x7d]
|
||||
mtdbatl 1, %r12
|
||||
# CHECK-BE: mtspr 540, 12 # encoding: [0x7d,0x9c,0x83,0xa6]
|
||||
# CHECK-LE: mtspr 540, 12 # encoding: [0xa6,0x83,0x9c,0x7d]
|
||||
mtdbatu 2, %r12
|
||||
# CHECK-BE: mtspr 541, 12 # encoding: [0x7d,0x9d,0x83,0xa6]
|
||||
# CHECK-LE: mtspr 541, 12 # encoding: [0xa6,0x83,0x9d,0x7d]
|
||||
mtdbatl 2, %r12
|
||||
# CHECK-BE: mtspr 542, 12 # encoding: [0x7d,0x9e,0x83,0xa6]
|
||||
# CHECK-LE: mtspr 542, 12 # encoding: [0xa6,0x83,0x9e,0x7d]
|
||||
mtdbatu 3, %r12
|
||||
# CHECK-BE: mtspr 543, 12 # encoding: [0x7d,0x9f,0x83,0xa6]
|
||||
# CHECK-LE: mtspr 543, 12 # encoding: [0xa6,0x83,0x9f,0x7d]
|
||||
mtdbatl 3, %r12
|
Loading…
Reference in New Issue