mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-24 08:33:39 +00:00
add ppc64/pwr8 as target
includes handling DIR_PWR8 where appropriate The P7Model Itinerary is currently tied in for use under the P8Model, and will be updated later. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211779 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
7eacf4e813
commit
eb3092083f
@ -46,6 +46,7 @@ def DirectivePwr5x: SubtargetFeature<"", "DarwinDirective", "PPC::DIR_PWR5X", ""
|
||||
def DirectivePwr6: SubtargetFeature<"", "DarwinDirective", "PPC::DIR_PWR6", "">;
|
||||
def DirectivePwr6x: SubtargetFeature<"", "DarwinDirective", "PPC::DIR_PWR6X", "">;
|
||||
def DirectivePwr7: SubtargetFeature<"", "DarwinDirective", "PPC::DIR_PWR7", "">;
|
||||
def DirectivePwr8: SubtargetFeature<"", "DarwinDirective", "PPC::DIR_PWR8", "">;
|
||||
|
||||
def Feature64Bit : SubtargetFeature<"64bit","Has64BitSupport", "true",
|
||||
"Enable 64-bit instructions">;
|
||||
@ -285,6 +286,15 @@ def : ProcessorModel<"pwr7", P7Model,
|
||||
FeaturePOPCNTD, FeatureLDBRX,
|
||||
Feature64Bit /*, Feature64BitRegs */,
|
||||
DeprecatedMFTB, DeprecatedDST]>;
|
||||
def : ProcessorModel<"pwr8", P7Model /* FIXME: Update to P8Model when available */,
|
||||
[DirectivePwr8, FeatureAltivec,
|
||||
FeatureMFOCRF, FeatureFCPSGN, FeatureFSqrt, FeatureFRE,
|
||||
FeatureFRES, FeatureFRSQRTE, FeatureFRSQRTES,
|
||||
FeatureRecipPrec, FeatureSTFIWX, FeatureLFIWAX,
|
||||
FeatureFPRND, FeatureFPCVT, FeatureISEL,
|
||||
FeaturePOPCNTD, FeatureLDBRX,
|
||||
Feature64Bit /*, Feature64BitRegs */,
|
||||
DeprecatedMFTB, DeprecatedDST]>;
|
||||
def : Processor<"ppc", G3Itineraries, [Directive32]>;
|
||||
def : ProcessorModel<"ppc64", G5Model,
|
||||
[Directive64, FeatureAltivec,
|
||||
|
@ -162,7 +162,8 @@ unsigned PPCDispatchGroupSBHazardRecognizer::PreEmitNoops(SUnit *SU) {
|
||||
unsigned Directive =
|
||||
DAG->TM.getSubtarget<PPCSubtarget>().getDarwinDirective();
|
||||
// If we're using a special group-terminating nop, then we need only one.
|
||||
if (Directive == PPC::DIR_PWR6 || Directive == PPC::DIR_PWR7)
|
||||
if (Directive == PPC::DIR_PWR6 || Directive == PPC::DIR_PWR7 ||
|
||||
Directive == PPC::DIR_PWR8 )
|
||||
return 1;
|
||||
|
||||
return 5 - CurSlots;
|
||||
@ -223,7 +224,7 @@ void PPCDispatchGroupSBHazardRecognizer::EmitNoop() {
|
||||
// If the group has now filled all of its slots, or if we're using a special
|
||||
// group-terminating nop, the group is complete.
|
||||
if (Directive == PPC::DIR_PWR6 || Directive == PPC::DIR_PWR7 ||
|
||||
CurSlots == 6) {
|
||||
Directive == PPC::DIR_PWR8 || CurSlots == 6) {
|
||||
CurGroup.clear();
|
||||
CurSlots = CurBranches = 0;
|
||||
} else {
|
||||
|
@ -90,7 +90,7 @@ ScheduleHazardRecognizer *PPCInstrInfo::CreateTargetPostRAHazardRecognizer(
|
||||
unsigned Directive =
|
||||
DAG->TM.getSubtarget<PPCSubtarget>().getDarwinDirective();
|
||||
|
||||
if (Directive == PPC::DIR_PWR7)
|
||||
if (Directive == PPC::DIR_PWR7 || Directive == PPC::DIR_PWR8)
|
||||
return new PPCDispatchGroupSBHazardRecognizer(II, DAG);
|
||||
|
||||
// Most subtargets use a PPC970 recognizer.
|
||||
@ -146,6 +146,7 @@ int PPCInstrInfo::getOperandLatency(const InstrItineraryData *ItinData,
|
||||
case PPC::DIR_PWR6:
|
||||
case PPC::DIR_PWR6X:
|
||||
case PPC::DIR_PWR7:
|
||||
case PPC::DIR_PWR8:
|
||||
Latency += 2;
|
||||
break;
|
||||
}
|
||||
@ -323,6 +324,7 @@ void PPCInstrInfo::insertNoop(MachineBasicBlock &MBB,
|
||||
default: Opcode = PPC::NOP; break;
|
||||
case PPC::DIR_PWR6: Opcode = PPC::NOP_GT_PWR6; break;
|
||||
case PPC::DIR_PWR7: Opcode = PPC::NOP_GT_PWR7; break;
|
||||
case PPC::DIR_PWR8: Opcode = PPC::NOP_GT_PWR7; break; /* FIXME: Update when P8 InstrScheduling model is ready */
|
||||
}
|
||||
|
||||
DebugLoc DL;
|
||||
|
@ -247,6 +247,7 @@ static bool needsAggressiveScheduling(unsigned Directive) {
|
||||
case PPC::DIR_E500mc:
|
||||
case PPC::DIR_E5500:
|
||||
case PPC::DIR_PWR7:
|
||||
case PPC::DIR_PWR8:
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -56,6 +56,7 @@ namespace PPC {
|
||||
DIR_PWR6,
|
||||
DIR_PWR6X,
|
||||
DIR_PWR7,
|
||||
DIR_PWR8,
|
||||
DIR_64
|
||||
};
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user