diff options
Diffstat (limited to 'llvm/lib/Target/CellSPU')
-rw-r--r-- | llvm/lib/Target/CellSPU/SPUISelDAGToDAG.cpp | 10 | ||||
-rw-r--r-- | llvm/lib/Target/CellSPU/SPUISelLowering.cpp | 92 | ||||
-rw-r--r-- | llvm/lib/Target/CellSPU/SPUOperands.td | 26 |
3 files changed, 69 insertions, 59 deletions
diff --git a/llvm/lib/Target/CellSPU/SPUISelDAGToDAG.cpp b/llvm/lib/Target/CellSPU/SPUISelDAGToDAG.cpp index ec7e754bb99..7b667ec8ba1 100644 --- a/llvm/lib/Target/CellSPU/SPUISelDAGToDAG.cpp +++ b/llvm/lib/Target/CellSPU/SPUISelDAGToDAG.cpp @@ -87,7 +87,7 @@ namespace { bool isI16IntU10Immediate(ConstantSDNode *CN) { - return isU10Constant((short) CN->getValue()); + return isU10Constant((short) CN->getZExtValue()); } //! SDNode predicate for i16 sign-extended, 10-bit immediate values @@ -111,15 +111,15 @@ namespace { isIntS16Immediate(ConstantSDNode *CN, short &Imm) { MVT vt = CN->getValueType(0); - Imm = (short) CN->getValue(); + Imm = (short) CN->getZExtValue(); if (vt.getSimpleVT() >= MVT::i1 && vt.getSimpleVT() <= MVT::i16) { return true; } else if (vt == MVT::i32) { - int32_t i_val = (int32_t) CN->getValue(); + int32_t i_val = (int32_t) CN->getZExtValue(); short s_val = (short) i_val; return i_val == s_val; } else { - int64_t i_val = (int64_t) CN->getValue(); + int64_t i_val = (int64_t) CN->getZExtValue(); short s_val = (short) i_val; return i_val == s_val; } @@ -676,7 +676,7 @@ SPUDAGToDAGISel::Select(SDValue Op) { if (Op1.getOpcode() == ISD::Constant) { ConstantSDNode *CN = cast<ConstantSDNode>(Op1); - Op1 = CurDAG->getTargetConstant(CN->getValue(), VT); + Op1 = CurDAG->getTargetConstant(CN->getZExtValue(), VT); NewOpc = (isI32IntS10Immediate(CN) ? SPU::AIr32 : SPU::Ar32); AddToISelQueue(Op0); AddToISelQueue(Op1); diff --git a/llvm/lib/Target/CellSPU/SPUISelLowering.cpp b/llvm/lib/Target/CellSPU/SPUISelLowering.cpp index 3009143d98b..eec428bbabf 100644 --- a/llvm/lib/Target/CellSPU/SPUISelLowering.cpp +++ b/llvm/lib/Target/CellSPU/SPUISelLowering.cpp @@ -524,7 +524,7 @@ AlignedLoad(SDValue Op, SelectionDAG &DAG, const SPUSubtarget *ST, || Op1.getOpcode() == ISD::TargetConstant) { const ConstantSDNode *CN = cast<ConstantSDNode>(basePtr.getOperand(1)); - alignOffs = (int) CN->getValue(); + alignOffs = (int) CN->getZExtValue(); prefSlotOffs = (int) (alignOffs & 0xf); // Adjust the rotation amount to ensure that the final result ends up in @@ -880,7 +880,7 @@ LowerConstant(SDValue Op, SelectionDAG &DAG) { ConstantSDNode *CN = cast<ConstantSDNode>(Op.getNode()); if (VT == MVT::i64) { - SDValue T = DAG.getConstant(CN->getValue(), MVT::i64); + SDValue T = DAG.getConstant(CN->getZExtValue(), MVT::i64); return DAG.getNode(SPUISD::EXTRACT_ELT0, VT, DAG.getNode(ISD::BUILD_VECTOR, MVT::v2i64, T, T)); } else { @@ -938,7 +938,7 @@ LowerFORMAL_ARGUMENTS(SDValue Op, SelectionDAG &DAG, int &VarArgsFrameIndex) MachineRegisterInfo &RegInfo = MF.getRegInfo(); SmallVector<SDValue, 8> ArgValues; SDValue Root = Op.getOperand(0); - bool isVarArg = cast<ConstantSDNode>(Op.getOperand(2))->getValue() != 0; + bool isVarArg = cast<ConstantSDNode>(Op.getOperand(2))->getZExtValue() != 0; const unsigned *ArgRegs = SPURegisterInfo::getArgRegs(); const unsigned NumArgRegs = SPURegisterInfo::getNumArgRegs(); @@ -1090,12 +1090,12 @@ static SDNode *isLSAAddress(SDValue Op, SelectionDAG &DAG) { ConstantSDNode *C = dyn_cast<ConstantSDNode>(Op); if (!C) return 0; - int Addr = C->getValue(); + int Addr = C->getZExtValue(); if ((Addr & 3) != 0 || // Low 2 bits are implicitly zero. (Addr << 14 >> 14) != Addr) return 0; // Top 14 bits have to be sext of immediate. - return DAG.getConstant((int)C->getValue() >> 2, MVT::i32).getNode(); + return DAG.getConstant((int)C->getZExtValue() >> 2, MVT::i32).getNode(); } static @@ -1103,8 +1103,8 @@ SDValue LowerCALL(SDValue Op, SelectionDAG &DAG, const SPUSubtarget *ST) { SDValue Chain = Op.getOperand(0); #if 0 - bool isVarArg = cast<ConstantSDNode>(Op.getOperand(2))->getValue() != 0; - bool isTailCall = cast<ConstantSDNode>(Op.getOperand(3))->getValue() != 0; + bool isVarArg = cast<ConstantSDNode>(Op.getOperand(2))->getZExtValue() != 0; + bool isTailCall = cast<ConstantSDNode>(Op.getOperand(3))->getZExtValue() != 0; #endif SDValue Callee = Op.getOperand(4); unsigned NumOps = (Op.getNumOperands() - 5) / 2; @@ -1379,9 +1379,9 @@ getVecImm(SDNode *N) { SDValue SPU::get_vec_u18imm(SDNode *N, SelectionDAG &DAG, MVT ValueType) { if (ConstantSDNode *CN = getVecImm(N)) { - uint64_t Value = CN->getValue(); + uint64_t Value = CN->getZExtValue(); if (ValueType == MVT::i64) { - uint64_t UValue = CN->getValue(); + uint64_t UValue = CN->getZExtValue(); uint32_t upper = uint32_t(UValue >> 32); uint32_t lower = uint32_t(UValue); if (upper != lower) @@ -1403,7 +1403,7 @@ SDValue SPU::get_vec_i16imm(SDNode *N, SelectionDAG &DAG, if (ConstantSDNode *CN = getVecImm(N)) { int64_t Value = CN->getSignExtended(); if (ValueType == MVT::i64) { - uint64_t UValue = CN->getValue(); + uint64_t UValue = CN->getZExtValue(); uint32_t upper = uint32_t(UValue >> 32); uint32_t lower = uint32_t(UValue); if (upper != lower) @@ -1426,7 +1426,7 @@ SDValue SPU::get_vec_i10imm(SDNode *N, SelectionDAG &DAG, if (ConstantSDNode *CN = getVecImm(N)) { int64_t Value = CN->getSignExtended(); if (ValueType == MVT::i64) { - uint64_t UValue = CN->getValue(); + uint64_t UValue = CN->getZExtValue(); uint32_t upper = uint32_t(UValue >> 32); uint32_t lower = uint32_t(UValue); if (upper != lower) @@ -1450,7 +1450,7 @@ SDValue SPU::get_vec_i10imm(SDNode *N, SelectionDAG &DAG, SDValue SPU::get_vec_i8imm(SDNode *N, SelectionDAG &DAG, MVT ValueType) { if (ConstantSDNode *CN = getVecImm(N)) { - int Value = (int) CN->getValue(); + int Value = (int) CN->getZExtValue(); if (ValueType == MVT::i16 && Value <= 0xffff /* truncated from uint64_t */ && ((short) Value >> 8) == ((short) Value & 0xff)) @@ -1469,7 +1469,7 @@ SDValue SPU::get_vec_i8imm(SDNode *N, SelectionDAG &DAG, SDValue SPU::get_ILHUvec_imm(SDNode *N, SelectionDAG &DAG, MVT ValueType) { if (ConstantSDNode *CN = getVecImm(N)) { - uint64_t Value = CN->getValue(); + uint64_t Value = CN->getZExtValue(); if ((ValueType == MVT::i32 && ((unsigned) Value & 0xffff0000) == (unsigned) Value) || (ValueType == MVT::i64 && (Value & 0xffff0000) == Value)) @@ -1482,7 +1482,7 @@ SDValue SPU::get_ILHUvec_imm(SDNode *N, SelectionDAG &DAG, /// get_v4i32_imm - Catch-all for general 32-bit constant vectors SDValue SPU::get_v4i32_imm(SDNode *N, SelectionDAG &DAG) { if (ConstantSDNode *CN = getVecImm(N)) { - return DAG.getConstant((unsigned) CN->getValue(), MVT::i32); + return DAG.getConstant((unsigned) CN->getZExtValue(), MVT::i32); } return SDValue(); @@ -1491,7 +1491,7 @@ SDValue SPU::get_v4i32_imm(SDNode *N, SelectionDAG &DAG) { /// get_v4i32_imm - Catch-all for general 64-bit constant vectors SDValue SPU::get_v2i64_imm(SDNode *N, SelectionDAG &DAG) { if (ConstantSDNode *CN = getVecImm(N)) { - return DAG.getConstant((unsigned) CN->getValue(), MVT::i64); + return DAG.getConstant((unsigned) CN->getZExtValue(), MVT::i64); } return SDValue(); @@ -1520,7 +1520,7 @@ static bool GetConstantBuildVectorBits(SDNode *BV, uint64_t VectorBits[2], UndefBits[PartNo] |= EltUndefBits << (SlotNo*EltBitSize); continue; } else if (ConstantSDNode *CN = dyn_cast<ConstantSDNode>(OpVal)) { - EltBits = CN->getValue() & (~0ULL >> (64-EltBitSize)); + EltBits = CN->getZExtValue() & (~0ULL >> (64-EltBitSize)); } else if (ConstantFPSDNode *CN = dyn_cast<ConstantFPSDNode>(OpVal)) { const APFloat &apf = CN->getValueAPF(); EltBits = (CN->getValueType(0) == MVT::f32 @@ -1807,7 +1807,7 @@ static SDValue LowerVECTOR_SHUFFLE(SDValue Op, SelectionDAG &DAG) { if (PermMask.getOperand(i).getOpcode() == ISD::UNDEF) SrcElt = 0; else - SrcElt = cast<ConstantSDNode>(PermMask.getOperand(i))->getValue(); + SrcElt = cast<ConstantSDNode>(PermMask.getOperand(i))->getZExtValue(); if (SrcElt >= V2EltIdx0) { ++EltsFromV2; @@ -1846,7 +1846,7 @@ static SDValue LowerVECTOR_SHUFFLE(SDValue Op, SelectionDAG &DAG) { if (PermMask.getOperand(i).getOpcode() == ISD::UNDEF) SrcElt = 0; else - SrcElt = cast<ConstantSDNode>(PermMask.getOperand(i))->getValue(); + SrcElt = cast<ConstantSDNode>(PermMask.getOperand(i))->getZExtValue(); for (unsigned j = 0; j < BytesPerElement; ++j) { ResultMask.push_back(DAG.getConstant(SrcElt*BytesPerElement+j, @@ -1884,7 +1884,7 @@ static SDValue LowerSCALAR_TO_VECTOR(SDValue Op, SelectionDAG &DAG) { case MVT::v2f64: n_copies = 2; VT = MVT::f64; break; } - SDValue CValue = DAG.getConstant(CN->getValue(), VT); + SDValue CValue = DAG.getConstant(CN->getZExtValue(), VT); for (size_t j = 0; j < n_copies; ++j) ConstVecValues.push_back(CValue); @@ -2101,7 +2101,7 @@ static SDValue LowerEXTRACT_VECTOR_ELT(SDValue Op, SelectionDAG &DAG) { assert(C != 0 && "LowerEXTRACT_VECTOR_ELT expecting constant SDNode"); - int EltNo = (int) C->getValue(); + int EltNo = (int) C->getZExtValue(); // sanity checks: if (VT == MVT::i8 && EltNo >= 16) @@ -2193,7 +2193,7 @@ static SDValue LowerINSERT_VECTOR_ELT(SDValue Op, SelectionDAG &DAG) { DAG.getNode(SPUISD::INSERT_MASK, VT, DAG.getNode(ISD::ADD, PtrVT, PtrBase, - DAG.getConstant(CN->getValue(), + DAG.getConstant(CN->getZExtValue(), PtrVT)))); return result; @@ -2215,10 +2215,12 @@ static SDValue LowerI8Math(SDValue Op, SelectionDAG &DAG, unsigned Opc) SDValue N1 = Op.getOperand(1); N0 = (N0.getOpcode() != ISD::Constant ? DAG.getNode(ISD::SIGN_EXTEND, MVT::i16, N0) - : DAG.getConstant(cast<ConstantSDNode>(N0)->getValue(), MVT::i16)); + : DAG.getConstant(cast<ConstantSDNode>(N0)->getZExtValue(), + MVT::i16)); N1 = (N1.getOpcode() != ISD::Constant ? DAG.getNode(ISD::SIGN_EXTEND, MVT::i16, N1) - : DAG.getConstant(cast<ConstantSDNode>(N1)->getValue(), MVT::i16)); + : DAG.getConstant(cast<ConstantSDNode>(N1)->getZExtValue(), + MVT::i16)); return DAG.getNode(ISD::TRUNCATE, MVT::i8, DAG.getNode(Opc, MVT::i16, N0, N1)); } @@ -2228,13 +2230,15 @@ static SDValue LowerI8Math(SDValue Op, SelectionDAG &DAG, unsigned Opc) unsigned N1Opc; N0 = (N0.getOpcode() != ISD::Constant ? DAG.getNode(ISD::ZERO_EXTEND, MVT::i16, N0) - : DAG.getConstant(cast<ConstantSDNode>(N0)->getValue(), MVT::i16)); + : DAG.getConstant(cast<ConstantSDNode>(N0)->getZExtValue(), + MVT::i16)); N1Opc = N1.getValueType().bitsLT(MVT::i16) ? ISD::ZERO_EXTEND : ISD::TRUNCATE; N1 = (N1.getOpcode() != ISD::Constant ? DAG.getNode(N1Opc, MVT::i16, N1) - : DAG.getConstant(cast<ConstantSDNode>(N1)->getValue(), MVT::i16)); + : DAG.getConstant(cast<ConstantSDNode>(N1)->getZExtValue(), + MVT::i16)); SDValue ExpandArg = DAG.getNode(ISD::OR, MVT::i16, N0, DAG.getNode(ISD::SHL, MVT::i16, @@ -2248,13 +2252,15 @@ static SDValue LowerI8Math(SDValue Op, SelectionDAG &DAG, unsigned Opc) unsigned N1Opc; N0 = (N0.getOpcode() != ISD::Constant ? DAG.getNode(ISD::ZERO_EXTEND, MVT::i16, N0) - : DAG.getConstant(cast<ConstantSDNode>(N0)->getValue(), MVT::i16)); + : DAG.getConstant(cast<ConstantSDNode>(N0)->getZExtValue(), + MVT::i16)); N1Opc = N1.getValueType().bitsLT(MVT::i16) ? ISD::ZERO_EXTEND : ISD::TRUNCATE; N1 = (N1.getOpcode() != ISD::Constant ? DAG.getNode(N1Opc, MVT::i16, N1) - : DAG.getConstant(cast<ConstantSDNode>(N1)->getValue(), MVT::i16)); + : DAG.getConstant(cast<ConstantSDNode>(N1)->getZExtValue(), + MVT::i16)); return DAG.getNode(ISD::TRUNCATE, MVT::i8, DAG.getNode(Opc, MVT::i16, N0, N1)); } @@ -2263,13 +2269,15 @@ static SDValue LowerI8Math(SDValue Op, SelectionDAG &DAG, unsigned Opc) unsigned N1Opc; N0 = (N0.getOpcode() != ISD::Constant ? DAG.getNode(ISD::SIGN_EXTEND, MVT::i16, N0) - : DAG.getConstant(cast<ConstantSDNode>(N0)->getValue(), MVT::i16)); + : DAG.getConstant(cast<ConstantSDNode>(N0)->getZExtValue(), + MVT::i16)); N1Opc = N1.getValueType().bitsLT(MVT::i16) ? ISD::SIGN_EXTEND : ISD::TRUNCATE; N1 = (N1.getOpcode() != ISD::Constant ? DAG.getNode(N1Opc, MVT::i16, N1) - : DAG.getConstant(cast<ConstantSDNode>(N1)->getValue(), MVT::i16)); + : DAG.getConstant(cast<ConstantSDNode>(N1)->getZExtValue(), + MVT::i16)); return DAG.getNode(ISD::TRUNCATE, MVT::i8, DAG.getNode(Opc, MVT::i16, N0, N1)); } @@ -2278,11 +2286,13 @@ static SDValue LowerI8Math(SDValue Op, SelectionDAG &DAG, unsigned Opc) unsigned N1Opc; N0 = (N0.getOpcode() != ISD::Constant ? DAG.getNode(ISD::SIGN_EXTEND, MVT::i16, N0) - : DAG.getConstant(cast<ConstantSDNode>(N0)->getValue(), MVT::i16)); + : DAG.getConstant(cast<ConstantSDNode>(N0)->getZExtValue(), + MVT::i16)); N1Opc = N1.getValueType().bitsLT(MVT::i16) ? ISD::SIGN_EXTEND : ISD::TRUNCATE; N1 = (N1.getOpcode() != ISD::Constant ? DAG.getNode(N1Opc, MVT::i16, N1) - : DAG.getConstant(cast<ConstantSDNode>(N1)->getValue(), MVT::i16)); + : DAG.getConstant(cast<ConstantSDNode>(N1)->getZExtValue(), + MVT::i16)); return DAG.getNode(ISD::TRUNCATE, MVT::i8, DAG.getNode(Opc, MVT::i16, N0, N1)); break; @@ -2780,13 +2790,13 @@ SPUTargetLowering::PerformDAGCombine(SDNode *N, DAGCombinerInfo &DCI) const ConstantSDNode *CN0 = cast<ConstantSDNode>(Op1); ConstantSDNode *CN1 = cast<ConstantSDNode>(Op01); SDValue combinedConst = - DAG.getConstant(CN0->getValue() + CN1->getValue(), + DAG.getConstant(CN0->getZExtValue() + CN1->getZExtValue(), Op0.getValueType()); - DEBUG(cerr << "Replace: (add " << CN0->getValue() << ", " - << "(SPUindirect <arg>, " << CN1->getValue() << "))\n"); + DEBUG(cerr << "Replace: (add " << CN0->getZExtValue() << ", " + << "(SPUindirect <arg>, " << CN1->getZExtValue() << "))\n"); DEBUG(cerr << "With: (SPUindirect <arg>, " - << CN0->getValue() + CN1->getValue() << ")\n"); + << CN0->getZExtValue() + CN1->getZExtValue() << ")\n"); return DAG.getNode(SPUISD::IndirectAddr, Op0.getValueType(), Op0.getOperand(0), combinedConst); } @@ -2800,13 +2810,13 @@ SPUTargetLowering::PerformDAGCombine(SDNode *N, DAGCombinerInfo &DCI) const ConstantSDNode *CN0 = cast<ConstantSDNode>(Op0); ConstantSDNode *CN1 = cast<ConstantSDNode>(Op11); SDValue combinedConst = - DAG.getConstant(CN0->getValue() + CN1->getValue(), + DAG.getConstant(CN0->getZExtValue() + CN1->getZExtValue(), Op0.getValueType()); - DEBUG(cerr << "Replace: (add " << CN0->getValue() << ", " - << "(SPUindirect <arg>, " << CN1->getValue() << "))\n"); + DEBUG(cerr << "Replace: (add " << CN0->getZExtValue() << ", " + << "(SPUindirect <arg>, " << CN1->getZExtValue() << "))\n"); DEBUG(cerr << "With: (SPUindirect <arg>, " - << CN0->getValue() + CN1->getValue() << ")\n"); + << CN0->getZExtValue() + CN1->getZExtValue() << ")\n"); return DAG.getNode(SPUISD::IndirectAddr, Op1.getValueType(), Op1.getOperand(0), combinedConst); @@ -2835,7 +2845,7 @@ SPUTargetLowering::PerformDAGCombine(SDNode *N, DAGCombinerInfo &DCI) const case SPUISD::IndirectAddr: { if (!ST->usingLargeMem() && Op0.getOpcode() == SPUISD::AFormAddr) { ConstantSDNode *CN = cast<ConstantSDNode>(N->getOperand(1)); - if (CN->getValue() == 0) { + if (CN->getZExtValue() == 0) { // (SPUindirect (SPUaform <addr>, 0), 0) -> // (SPUaform <addr>, 0) @@ -2863,7 +2873,7 @@ SPUTargetLowering::PerformDAGCombine(SDNode *N, DAGCombinerInfo &DCI) const // Kill degenerate vector shifts: ConstantSDNode *CN = cast<ConstantSDNode>(Op1); - if (CN->getValue() == 0) { + if (CN->getZExtValue() == 0) { Result = Op0; } } diff --git a/llvm/lib/Target/CellSPU/SPUOperands.td b/llvm/lib/Target/CellSPU/SPUOperands.td index 6f20894fa92..9a53cbe071e 100644 --- a/llvm/lib/Target/CellSPU/SPUOperands.td +++ b/llvm/lib/Target/CellSPU/SPUOperands.td @@ -10,7 +10,7 @@ //===----------------------------------------------------------------------===// def LO16 : SDNodeXForm<imm, [{ - unsigned val = N->getValue(); + unsigned val = N->getZExtValue(); // Transformation function: get the low 16 bits. return getI32Imm(val & 0xffff); }]>; @@ -33,12 +33,12 @@ def LO16_vec : SDNodeXForm<scalar_to_vector, [{ assert(OpVal.getNode() != 0 && "LO16_vec did not locate a <defined> node"); ConstantSDNode *CN = cast<ConstantSDNode>(OpVal); - return getI32Imm((unsigned)CN->getValue() & 0xffff); + return getI32Imm((unsigned)CN->getZExtValue() & 0xffff); }]>; // Transform an immediate, returning the high 16 bits shifted down: def HI16 : SDNodeXForm<imm, [{ - return getI32Imm((unsigned)N->getValue() >> 16); + return getI32Imm((unsigned)N->getZExtValue() >> 16); }]>; // Transformation function: shift the high 16 bit immediate from a build_vector @@ -59,7 +59,7 @@ def HI16_vec : SDNodeXForm<scalar_to_vector, [{ assert(OpVal.getNode() != 0 && "HI16_vec did not locate a <defined> node"); ConstantSDNode *CN = cast<ConstantSDNode>(OpVal); - return getI32Imm((unsigned)CN->getValue() >> 16); + return getI32Imm((unsigned)CN->getZExtValue() >> 16); }]>; // simm7 predicate - True if the immediate fits in an 7-bit signed @@ -72,7 +72,7 @@ def simm7: PatLeaf<(imm), [{ // uimm7 predicate - True if the immediate fits in an 7-bit unsigned // field. def uimm7: PatLeaf<(imm), [{ - return (N->getValue() <= 0x7f); + return (N->getZExtValue() <= 0x7f); }]>; // immSExt8 predicate - True if the immediate fits in an 8-bit sign extended @@ -84,7 +84,7 @@ def immSExt8 : PatLeaf<(imm), [{ // immU8: immediate, unsigned 8-bit quantity def immU8 : PatLeaf<(imm), [{ - return (N->getValue() <= 0xff); + return (N->getZExtValue() <= 0xff); }]>; // i64ImmSExt10 predicate - True if the i64 immediate fits in a 10-bit sign @@ -127,17 +127,17 @@ def immSExt16 : PatLeaf<(imm), [{ def immZExt16 : PatLeaf<(imm), [{ // immZExt16 predicate - True if the immediate fits in a 16-bit zero extended // field. - return (uint64_t)N->getValue() == (unsigned short)N->getValue(); + return (uint64_t)N->getZExtValue() == (unsigned short)N->getZExtValue(); }], LO16>; def immU16 : PatLeaf<(imm), [{ // immU16 predicate- True if the immediate fits into a 16-bit unsigned field. - return (uint64_t)N->getValue() == (N->getValue() & 0xffff); + return (uint64_t)N->getZExtValue() == (N->getZExtValue() & 0xffff); }]>; def imm18 : PatLeaf<(imm), [{ // imm18 predicate: True if the immediate fits into an 18-bit unsigned field. - int Value = (int) N->getValue(); + int Value = (int) N->getZExtValue(); return ((Value & ((1 << 19) - 1)) == Value); }]>; @@ -145,7 +145,7 @@ def lo16 : PatLeaf<(imm), [{ // lo16 predicate - returns true if the immediate has all zeros in the // low order bits and is a 32-bit constant: if (N->getValueType(0) == MVT::i32) { - uint32_t val = N->getValue(); + uint32_t val = N->getZExtValue(); return ((val & 0x0000ffff) == val); } @@ -156,10 +156,10 @@ def hi16 : PatLeaf<(imm), [{ // hi16 predicate - returns true if the immediate has all zeros in the // low order bits and is a 32-bit constant: if (N->getValueType(0) == MVT::i32) { - uint32_t val = uint32_t(N->getValue()); + uint32_t val = uint32_t(N->getZExtValue()); return ((val & 0xffff0000) == val); } else if (N->getValueType(0) == MVT::i64) { - uint64_t val = N->getValue(); + uint64_t val = N->getZExtValue(); return ((val & 0xffff0000ULL) == val); } @@ -169,7 +169,7 @@ def hi16 : PatLeaf<(imm), [{ def bitshift : PatLeaf<(imm), [{ // bitshift predicate - returns true if 0 < imm <= 7 for SHLQBII // (shift left quadword by bits immediate) - int64_t Val = N->getValue(); + int64_t Val = N->getZExtValue(); return (Val > 0 && Val <= 7); }]>; |