LLVM API Documentation
#include <PIC16ISelLowering.h>
Definition at line 68 of file PIC16ISelLowering.h.
| PIC16TargetLowering::PIC16TargetLowering | ( | PIC16TargetMachine & | TM | ) | [explicit] |
Definition at line 33 of file PIC16ISelLowering.cpp.
References llvm::ISD::ADD, llvm::ISD::ADDC, llvm::ISD::ADDE, llvm::TargetLowering::addRegisterClass(), llvm::ISD::AND, llvm::ISD::BR_CC, llvm::ISD::BRCOND, llvm::ISD::BRIND, llvm::ISD::CALL, llvm::TargetLowering::computeRegisterProperties(), llvm::TargetLowering::Custom, llvm::TargetLowering::Expand, llvm::TargetLowering::Extend, llvm::ISD::ExternalSymbol, llvm::ISD::FrameIndex, llvm::TargetMachine::getSubtarget(), llvm::ISD::GlobalAddress, llvm::MVT::i16, llvm::MVT::i32, llvm::MVT::i8, llvm::TargetLowering::Legal, llvm::ISD::LOAD, llvm::ISD::MUL, llvm::RTLIB::MUL_I16, llvm::RTLIB::MUL_I32, llvm::PIC16ISD::MUL_I8, llvm::ISD::MULHS, llvm::ISD::MULHU, llvm::ISD::OR, llvm::MVT::Other, llvm::ISD::RET, llvm::ISD::SELECT, llvm::ISD::SELECT_CC, llvm::ISD::SETCC, llvm::TargetLowering::setLibcallName(), llvm::TargetLowering::setOperationAction(), llvm::TargetLowering::setShiftAmountFlavor(), llvm::TargetLowering::setShiftAmountType(), llvm::TargetLowering::setTruncStoreAction(), llvm::ISD::SHL, llvm::RTLIB::SHL_I16, llvm::RTLIB::SHL_I32, llvm::ISD::SHL_PARTS, llvm::PIC16ISD::SLL_I8, llvm::ISD::SMUL_LOHI, llvm::ISD::SRA, llvm::RTLIB::SRA_I16, llvm::RTLIB::SRA_I32, llvm::PIC16ISD::SRA_I8, llvm::ISD::SRA_PARTS, llvm::ISD::SRL, llvm::RTLIB::SRL_I16, llvm::RTLIB::SRL_I32, llvm::PIC16ISD::SRL_I8, llvm::ISD::SRL_PARTS, llvm::ISD::STORE, llvm::ISD::SUBC, llvm::ISD::SUBE, llvm::ISD::UMUL_LOHI, and llvm::ISD::XOR.
| const char * PIC16TargetLowering::getTargetNodeName | ( | unsigned | Opcode | ) | const [virtual] |
getTargetNodeName - This method returns the name of a target specific DAG node.
Reimplemented from llvm::TargetLowering.
Definition at line 239 of file PIC16ISelLowering.cpp.
References llvm::PIC16ISD::Banksel, llvm::PIC16ISD::BCF, llvm::PIC16ISD::BRCOND, llvm::PIC16ISD::CALL, llvm::PIC16ISD::Dummy, llvm::PIC16ISD::Hi, llvm::PIC16ISD::Lo, llvm::PIC16ISD::LRLF, llvm::PIC16ISD::LSLF, llvm::PIC16ISD::MTHI, llvm::PIC16ISD::MTLO, llvm::PIC16ISD::PIC16LdWF, llvm::PIC16ISD::PIC16Load, llvm::PIC16ISD::PIC16Store, llvm::PIC16ISD::PIC16StWF, llvm::PIC16ISD::RLF, llvm::PIC16ISD::RRF, llvm::PIC16ISD::SELECT_ICC, and llvm::PIC16ISD::SUBCC.
getSetCCResultType - Return the ISD::SETCC ValueType
Reimplemented from llvm::TargetLowering.
Definition at line 155 of file PIC16ISelLowering.cpp.
References llvm::MVT::i8.
| SDValue PIC16TargetLowering::LowerFORMAL_ARGUMENTS | ( | SDValue | Op, | |
| SelectionDAG & | DAG | |||
| ) |
Definition at line 1174 of file PIC16ISelLowering.cpp.
References llvm::SDValue::getNode(), llvm::SelectionDAG::getNode(), llvm::SDValue::getNumOperands(), llvm::SDValue::getOperand(), llvm::SDValue::getResNo(), llvm::SDNode::getValueType(), llvm::SDNode::getVTList(), llvm::ISD::MERGE_VALUES, llvm::SmallVectorImpl< T >::push_back(), llvm::SmallVectorImpl< T >::size(), and llvm::ISD::UNDEF.
Referenced by LowerOperation(), and LowerOperationWrapper().
| SDValue PIC16TargetLowering::LowerShift | ( | SDValue | Op, | |
| SelectionDAG & | DAG | |||
| ) |
Definition at line 736 of file PIC16ISelLowering.cpp.
References llvm::SDValue::getNode(), llvm::SDValue::getOperand(), llvm::SDNode::getOperand(), llvm::SDValue::getValueType(), llvm::MVT::i8, llvm::ISD::SHL, llvm::PIC16ISD::SLL_I8, llvm::ISD::SRA, llvm::PIC16ISD::SRA_I8, llvm::ISD::SRL, and llvm::PIC16ISD::SRL_I8.
Referenced by LowerOperation().
| SDValue PIC16TargetLowering::LowerADD | ( | SDValue | Op, | |
| SelectionDAG & | DAG | |||
| ) |
Definition at line 1125 of file PIC16ISelLowering.cpp.
References llvm::ISD::ADD, llvm::ISD::ADDE, llvm::MVT::Flag, llvm::SelectionDAG::getNode(), llvm::SDValue::getOpcode(), llvm::SDValue::getOperand(), llvm::SDValue::getValueType(), llvm::SelectionDAG::getVTList(), and llvm::MVT::i8.
Referenced by LowerOperation().
| SDValue PIC16TargetLowering::LowerSUB | ( | SDValue | Op, | |
| SelectionDAG & | DAG | |||
| ) |
Definition at line 1149 of file PIC16ISelLowering.cpp.
References llvm::MVT::Flag, llvm::SelectionDAG::getNode(), llvm::SDValue::getOpcode(), llvm::SDValue::getOperand(), llvm::SDValue::getValueType(), llvm::SelectionDAG::getVTList(), llvm::SDValue::hasOneUse(), llvm::MVT::i8, and llvm::ISD::SUBE.
Referenced by LowerOperation().
| SDValue PIC16TargetLowering::LowerBinOp | ( | SDValue | Op, | |
| SelectionDAG & | DAG | |||
| ) |
Definition at line 1109 of file PIC16ISelLowering.cpp.
References llvm::SelectionDAG::getNode(), llvm::SDValue::getOpcode(), llvm::SDValue::getOperand(), llvm::SDValue::getValueType(), and llvm::MVT::i8.
Referenced by LowerOperation().
| SDValue PIC16TargetLowering::LowerCALL | ( | SDValue | Op, | |
| SelectionDAG & | DAG | |||
| ) |
Definition at line 976 of file PIC16ISelLowering.cpp.
References llvm::ISD::BUILD_PAIR, llvm::PIC16ISD::CALL, llvm::dyn_cast(), llvm::MVT::Flag, G, llvm::CallSDNode::getArg(), llvm::CallSDNode::getArgFlagsVal(), llvm::SelectionDAG::getCall(), llvm::CallSDNode::getCallee(), llvm::CallSDNode::getCallingConv(), llvm::SelectionDAG::getCALLSEQ_END(), llvm::SelectionDAG::getCALLSEQ_START(), llvm::CallSDNode::getChain(), llvm::SelectionDAG::getConstant(), llvm::SelectionDAG::getNode(), llvm::CallSDNode::getNumArgs(), llvm::CallSDNode::getNumRetVals(), llvm::SDValue::getOpcode(), llvm::SDValue::getOperand(), llvm::CallSDNode::getRetValType(), llvm::SelectionDAG::getTargetExternalSymbol(), llvm::SelectionDAG::getTargetGlobalAddress(), llvm::SDValue::getValueType(), llvm::SelectionDAG::getVTList(), GV, llvm::MVT::i16, llvm::MVT::i8, llvm::CallSDNode::isInreg(), llvm::CallSDNode::isTailCall(), llvm::CallSDNode::isVarArg(), LowerCallArguments(), LowerCallReturn(), and llvm::MVT::Other.
Referenced by LowerOperation(), and LowerOperationWrapper().
| SDValue PIC16TargetLowering::LowerRET | ( | SDValue | Op, | |
| SelectionDAG & | DAG | |||
| ) |
| SDValue PIC16TargetLowering::LowerCallReturn | ( | SDValue | Op, | |
| SDValue | Chain, | |||
| SDValue | FrameAddress, | |||
| SDValue | InFlag, | |||
| SelectionDAG & | DAG | |||
| ) |
Definition at line 924 of file PIC16ISelLowering.cpp.
References llvm::dyn_cast(), llvm::MVT::Flag, llvm::SelectionDAG::getConstant(), llvm::SelectionDAG::getMergeValues(), llvm::SelectionDAG::getNode(), llvm::CallSDNode::getNumRetVals(), llvm::SelectionDAG::getVTList(), llvm::MVT::i8, llvm::MVT::Other, and llvm::PIC16ISD::PIC16LdWF.
Referenced by LowerCALL().
| SDValue PIC16TargetLowering::LowerCallArguments | ( | SDValue | Op, | |
| SDValue | Chain, | |||
| SDValue | FrameAddress, | |||
| SDValue | InFlag, | |||
| SelectionDAG & | DAG | |||
| ) |
Definition at line 868 of file PIC16ISelLowering.cpp.
References Arg, llvm::dyn_cast(), llvm::MVT::Flag, llvm::CallSDNode::getArg(), llvm::SelectionDAG::getConstant(), llvm::SelectionDAG::getNode(), llvm::CallSDNode::getNumArgs(), llvm::MVT::getSizeInBits(), llvm::SDValue::getValue(), llvm::SDValue::getValueType(), llvm::SelectionDAG::getVTList(), llvm::MVT::i8, llvm::MVT::Other, and llvm::PIC16ISD::PIC16StWF.
Referenced by LowerCALL().
| SDValue PIC16TargetLowering::LowerBR_CC | ( | SDValue | Op, | |
| SelectionDAG & | DAG | |||
| ) |
Definition at line 1395 of file PIC16ISelLowering.cpp.
References llvm::PIC16ISD::BRCOND, Dest, llvm::SelectionDAG::getNode(), llvm::SDValue::getOperand(), getPIC16Cmp(), llvm::SDValue::getValue(), IntCCToPIC16CC(), LHS, LookThroughSetCC(), llvm::MVT::Other, and RHS.
Referenced by LowerOperation().
| SDValue PIC16TargetLowering::LowerSELECT_CC | ( | SDValue | Op, | |
| SelectionDAG & | DAG | |||
| ) |
Definition at line 1315 of file PIC16ISelLowering.cpp.
References llvm::SelectionDAG::getNode(), llvm::SDValue::getOperand(), getPIC16Cmp(), llvm::SDValue::getValue(), llvm::SDValue::getValueType(), IntCCToPIC16CC(), LHS, LookThroughSetCC(), RHS, and llvm::PIC16ISD::SELECT_ICC.
Referenced by LowerOperation().
| SDValue PIC16TargetLowering::getPIC16Cmp | ( | SDValue | LHS, | |
| SDValue | RHS, | |||
| unsigned | OrigCC, | |||
| SDValue & | CC, | |||
| SelectionDAG & | DAG | |||
| ) |
Definition at line 1249 of file PIC16ISelLowering.cpp.
References llvm::ISD::Constant, llvm::MVT::Flag, llvm::PIC16CC::GE, llvm::SelectionDAG::getConstant(), llvm::SelectionDAG::getNode(), llvm::SDValue::getOpcode(), llvm::SelectionDAG::getVTList(), llvm::PIC16CC::GT, llvm::SDValue::hasOneUse(), llvm::MVT::i8, llvm::isSignedComparison(), llvm::PIC16CC::LE, llvm::PIC16CC::LT, llvm::TargetLowering::Mask, llvm::PIC16ISD::SUBCC, llvm::PIC16CC::UGE, llvm::PIC16CC::UGT, llvm::PIC16CC::ULE, llvm::PIC16CC::ULT, and llvm::ISD::XOR.
Referenced by LowerBR_CC(), and LowerSELECT_CC().
| MachineBasicBlock * PIC16TargetLowering::EmitInstrWithCustomInserter | ( | MachineInstr * | MI, | |
| MachineBasicBlock * | MBB | |||
| ) | [virtual] |
Reimplemented from llvm::TargetLowering.
Definition at line 1341 of file PIC16ISelLowering.cpp.
References llvm::MachineInstrBuilder::addImm(), llvm::MachineInstrBuilder::addReg(), llvm::MachineBasicBlock::addSuccessor(), llvm::BuildMI(), llvm::MachineFunction::CreateMachineBasicBlock(), llvm::MachineFunction::DeleteMachineInstr(), F, llvm::TargetInstrInfo::get(), llvm::MachineBasicBlock::getBasicBlock(), llvm::MachineOperand::getImm(), llvm::TargetMachine::getInstrInfo(), llvm::MachineInstr::getOperand(), llvm::MachineBasicBlock::getParent(), llvm::MachineOperand::getReg(), llvm::TargetLowering::getTargetMachine(), llvm::MachineFunction::insert(), PHI, TII, and llvm::MachineBasicBlock::transferSuccessors().
| SDValue PIC16TargetLowering::LowerOperation | ( | SDValue | Op, | |
| SelectionDAG & | DAG | |||
| ) | [virtual] |
LowerOperation - This callback is invoked for operations that are unsupported by the target, which are registered to use 'custom' lowering, and whose defined values are all legal. If the target has no operations that require custom lowering, it need not implement this. The default implementation of this aborts.
Reimplemented from llvm::TargetLowering.
Definition at line 797 of file PIC16ISelLowering.cpp.
References llvm::ISD::ADD, llvm::ISD::ADDC, llvm::ISD::ADDE, llvm::ISD::AND, llvm::ISD::BR_CC, llvm::ISD::CALL, ExpandLoad(), ExpandStore(), llvm::ISD::FORMAL_ARGUMENTS, llvm::SDValue::getNode(), llvm::SDValue::getOpcode(), llvm::ISD::LOAD, LowerADD(), LowerBinOp(), LowerBR_CC(), LowerCALL(), LowerFORMAL_ARGUMENTS(), LowerRET(), LowerSELECT_CC(), LowerShift(), LowerSUB(), llvm::ISD::OR, llvm::ISD::RET, llvm::ISD::SELECT_CC, llvm::ISD::SHL, llvm::ISD::SRA, llvm::ISD::SRL, llvm::ISD::STORE, llvm::ISD::SUB, llvm::ISD::SUBC, llvm::ISD::SUBE, and llvm::ISD::XOR.
Referenced by LowerOperationWrapper().
| void PIC16TargetLowering::ReplaceNodeResults | ( | SDNode * | N, | |
| SmallVectorImpl< SDValue > & | Results, | |||
| SelectionDAG & | DAG | |||
| ) | [virtual] |
ReplaceNodeResults - This callback is invoked when a node result type is illegal for the target, and the operation was registered to use 'custom' lowering for that result type. The target places new result values for the node in Results (their number and types must exactly match those of the original return values of the node), or leaves Results empty, which indicates that the node is not to be custom lowered after all.
If the target has no operations that require custom lowering, it need not implement this. The default implementation aborts.
Reimplemented from llvm::TargetLowering.
Definition at line 264 of file PIC16ISelLowering.cpp.
References llvm::ISD::ADD, ExpandExternalSymbol(), ExpandFrameIndex(), ExpandGlobalAddress(), ExpandLoad(), ExpandStore(), llvm::ISD::ExternalSymbol, llvm::ISD::FrameIndex, llvm::SDNode::getOpcode(), llvm::ISD::GlobalAddress, llvm::ISD::LOAD, PopulateResults(), llvm::SmallVectorImpl< T >::push_back(), and llvm::ISD::STORE.
| void PIC16TargetLowering::LowerOperationWrapper | ( | SDNode * | N, | |
| SmallVectorImpl< SDValue > & | Results, | |||
| SelectionDAG & | DAG | |||
| ) | [virtual] |
LowerOperationWrapper - This callback is invoked by the type legalizer to legalize nodes with an illegal operand type but legal result types. It replaces the LowerOperation callback in the type Legalizer. The reason we can not do away with LowerOperation entirely is that LegalizeDAG isn't yet ready to use this callback. TODO: Consider merging with ReplaceNodeResults. The target places new result values for the node in Results (their number and types must exactly match those of the original return values of the node), or leaves Results empty, which indicates that the node is not to be custom lowered after all. The default implementation calls LowerOperation.
Reimplemented from llvm::TargetLowering.
Definition at line 767 of file PIC16ISelLowering.cpp.
References llvm::ISD::CALL, ExpandLoad(), llvm::ISD::FORMAL_ARGUMENTS, llvm::SDValue::getNode(), llvm::SDNode::getNumValues(), llvm::SDValue::getOpcode(), llvm::ISD::LOAD, LowerCALL(), LowerFORMAL_ARGUMENTS(), LowerOperation(), and llvm::SmallVectorImpl< T >::push_back().
| SDValue PIC16TargetLowering::ExpandStore | ( | SDNode * | N, | |
| SelectionDAG & | DAG | |||
| ) |
Definition at line 319 of file PIC16ISelLowering.cpp.
References llvm::StoreSDNode::getBasePtr(), llvm::MemSDNode::getChain(), llvm::SelectionDAG::getConstant(), llvm::SelectionDAG::getNode(), llvm::SDValue::getOpcode(), llvm::SDValue::getOperand(), llvm::StoreSDNode::getValue(), llvm::SDValue::getValueType(), llvm::MVT::i16, llvm::MVT::i32, llvm::MVT::i8, llvm::MVT::Other, llvm::PIC16ISD::PIC16Store, Src, and llvm::ISD::TokenFactor.
Referenced by LowerOperation(), and ReplaceNodeResults().
| SDValue PIC16TargetLowering::ExpandLoad | ( | SDNode * | N, | |
| SelectionDAG & | DAG | |||
| ) |
Definition at line 630 of file PIC16ISelLowering.cpp.
References llvm::ISD::BUILD_PAIR, llvm::dyn_cast(), llvm::LoadSDNode::getBasePtr(), llvm::MemSDNode::getChain(), llvm::SelectionDAG::getConstant(), llvm::MemSDNode::getMemoryVT(), llvm::SelectionDAG::getNode(), llvm::MVT::getSizeInBits(), llvm::SDNode::getValueType(), llvm::SelectionDAG::getVTList(), llvm::MVT::i16, llvm::MVT::i32, llvm::MVT::i8, llvm::ISD::isNON_EXTLoad(), llvm::ISD::isSEXTLoad(), llvm::ISD::isZEXTLoad(), llvm::Load, llvm::ISD::MERGE_VALUES, llvm::MVT::Other, llvm::PIC16ISD::PIC16Load, llvm::ISD::SRA, llvm::PPCISD::SRA, llvm::ISD::TokenFactor, and VT.
Referenced by LowerOperation(), LowerOperationWrapper(), and ReplaceNodeResults().
| SDValue PIC16TargetLowering::ExpandGlobalAddress | ( | SDNode * | N, | |
| SelectionDAG & | DAG | |||
| ) |
Definition at line 424 of file PIC16ISelLowering.cpp.
References llvm::ISD::BUILD_PAIR, llvm::dyn_cast(), G, llvm::GlobalAddressSDNode::getGlobal(), llvm::SelectionDAG::getNode(), llvm::GlobalAddressSDNode::getOffset(), llvm::SelectionDAG::getTargetGlobalAddress(), llvm::PIC16ISD::Hi, llvm::SPISD::Hi, llvm::MVT::i16, llvm::MVT::i8, llvm::PIC16ISD::Lo, and llvm::SPISD::Lo.
Referenced by ReplaceNodeResults().
| SDValue PIC16TargetLowering::ExpandExternalSymbol | ( | SDNode * | N, | |
| SelectionDAG & | DAG | |||
| ) |
Definition at line 411 of file PIC16ISelLowering.cpp.
References llvm::ISD::BUILD_PAIR, llvm::dyn_cast(), llvm::SelectionDAG::getNode(), llvm::ExternalSymbolSDNode::getSymbol(), llvm::SelectionDAG::getTargetExternalSymbol(), llvm::PIC16ISD::Hi, llvm::SPISD::Hi, llvm::MVT::i16, llvm::MVT::i8, llvm::PIC16ISD::Lo, and llvm::SPISD::Lo.
Referenced by ReplaceNodeResults().
| SDValue PIC16TargetLowering::ExpandFrameIndex | ( | SDNode * | N, | |
| SelectionDAG & | DAG | |||
| ) |
Definition at line 293 of file PIC16ISelLowering.cpp.
References llvm::ISD::BUILD_PAIR, llvm::dyn_cast(), llvm::MachineFunction::getFunction(), llvm::FrameIndexSDNode::getIndex(), llvm::SelectionDAG::getMachineFunction(), llvm::Value::getName(), llvm::SelectionDAG::getNode(), llvm::SelectionDAG::getTargetFrameIndex(), llvm::SDNode::getValueType(), llvm::MVT::i16, llvm::MVT::i8, Index, and Name.
Referenced by ReplaceNodeResults().
| SDValue PIC16TargetLowering::PerformDAGCombine | ( | SDNode * | N, | |
| DAGCombinerInfo & | DCI | |||
| ) | const [virtual] |
PerformDAGCombine - This method will be invoked for all target nodes and for any target-independent nodes that the target has registered with invoke it for.
The semantics are as follows: Return Value: SDValue.Val == 0 - No change was made SDValue.Val == N - N was replaced, is dead, and is already handled. otherwise - N should be replaced by the returned Operand.
In addition, methods provided by DAGCombinerInfo may be used to perform more complex transformations.
Reimplemented from llvm::TargetLowering.
Definition at line 1203 of file PIC16ISelLowering.cpp.
References llvm::SDNode::getOpcode(), PerformPIC16LoadCombine(), and llvm::PIC16ISD::PIC16Load.
| SDValue PIC16TargetLowering::PerformPIC16LoadCombine | ( | SDNode * | N, | |
| DAGCombinerInfo & | DCI | |||
| ) | const |
Definition at line 1193 of file PIC16ISelLowering.cpp.
References llvm::TargetLowering::DAGCombinerInfo::DAG, llvm::SDNode::getOperand(), llvm::SDNode::hasNUsesOfValue(), and llvm::SelectionDAG::ReplaceAllUsesOfValueWith().
Referenced by PerformDAGCombine().