@@ -48787,6 +48787,11 @@ static SDValue combinePTESTCC(SDValue EFLAGS, X86::CondCode &CC,
4878748787 }
4878848788
4878948789 if (CC == X86::COND_E || CC == X86::COND_NE) {
48790+ // Canonicalize constant to RHS if we're just using ZF.
48791+ if (Op0 != Op1 && DAG.isConstantIntBuildVectorOrConstantInt(Op0) &&
48792+ !DAG.isConstantIntBuildVectorOrConstantInt(Op1))
48793+ return DAG.getNode(EFLAGS.getOpcode(), SDLoc(EFLAGS), VT, Op1, Op0);
48794+
4879048795 // TESTZ(X,~Y) == TESTC(Y,X)
4879148796 if (SDValue NotOp1 = IsNOT(Op1, DAG)) {
4879248797 CC = (CC == X86::COND_E ? X86::COND_B : X86::COND_AE);
@@ -48850,10 +48855,6 @@ static SDValue combinePTESTCC(SDValue EFLAGS, X86::CondCode &CC,
4885048855 }
4885148856 }
4885248857
48853- // TESTZ(-1,X) == TESTZ(X,X)
48854- if (ISD::isBuildVectorAllOnes(Op0.getNode()))
48855- return DAG.getNode(EFLAGS.getOpcode(), SDLoc(EFLAGS), VT, Op1, Op1);
48856-
4885748858 // TESTZ(X,-1) == TESTZ(X,X)
4885848859 if (ISD::isBuildVectorAllOnes(Op1.getNode()))
4885948860 return DAG.getNode(EFLAGS.getOpcode(), SDLoc(EFLAGS), VT, Op0, Op0);
0 commit comments