diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp index 381ac7c141118f..9c084a4a2cd2ca 100644 --- a/llvm/lib/Target/X86/X86ISelLowering.cpp +++ b/llvm/lib/Target/X86/X86ISelLowering.cpp @@ -25346,9 +25346,9 @@ SDValue X86TargetLowering::LowerINTRINSIC_WO_CHAIN(SDValue Op, // MMX register. ShAmt = DAG.getNode(X86ISD::MMX_MOVW2D, DL, MVT::x86mmx, ShAmt); return DAG.getNode(ISD::INTRINSIC_WO_CHAIN, DL, Op.getValueType(), - DAG.getConstant(NewIntrinsic, DL, MVT::i32), + DAG.getTargetConstant(NewIntrinsic, DL, + getPointerTy(DAG.getDataLayout())), Op.getOperand(1), ShAmt); - } } } @@ -38404,6 +38404,8 @@ static SDValue createMMXBuildVector(BuildVectorSDNode *BV, SelectionDAG &DAG, // Convert build vector ops to MMX data in the bottom elements. SmallVector Ops; + const TargetLowering &TLI = DAG.getTargetLoweringInfo(); + // Broadcast - use (PUNPCKL+)PSHUFW to broadcast single element. if (Splat) { if (Splat.isUndef()) @@ -38416,14 +38418,16 @@ static SDValue createMMXBuildVector(BuildVectorSDNode *BV, SelectionDAG &DAG, if (NumElts == 8) Splat = DAG.getNode( ISD::INTRINSIC_WO_CHAIN, DL, MVT::x86mmx, - DAG.getConstant(Intrinsic::x86_mmx_punpcklbw, DL, MVT::i32), Splat, - Splat); + DAG.getTargetConstant(Intrinsic::x86_mmx_punpcklbw, DL, + TLI.getPointerTy(DAG.getDataLayout())), + Splat, Splat); // Use PSHUFW to repeat 16-bit elements. unsigned ShufMask = (NumElts > 2 ? 0 : 0x44); return DAG.getNode( ISD::INTRINSIC_WO_CHAIN, DL, MVT::x86mmx, - DAG.getTargetConstant(Intrinsic::x86_sse_pshuf_w, DL, MVT::i32), + DAG.getTargetConstant(Intrinsic::x86_sse_pshuf_w, DL, + TLI.getPointerTy(DAG.getDataLayout())), Splat, DAG.getTargetConstant(ShufMask, DL, MVT::i8)); } Ops.append(NumElts, Splat); @@ -38439,7 +38443,8 @@ static SDValue createMMXBuildVector(BuildVectorSDNode *BV, SelectionDAG &DAG, (NumOps == 2 ? Intrinsic::x86_mmx_punpckldq : (NumOps == 4 ? Intrinsic::x86_mmx_punpcklwd : Intrinsic::x86_mmx_punpcklbw)); - SDValue Intrin = DAG.getConstant(IntrinOp, DL, MVT::i32); + SDValue Intrin = DAG.getTargetConstant( + IntrinOp, DL, TLI.getPointerTy(DAG.getDataLayout())); for (unsigned i = 0; i != NumOps; i += 2) Ops[i / 2] = DAG.getNode(ISD::INTRINSIC_WO_CHAIN, DL, MVT::x86mmx, Intrin, Ops[i], Ops[i + 1]);