mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-01 05:01:59 +01:00
[X86] Use MVT::i8 for scalar shift amounts since that is what they ultimately need to legalize to.
I believe all of these are constants so legalizing them should be pretty trivial, but this saves a step. In one case it looks like we may have been creating a shift amount larger than the shift input itself. llvm-svn: 336052
This commit is contained in:
parent
3a323d3964
commit
8cc063c7f8
@ -10820,7 +10820,7 @@ static SDValue lowerVectorShuffleAsTruncBroadcast(const SDLoc &DL, MVT VT,
|
||||
// vpbroadcast+vmovd+shr to vpshufb(m)+vmovd.
|
||||
if (const int OffsetIdx = BroadcastIdx % Scale)
|
||||
Scalar = DAG.getNode(ISD::SRL, DL, Scalar.getValueType(), Scalar,
|
||||
DAG.getConstant(OffsetIdx * EltSize, DL, Scalar.getValueType()));
|
||||
DAG.getConstant(OffsetIdx * EltSize, DL, MVT::i8));
|
||||
|
||||
return DAG.getNode(X86ISD::VBROADCAST, DL, VT,
|
||||
DAG.getNode(ISD::TRUNCATE, DL, EltVT, Scalar));
|
||||
@ -15353,7 +15353,7 @@ X86TargetLowering::LowerEXTRACT_VECTOR_ELT(SDValue Op,
|
||||
int ShiftVal = (IdxVal % 4) * 8;
|
||||
if (ShiftVal != 0)
|
||||
Res = DAG.getNode(ISD::SRL, dl, MVT::i32, Res,
|
||||
DAG.getConstant(ShiftVal, dl, MVT::i32));
|
||||
DAG.getConstant(ShiftVal, dl, MVT::i8));
|
||||
return DAG.getNode(ISD::TRUNCATE, dl, VT, Res);
|
||||
}
|
||||
|
||||
@ -15364,7 +15364,7 @@ X86TargetLowering::LowerEXTRACT_VECTOR_ELT(SDValue Op,
|
||||
int ShiftVal = (IdxVal % 2) * 8;
|
||||
if (ShiftVal != 0)
|
||||
Res = DAG.getNode(ISD::SRL, dl, MVT::i16, Res,
|
||||
DAG.getConstant(ShiftVal, dl, MVT::i16));
|
||||
DAG.getConstant(ShiftVal, dl, MVT::i8));
|
||||
return DAG.getNode(ISD::TRUNCATE, dl, VT, Res);
|
||||
}
|
||||
|
||||
@ -16074,7 +16074,7 @@ X86TargetLowering::LowerGlobalTLSAddress(SDValue Op, SelectionDAG &DAG) const {
|
||||
|
||||
auto &DL = DAG.getDataLayout();
|
||||
SDValue Scale =
|
||||
DAG.getConstant(Log2_64_Ceil(DL.getPointerSize()), dl, PtrVT);
|
||||
DAG.getConstant(Log2_64_Ceil(DL.getPointerSize()), dl, MVT::i8);
|
||||
IDX = DAG.getNode(ISD::SHL, dl, PtrVT, IDX, Scale);
|
||||
|
||||
res = DAG.getNode(ISD::ADD, dl, PtrVT, ThreadPointer, IDX);
|
||||
@ -34968,7 +34968,7 @@ static SDValue lowerX86CmpEqZeroToCtlzSrl(SDValue Op, EVT ExtTy,
|
||||
// encoding of shr and lzcnt is more desirable.
|
||||
SDValue Trunc = DAG.getZExtOrTrunc(Clz, dl, MVT::i32);
|
||||
SDValue Scc = DAG.getNode(ISD::SRL, dl, MVT::i32, Trunc,
|
||||
DAG.getConstant(Log2b, dl, VT));
|
||||
DAG.getConstant(Log2b, dl, MVT::i8));
|
||||
return DAG.getZExtOrTrunc(Scc, dl, ExtTy);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user