diff options
Diffstat (limited to 'llvm/lib/CodeGen')
| -rw-r--r-- | llvm/lib/CodeGen/InitUndef.cpp | 1 | ||||
| -rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/InstrEmitter.cpp | 10 | ||||
| -rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp | 16 |
3 files changed, 9 insertions, 18 deletions
diff --git a/llvm/lib/CodeGen/InitUndef.cpp b/llvm/lib/CodeGen/InitUndef.cpp index d6f7c0d7cf0f..a89c823416c5 100644 --- a/llvm/lib/CodeGen/InitUndef.cpp +++ b/llvm/lib/CodeGen/InitUndef.cpp @@ -272,6 +272,7 @@ bool InitUndef::runOnMachineFunction(MachineFunction &MF) { for (auto *DeadMI : DeadInsts) DeadMI->eraseFromParent(); DeadInsts.clear(); + NewRegs.clear(); return Changed; } diff --git a/llvm/lib/CodeGen/SelectionDAG/InstrEmitter.cpp b/llvm/lib/CodeGen/SelectionDAG/InstrEmitter.cpp index db33d5242601..53ce21906204 100644 --- a/llvm/lib/CodeGen/SelectionDAG/InstrEmitter.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/InstrEmitter.cpp @@ -635,7 +635,7 @@ void InstrEmitter::EmitSubregNode(SDNode *Node, void InstrEmitter::EmitCopyToRegClassNode(SDNode *Node, DenseMap<SDValue, Register> &VRBaseMap) { - unsigned VReg = getVR(Node->getOperand(0), VRBaseMap); + Register VReg = getVR(Node->getOperand(0), VRBaseMap); // Create the new VReg in the destination class and emit a copy. unsigned DstRCIdx = Node->getConstantOperandVal(1); @@ -678,7 +678,7 @@ void InstrEmitter::EmitRegSequence(SDNode *Node, // insert copies for them in TwoAddressInstructionPass anyway. if (!R || !R->getReg().isPhysical()) { unsigned SubIdx = Op->getAsZExtVal(); - unsigned SubReg = getVR(Node->getOperand(i-1), VRBaseMap); + Register SubReg = getVR(Node->getOperand(i - 1), VRBaseMap); const TargetRegisterClass *TRC = MRI->getRegClass(SubReg); const TargetRegisterClass *SRC = TRI->getMatchingSuperRegClass(RC, TRC, SubIdx); @@ -1274,7 +1274,7 @@ EmitSpecialNode(SDNode *Node, bool IsClone, bool IsCloned, break; } case ISD::CopyFromReg: { - unsigned SrcReg = cast<RegisterSDNode>(Node->getOperand(1))->getReg(); + Register SrcReg = cast<RegisterSDNode>(Node->getOperand(1))->getReg(); EmitCopyFromReg(Node, 0, IsClone, SrcReg, VRBaseMap); break; } @@ -1343,7 +1343,7 @@ EmitSpecialNode(SDNode *Node, bool IsClone, bool IsCloned, SmallVector<unsigned, 8> GroupIdx; // Remember registers that are part of early-clobber defs. - SmallVector<unsigned, 8> ECRegs; + SmallVector<Register, 8> ECRegs; // Add all of the operand registers to the instruction. for (unsigned i = InlineAsm::Op_FirstOperand; i != NumOps;) { @@ -1424,7 +1424,7 @@ EmitSpecialNode(SDNode *Node, bool IsClone, bool IsCloned, // used), but this does not match the semantics of our early-clobber flag. // If an early-clobber operand register is also an input operand register, // then remove the early-clobber flag. - for (unsigned Reg : ECRegs) { + for (Register Reg : ECRegs) { if (MIB->readsRegister(Reg, TRI)) { MachineOperand *MO = MIB->findRegisterDefOperand(Reg, TRI, false, false); diff --git a/llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp b/llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp index 2fa9e46eae50..c622b2abedea 100644 --- a/llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp @@ -3952,19 +3952,9 @@ void DAGTypeLegalizer::ExpandIntRes_FP_TO_XINT(SDNode *N, SDValue &Lo, if (getTypeAction(Op.getValueType()) == TargetLowering::TypePromoteFloat) Op = GetPromotedFloat(Op); - if (getTypeAction(Op.getValueType()) == TargetLowering::TypeSoftPromoteHalf) { - EVT OFPVT = Op.getValueType(); - EVT NFPVT = TLI.getTypeToTransformTo(*DAG.getContext(), OFPVT); - Op = GetSoftPromotedHalf(Op); - Op = DAG.getNode(OFPVT == MVT::f16 ? ISD::FP16_TO_FP : ISD::BF16_TO_FP, dl, - NFPVT, Op); - Op = DAG.getNode(IsSigned ? ISD::FP_TO_SINT : ISD::FP_TO_UINT, dl, VT, Op); - SplitInteger(Op, Lo, Hi); - return; - } - - if (Op.getValueType() == MVT::bf16) { - // Extend to f32 as there is no bf16 libcall. + // If the input is bf16 or needs to be soft promoted, extend to f32. + if (getTypeAction(Op.getValueType()) == TargetLowering::TypeSoftPromoteHalf || + Op.getValueType() == MVT::bf16) { Op = fpExtendHelper(Op, Chain, IsStrict, MVT::f32, dl, DAG); } |
