@@ -57803,10 +57803,6 @@ static SDValue combineSubSetcc(SDNode *N, SelectionDAG &DAG) {
5780357803}
5780457804
5780557805static SDValue combineX86CloadCstore(SDNode *N, SelectionDAG &DAG) {
57806- // res, flags2 = sub 0, (setcc cc, flag)
57807- // cload/cstore ..., cond_ne, flag2
57808- // ->
57809- // cload/cstore cc, flag
5781057806 if (N->getConstantOperandVal(3) != X86::COND_NE)
5781157807 return SDValue();
5781257808
@@ -57822,9 +57818,18 @@ static SDValue combineX86CloadCstore(SDNode *N, SelectionDAG &DAG) {
5782257818 SDLoc DL(N);
5782357819 SmallVector<SDValue, 5> Ops(N->op_values());
5782457820 if (Op1.getOpcode() == X86ISD::SETCC) {
57821+ // res, flags2 = sub 0, (setcc cc, flag)
57822+ // cload/cstore ..., cond_ne, flag2
57823+ // ->
57824+ // cload/cstore cc, flag
5782557825 Ops[3] = Op1.getOperand(0);
5782657826 Ops[4] = Op1.getOperand(1);
5782757827 } else if (Op1.getOpcode() == ISD::AND && Sub.getValue(0).use_empty()) {
57828+ // res, flags2 = sub 0, (and X, Y)
57829+ // cload/cstore ..., cond_ne, flag2
57830+ // ->
57831+ // res, flags2 = and X, Y
57832+ // cload/cstore ..., cond_ne, flag2
5782857833 Ops[4] = DAG.getNode(X86ISD::AND, DL, Sub->getVTList(), Op1.getOperand(0),
5782957834 Op1.getOperand(1))
5783057835 .getValue(1);
0 commit comments