Please use GitHub pull requests for new patches. Phabricator shutdown timeline
Changeset View
Changeset View
Standalone View
Standalone View
llvm/lib/Target/PowerPC/PPCISelLowering.h
Show First 20 Lines • Show All 434 Lines • ▼ Show 20 Lines | enum NodeType : unsigned { | ||||
/// sequence replaces a load and needs to provide the same number | /// sequence replaces a load and needs to provide the same number | ||||
/// of outputs. | /// of outputs. | ||||
XXSWAPD, | XXSWAPD, | ||||
/// An SDNode for swaps that are not associated with any loads/stores | /// An SDNode for swaps that are not associated with any loads/stores | ||||
/// and thereby have no chain. | /// and thereby have no chain. | ||||
SWAP_NO_CHAIN, | SWAP_NO_CHAIN, | ||||
/// An SDNode for Power9 vector absolute value difference. | |||||
/// operand #0 vector | |||||
/// operand #1 vector | |||||
/// operand #2 constant i32 0 or 1, to indicate whether needs to patch | |||||
/// the most significant bit for signed i32 | |||||
/// | |||||
/// Power9 VABSD* instructions are designed to support unsigned integer | |||||
/// vectors (byte/halfword/word), if we want to make use of them for signed | |||||
/// integer vectors, we have to flip their sign bits first. To flip sign bit | |||||
/// for byte/halfword integer vector would become inefficient, but for word | |||||
/// integer vector, we can leverage XVNEGSP to make it efficiently. eg: | |||||
/// abs(sub(a,b)) => VABSDUW(a+0x80000000, b+0x80000000) | |||||
/// => VABSDUW((XVNEGSP a), (XVNEGSP b)) | |||||
VABSD, | |||||
/// FP_EXTEND_HALF(VECTOR, IDX) - Custom extend upper (IDX=0) half or | /// FP_EXTEND_HALF(VECTOR, IDX) - Custom extend upper (IDX=0) half or | ||||
/// lower (IDX=1) half of v4f32 to v2f64. | /// lower (IDX=1) half of v4f32 to v2f64. | ||||
FP_EXTEND_HALF, | FP_EXTEND_HALF, | ||||
/// MAT_PCREL_ADDR = Materialize a PC Relative address. This can be done | /// MAT_PCREL_ADDR = Materialize a PC Relative address. This can be done | ||||
/// either through an add like PADDI or through a PC Relative load like | /// either through an add like PADDI or through a PC Relative load like | ||||
/// PLD. | /// PLD. | ||||
MAT_PCREL_ADDR, | MAT_PCREL_ADDR, | ||||
▲ Show 20 Lines • Show All 959 Lines • ▼ Show 20 Lines | private: | ||||
SDValue combineSHL(SDNode *N, DAGCombinerInfo &DCI) const; | SDValue combineSHL(SDNode *N, DAGCombinerInfo &DCI) const; | ||||
SDValue combineSRA(SDNode *N, DAGCombinerInfo &DCI) const; | SDValue combineSRA(SDNode *N, DAGCombinerInfo &DCI) const; | ||||
SDValue combineSRL(SDNode *N, DAGCombinerInfo &DCI) const; | SDValue combineSRL(SDNode *N, DAGCombinerInfo &DCI) const; | ||||
SDValue combineMUL(SDNode *N, DAGCombinerInfo &DCI) const; | SDValue combineMUL(SDNode *N, DAGCombinerInfo &DCI) const; | ||||
SDValue combineADD(SDNode *N, DAGCombinerInfo &DCI) const; | SDValue combineADD(SDNode *N, DAGCombinerInfo &DCI) const; | ||||
SDValue combineFMALike(SDNode *N, DAGCombinerInfo &DCI) const; | SDValue combineFMALike(SDNode *N, DAGCombinerInfo &DCI) const; | ||||
SDValue combineTRUNCATE(SDNode *N, DAGCombinerInfo &DCI) const; | SDValue combineTRUNCATE(SDNode *N, DAGCombinerInfo &DCI) const; | ||||
SDValue combineSetCC(SDNode *N, DAGCombinerInfo &DCI) const; | SDValue combineSetCC(SDNode *N, DAGCombinerInfo &DCI) const; | ||||
SDValue combineABS(SDNode *N, DAGCombinerInfo &DCI) const; | |||||
SDValue combineVSelect(SDNode *N, DAGCombinerInfo &DCI) const; | SDValue combineVSelect(SDNode *N, DAGCombinerInfo &DCI) const; | ||||
SDValue combineVectorShuffle(ShuffleVectorSDNode *SVN, | SDValue combineVectorShuffle(ShuffleVectorSDNode *SVN, | ||||
SelectionDAG &DAG) const; | SelectionDAG &DAG) const; | ||||
SDValue combineVReverseMemOP(ShuffleVectorSDNode *SVN, LSBaseSDNode *LSBase, | SDValue combineVReverseMemOP(ShuffleVectorSDNode *SVN, LSBaseSDNode *LSBase, | ||||
DAGCombinerInfo &DCI) const; | DAGCombinerInfo &DCI) const; | ||||
/// ConvertSETCCToSubtract - looks at SETCC that compares ints. It replaces | /// ConvertSETCCToSubtract - looks at SETCC that compares ints. It replaces | ||||
/// SETCC with integer subtraction when (1) there is a legal way of doing it | /// SETCC with integer subtraction when (1) there is a legal way of doing it | ||||
▲ Show 20 Lines • Show All 70 Lines • Show Last 20 Lines |