[llvm-commits] [PATCH] add boolean simplification support for RDRAND intrinsics

Michael Liao michael.liao at intel.com
Wed Sep 5 23:05:18 PDT 2012


On Wed, 2012-09-05 at 23:03 -0700, Craig Topper wrote:
> This change seems unrelated as its floating point related and rdrand
> is integer.

Sorry, I mixed a cleanup patch to a previous patch (part of PR12312). If
it looks OK, shall I submit it separately?

Yours
- Michael

> 
> @@ -14165,22 +14195,6 @@ static SDValue checkFlaggedOrCombine(SDValue
> Or, X86::CondCode &CC,
>    return DAG.getNode(X86ISD::PTEST, DL, MVT::i32, VecIn, VecIn);
>  }
>  
> -static bool isValidFCMOVCondition(X86::CondCode CC) {
> -  switch (CC) {
> -  default:
> -    return false;
> -  case X86::COND_B:
> -  case X86::COND_BE:
> -  case X86::COND_E:
> -  case X86::COND_P:
> -  case X86::COND_AE:
> -  case X86::COND_A:
> -  case X86::COND_NE:
> -  case X86::COND_NP:
> -    return true;
> -  }
> -}
> -
>  /// Optimize X86ISD::CMOV [LHS, RHS, CONDCODE (e.g. X86::COND_NE),
> CONDVAL]
>  static SDValue PerformCMOVCombine(SDNode *N, SelectionDAG &DAG,
>                                    TargetLowering::DAGCombinerInfo
> &DCI,
> @@ -14212,7 +14226,7 @@ static SDValue PerformCMOVCombine(SDNode *N,
> SelectionDAG &DAG,
>    Flags = checkBoolTestSetCCCombine(Cond, CC);
>    if (Flags.getNode() &&
>        // Extra check as FCMOV only supports a subset of X86 cond.
> -      (FalseOp.getValueType() != MVT::f80 ||
> isValidFCMOVCondition(CC))) {
> +      (FalseOp.getValueType() != MVT::f80 || hasFPCMov(CC))) {
>      SDValue Ops[] = { FalseOp, TrueOp,
>                        DAG.getConstant(CC, MVT::i8), Flags };
>      return DAG.getNode(X86ISD::CMOV, DL, N->getVTList(),
> 
> On Wed, Sep 5, 2012 at 3:01 PM, Michael Liao <michael.liao at intel.com>
> wrote:
>         Ping.
>         
>         Thanks for review
>         - Michael
>         
>         On Tue, 2012-08-28 at 00:12 -0700, Michael Liao wrote:
>         > Hi
>         >
>         > The attached patch adds the boolean simplification support
>         for RDRAND
>         > intrinsics which, following GCC approach, generate its
>         boolean result by
>         > CMOV instead of SETCC. In addition, this patch cleans up the
>         redundant
>         > code previously added.
>         >
>         > Thanks for your review.
>         >
>         > Yours
>         > - Michael
>         
>         > _______________________________________________
>         > llvm-commits mailing list
>         > llvm-commits at cs.uiuc.edu
>         > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>         
>         
>         _______________________________________________
>         llvm-commits mailing list
>         llvm-commits at cs.uiuc.edu
>         http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
> 
> 
> 
> -- 
> ~Craig





More information about the llvm-commits mailing list