- if (Subtarget->hasSSE2() &&
- (VT == MVT::v2i64 || VT == MVT::v4i32 || VT == MVT::v8i16)) {
- SDValue ValOp = N->getOperand(0);
- SDValue ShAmtOp = N->getOperand(1);
- unsigned NumElts = VT.getVectorNumElements();
-
- if (ShAmtOp.getOpcode() == ISD::BUILD_VECTOR) {
- unsigned i = 0;
- SDValue BaseShAmt;
- for (; i != NumElts; ++i) {
- SDValue Arg = ShAmtOp.getOperand(i);
- if (Arg.getOpcode() == ISD::UNDEF) continue;
- BaseShAmt = Arg;
- break;
- }
- for (; i != NumElts; ++i) {
- SDValue Arg = ShAmtOp.getOperand(i);
- if (Arg.getOpcode() == ISD::UNDEF) continue;
- if (Arg != BaseShAmt) {
- return SDValue();
- }
- }
+ if (VT != MVT::v2i64 && VT != MVT::v4i32 && VT != MVT::v8i16)
+ return SDValue();
+
+ SDValue ShAmtOp = N->getOperand(1);
+ if (ShAmtOp.getOpcode() != ISD::BUILD_VECTOR)
+ return SDValue();