c4c1c28548
Pull in r211627 from upstream llvm trunk (by Bill Schmidt): [PPC64] Fix PR20071 (fctiduz generated for targets lacking that instruction) PR20071 identifies a problem in PowerPC's fast-isel implementation for floating-point conversion to integer. The fctiduz instruction was added in Power ISA 2.06 (i.e., Power7 and later). However, this instruction is being generated regardless of which 64-bit PowerPC target is selected. The intent is for fast-isel to punt to DAG selection when this instruction is not available. This patch implements that change. For testing purposes, the existing fast-isel-conversion.ll test adds a RUN line for -mcpu=970 and tests for the expected code generation. Additionally, the existing test fast-isel-conversion-p5.ll was found to be incorrectly expecting the unavailable instruction to be generated. I've removed these test variants since we have adequate coverage in fast-isel-conversion.ll. This is needed to compile clang with debug+asserts on older powerpc64 and ppc970 targets. Requested by: jhibbits MFC r267982: Add the llvm patch for r267981. MFC r268003: Fix breakage after r267981. Pointy hat to: dim |
||
---|---|---|
.. | ||
AsmParser | ||
InstPrinter | ||
MCTargetDesc | ||
TargetInfo | ||
PPC.h | ||
PPC.td | ||
PPCAsmPrinter.cpp | ||
PPCBranchSelector.cpp | ||
PPCCallingConv.td | ||
PPCCodeEmitter.cpp | ||
PPCCTRLoops.cpp | ||
PPCFastISel.cpp | ||
PPCFrameLowering.cpp | ||
PPCFrameLowering.h | ||
PPCHazardRecognizers.cpp | ||
PPCHazardRecognizers.h | ||
PPCInstr64Bit.td | ||
PPCInstrAltivec.td | ||
PPCInstrBuilder.h | ||
PPCInstrFormats.td | ||
PPCInstrInfo.cpp | ||
PPCInstrInfo.h | ||
PPCInstrInfo.td | ||
PPCISelDAGToDAG.cpp | ||
PPCISelLowering.cpp | ||
PPCISelLowering.h | ||
PPCJITInfo.cpp | ||
PPCJITInfo.h | ||
PPCMachineFunctionInfo.cpp | ||
PPCMachineFunctionInfo.h | ||
PPCMCInstLower.cpp | ||
PPCPerfectShuffle.h | ||
PPCRegisterInfo.cpp | ||
PPCRegisterInfo.h | ||
PPCRegisterInfo.td | ||
PPCRelocations.h | ||
PPCSchedule440.td | ||
PPCSchedule.td | ||
PPCScheduleA2.td | ||
PPCScheduleE500mc.td | ||
PPCScheduleE5500.td | ||
PPCScheduleG3.td | ||
PPCScheduleG4.td | ||
PPCScheduleG4Plus.td | ||
PPCScheduleG5.td | ||
PPCSelectionDAGInfo.cpp | ||
PPCSelectionDAGInfo.h | ||
PPCSubtarget.cpp | ||
PPCSubtarget.h | ||
PPCTargetMachine.cpp | ||
PPCTargetMachine.h | ||
PPCTargetObjectFile.cpp | ||
PPCTargetObjectFile.h | ||
PPCTargetStreamer.h | ||
PPCTargetTransformInfo.cpp |