Skip to content

Commit b5ab7a9

Browse files
committed
PPC: Move definitions of predicates with features
The way this was previously structured does not allow access to the predicates inside of PPCRegisterInfo
1 parent bf51a4d commit b5ab7a9

File tree

2 files changed

+37
-36
lines changed

2 files changed

+37
-36
lines changed

llvm/lib/Target/PowerPC/PPC.td

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -353,6 +353,43 @@ def FeaturePredictableSelectIsExpensive :
353353
def FeatureFastMFLR : SubtargetFeature<"fast-MFLR", "HasFastMFLR", "true",
354354
"MFLR is a fast instruction">;
355355

356+
//===----------------------------------------------------------------------===//
357+
// PowerPC Instruction Predicate Definitions.
358+
def In32BitMode : Predicate<"!Subtarget->isPPC64()">;
359+
def In64BitMode : Predicate<"Subtarget->isPPC64()">;
360+
def IsBookE : Predicate<"Subtarget->isBookE()">;
361+
def IsNotBookE : Predicate<"!Subtarget->isBookE()">;
362+
def HasOnlyMSYNC : Predicate<"Subtarget->hasOnlyMSYNC()">;
363+
def HasSYNC : Predicate<"!Subtarget->hasOnlyMSYNC()">;
364+
def IsPPC4xx : Predicate<"Subtarget->isPPC4xx()">;
365+
def IsPPC6xx : Predicate<"Subtarget->isPPC6xx()">;
366+
def IsE500 : Predicate<"Subtarget->isE500()">;
367+
def HasSPE : Predicate<"Subtarget->hasSPE()">;
368+
def HasICBT : Predicate<"Subtarget->hasICBT()">;
369+
def HasPartwordAtomics : Predicate<"Subtarget->hasPartwordAtomics()">;
370+
def HasQuadwordAtomics : Predicate<"Subtarget->hasQuadwordAtomics()">;
371+
def NoNaNsFPMath
372+
: Predicate<"Subtarget->getTargetMachine().Options.NoNaNsFPMath">;
373+
def NaNsFPMath
374+
: Predicate<"!Subtarget->getTargetMachine().Options.NoNaNsFPMath">;
375+
def HasBPERMD : Predicate<"Subtarget->hasBPERMD()">;
376+
def HasExtDiv : Predicate<"Subtarget->hasExtDiv()">;
377+
def IsISA2_06 : Predicate<"Subtarget->isISA2_06()">;
378+
def IsISA2_07 : Predicate<"Subtarget->isISA2_07()">;
379+
def IsISA3_0 : Predicate<"Subtarget->isISA3_0()">;
380+
def HasFPU : Predicate<"Subtarget->hasFPU()">;
381+
def PCRelativeMemops : Predicate<"Subtarget->hasPCRelativeMemops()">;
382+
def IsNotISA3_1 : Predicate<"!Subtarget->isISA3_1()">;
383+
384+
// AIX assembler may not be modern enough to support some extended mne.
385+
def ModernAs: Predicate<"!Subtarget->isAIXABI() || Subtarget->HasModernAIXAs">,
386+
AssemblerPredicate<(any_of (not AIXOS), FeatureModernAIXAs)>;
387+
def IsAIX : Predicate<"Subtarget->isAIXABI()">;
388+
def NotAIX : Predicate<"!Subtarget->isAIXABI()">;
389+
def IsISAFuture : Predicate<"Subtarget->isISAFuture()">;
390+
def IsNotISAFuture : Predicate<"!Subtarget->isISAFuture()">;
391+
392+
356393
// Since new processors generally contain a superset of features of those that
357394
// came before them, the idea is to make implementations of new processors
358395
// less error prone and easier to read.

llvm/lib/Target/PowerPC/PPCInstrInfo.td

Lines changed: 0 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -713,42 +713,6 @@ let WantsParent = true in {
713713
def PDForm : ComplexPattern<iPTR, 2, "SelectPDForm">;
714714
}
715715

716-
//===----------------------------------------------------------------------===//
717-
// PowerPC Instruction Predicate Definitions.
718-
def In32BitMode : Predicate<"!Subtarget->isPPC64()">;
719-
def In64BitMode : Predicate<"Subtarget->isPPC64()">;
720-
def IsBookE : Predicate<"Subtarget->isBookE()">;
721-
def IsNotBookE : Predicate<"!Subtarget->isBookE()">;
722-
def HasOnlyMSYNC : Predicate<"Subtarget->hasOnlyMSYNC()">;
723-
def HasSYNC : Predicate<"!Subtarget->hasOnlyMSYNC()">;
724-
def IsPPC4xx : Predicate<"Subtarget->isPPC4xx()">;
725-
def IsPPC6xx : Predicate<"Subtarget->isPPC6xx()">;
726-
def IsE500 : Predicate<"Subtarget->isE500()">;
727-
def HasSPE : Predicate<"Subtarget->hasSPE()">;
728-
def HasICBT : Predicate<"Subtarget->hasICBT()">;
729-
def HasPartwordAtomics : Predicate<"Subtarget->hasPartwordAtomics()">;
730-
def HasQuadwordAtomics : Predicate<"Subtarget->hasQuadwordAtomics()">;
731-
def NoNaNsFPMath
732-
: Predicate<"Subtarget->getTargetMachine().Options.NoNaNsFPMath">;
733-
def NaNsFPMath
734-
: Predicate<"!Subtarget->getTargetMachine().Options.NoNaNsFPMath">;
735-
def HasBPERMD : Predicate<"Subtarget->hasBPERMD()">;
736-
def HasExtDiv : Predicate<"Subtarget->hasExtDiv()">;
737-
def IsISA2_06 : Predicate<"Subtarget->isISA2_06()">;
738-
def IsISA2_07 : Predicate<"Subtarget->isISA2_07()">;
739-
def IsISA3_0 : Predicate<"Subtarget->isISA3_0()">;
740-
def HasFPU : Predicate<"Subtarget->hasFPU()">;
741-
def PCRelativeMemops : Predicate<"Subtarget->hasPCRelativeMemops()">;
742-
def IsNotISA3_1 : Predicate<"!Subtarget->isISA3_1()">;
743-
744-
// AIX assembler may not be modern enough to support some extended mne.
745-
def ModernAs: Predicate<"!Subtarget->isAIXABI() || Subtarget->HasModernAIXAs">,
746-
AssemblerPredicate<(any_of (not AIXOS), FeatureModernAIXAs)>;
747-
def IsAIX : Predicate<"Subtarget->isAIXABI()">;
748-
def NotAIX : Predicate<"!Subtarget->isAIXABI()">;
749-
def IsISAFuture : Predicate<"Subtarget->isISAFuture()">;
750-
def IsNotISAFuture : Predicate<"!Subtarget->isISAFuture()">;
751-
752716
//===----------------------------------------------------------------------===//
753717
// PowerPC Multiclass Definitions.
754718
multiclass XForm_base_r3xo_r<bits<6> opcode, bits<10> xo, dag OOL, dag IOL,

0 commit comments

Comments
 (0)