MVT::ValueType VT = N0.getValueType();
// fold vector ops
- SDOperand FoldedVOp = SimplifyVBinOp(N);
- if (FoldedVOp.Val) return FoldedVOp;
+ if (MVT::isVector(VT)) {
+ SDOperand FoldedVOp = SimplifyVBinOp(N);
+ if (FoldedVOp.Val) return FoldedVOp;
+ }
// fold (add x, undef) -> undef
if (N0.getOpcode() == ISD::UNDEF)
MVT::ValueType VT = N0.getValueType();
// fold vector ops
- SDOperand FoldedVOp = SimplifyVBinOp(N);
- if (FoldedVOp.Val) return FoldedVOp;
+ if (MVT::isVector(VT)) {
+ SDOperand FoldedVOp = SimplifyVBinOp(N);
+ if (FoldedVOp.Val) return FoldedVOp;
+ }
// fold (sub x, x) -> 0
if (N0 == N1)
MVT::ValueType VT = N0.getValueType();
// fold vector ops
- SDOperand FoldedVOp = SimplifyVBinOp(N);
- if (FoldedVOp.Val) return FoldedVOp;
+ if (MVT::isVector(VT)) {
+ SDOperand FoldedVOp = SimplifyVBinOp(N);
+ if (FoldedVOp.Val) return FoldedVOp;
+ }
// fold (mul x, undef) -> 0
if (N0.getOpcode() == ISD::UNDEF || N1.getOpcode() == ISD::UNDEF)
MVT::ValueType VT = N->getValueType(0);
// fold vector ops
- SDOperand FoldedVOp = SimplifyVBinOp(N);
- if (FoldedVOp.Val) return FoldedVOp;
+ if (MVT::isVector(VT)) {
+ SDOperand FoldedVOp = SimplifyVBinOp(N);
+ if (FoldedVOp.Val) return FoldedVOp;
+ }
// fold (sdiv c1, c2) -> c1/c2
if (N0C && N1C && !N1C->isNullValue())
MVT::ValueType VT = N->getValueType(0);
// fold vector ops
- SDOperand FoldedVOp = SimplifyVBinOp(N);
- if (FoldedVOp.Val) return FoldedVOp;
+ if (MVT::isVector(VT)) {
+ SDOperand FoldedVOp = SimplifyVBinOp(N);
+ if (FoldedVOp.Val) return FoldedVOp;
+ }
// fold (udiv c1, c2) -> c1/c2
if (N0C && N1C && !N1C->isNullValue())
MVT::ValueType VT = N1.getValueType();
// fold vector ops
- SDOperand FoldedVOp = SimplifyVBinOp(N);
- if (FoldedVOp.Val) return FoldedVOp;
+ if (MVT::isVector(VT)) {
+ SDOperand FoldedVOp = SimplifyVBinOp(N);
+ if (FoldedVOp.Val) return FoldedVOp;
+ }
// fold (and x, undef) -> 0
if (N0.getOpcode() == ISD::UNDEF || N1.getOpcode() == ISD::UNDEF)
unsigned OpSizeInBits = MVT::getSizeInBits(VT);
// fold vector ops
- SDOperand FoldedVOp = SimplifyVBinOp(N);
- if (FoldedVOp.Val) return FoldedVOp;
+ if (MVT::isVector(VT)) {
+ SDOperand FoldedVOp = SimplifyVBinOp(N);
+ if (FoldedVOp.Val) return FoldedVOp;
+ }
// fold (or x, undef) -> -1
if (N0.getOpcode() == ISD::UNDEF || N1.getOpcode() == ISD::UNDEF)
MVT::ValueType VT = N0.getValueType();
// fold vector ops
- SDOperand FoldedVOp = SimplifyVBinOp(N);
- if (FoldedVOp.Val) return FoldedVOp;
+ if (MVT::isVector(VT)) {
+ SDOperand FoldedVOp = SimplifyVBinOp(N);
+ if (FoldedVOp.Val) return FoldedVOp;
+ }
// fold (xor x, undef) -> undef
if (N0.getOpcode() == ISD::UNDEF)
MVT::ValueType VT = N->getValueType(0);
// fold vector ops
- SDOperand FoldedVOp = SimplifyVBinOp(N);
- if (FoldedVOp.Val) return FoldedVOp;
+ if (MVT::isVector(VT)) {
+ SDOperand FoldedVOp = SimplifyVBinOp(N);
+ if (FoldedVOp.Val) return FoldedVOp;
+ }
// fold (fadd c1, c2) -> c1+c2
if (N0CFP && N1CFP)
MVT::ValueType VT = N->getValueType(0);
// fold vector ops
- SDOperand FoldedVOp = SimplifyVBinOp(N);
- if (FoldedVOp.Val) return FoldedVOp;
+ if (MVT::isVector(VT)) {
+ SDOperand FoldedVOp = SimplifyVBinOp(N);
+ if (FoldedVOp.Val) return FoldedVOp;
+ }
// fold (fsub c1, c2) -> c1-c2
if (N0CFP && N1CFP)
MVT::ValueType VT = N->getValueType(0);
// fold vector ops
- SDOperand FoldedVOp = SimplifyVBinOp(N);
- if (FoldedVOp.Val) return FoldedVOp;
+ if (MVT::isVector(VT)) {
+ SDOperand FoldedVOp = SimplifyVBinOp(N);
+ if (FoldedVOp.Val) return FoldedVOp;
+ }
// fold (fmul c1, c2) -> c1*c2
if (N0CFP && N1CFP)
MVT::ValueType VT = N->getValueType(0);
// fold vector ops
- SDOperand FoldedVOp = SimplifyVBinOp(N);
- if (FoldedVOp.Val) return FoldedVOp;
+ if (MVT::isVector(VT)) {
+ SDOperand FoldedVOp = SimplifyVBinOp(N);
+ if (FoldedVOp.Val) return FoldedVOp;
+ }
// fold (fdiv c1, c2) -> c1/c2
if (N0CFP && N1CFP)
if (AfterLegalize) return SDOperand();
MVT::ValueType VT = N->getValueType(0);
- if (!MVT::isVector(VT)) return SDOperand();
+ assert(MVT::isVector(VT) && "SimplifyVBinOp only works on vectors!");
MVT::ValueType EltType = MVT::getVectorElementType(VT);
SDOperand LHS = N->getOperand(0);