Skip to content
  1. Dec 29, 2014
  2. Dec 28, 2014
    • Keno Fischer's avatar
      [X86][ISel] Fix a regression I introduced in r224884 · fd22c669
      Keno Fischer authored
      The else case ResultReg was not checked for validity.
      To my surprise, this case was not hit in any of the
      existing test cases. This includes a new test cases
      that tests this path.
      
      Also drop the `target triple` declaration from the
      original test as suggested by H.J. Lu, because
      apparently with it the test won't be run on Linux
      
      llvm-svn: 224901
      fd22c669
    • Michael Kuperstein's avatar
      [X86] Add missing memory variants to AVX false dependency breaking · 683c3cde
      Michael Kuperstein authored
      Adds missing memory instruction variants to AVX false dependency breaking handling. (SSE was handled in r224246)
      
      Differential Revision: http://reviews.llvm.org/D6780
      
      llvm-svn: 224900
      683c3cde
    • Andrea Di Biagio's avatar
      [CodeGenPrepare] Teach when it is profitable to speculate calls to @llvm.cttz/ctlz. · 22ee3f63
      Andrea Di Biagio authored
      If the control flow is modelling an if-statement where the only instruction in
      the 'then' basic block (excluding the terminator) is a call to cttz/ctlz,
      CodeGenPrepare can try to speculate the cttz/ctlz call and simplify the control
      flow graph.
      
      Example:
      \code
      entry:
        %cmp = icmp eq i64 %val, 0
        br i1 %cmp, label %end.bb, label %then.bb
      
      then.bb:
        %c = tail call i64 @llvm.cttz.i64(i64 %val, i1 true)
        br label %end.bb
      
      end.bb:
        %cond = phi i64 [ %c, %then.bb ], [ 64, %entry]
      \code
      
      In this example, basic block %then.bb is taken if value %val is not zero.
      Also, the phi node in %end.bb would propagate the size-of in bits of %val
      only if %val is equal to zero.
      
      With this patch, CodeGenPrepare will try to hoist the call to cttz from %then.bb
      into basic block %entry only if cttz is cheap to speculate for the target.
      
      Added two new hooks in TargetLowering.h to let targets customize the behavior
      (i.e. decide whether it is cheap or not to speculate calls to cttz/ctlz). The
      two new methods are 'isCheapToSpeculateCtlz' and 'isCheapToSpeculateCttz'.
      By default, both methods return 'false'.
      On X86, method 'isCheapToSpeculateCtlz' returns true only if the target has
      LZCNT. Method 'isCheapToSpeculateCttz' only returns true if the target has BMI.
      
      Differential Revision: http://reviews.llvm.org/D6728
      
      llvm-svn: 224899
      22ee3f63
    • Elena Demikhovsky's avatar
      Scalarizer for masked load and store intrinsics. · 87700a73
      Elena Demikhovsky authored
      Masked vector intrinsics are a part of common LLVM IR, but they are really supported on AVX2 and AVX-512 targets. I added a code that translates masked intrinsic for all other targets. The masked vector intrinsic is converted to a chain of scalar operations inside conditional basic blocks.
      
      http://reviews.llvm.org/D6436
      
      llvm-svn: 224897
      87700a73
  3. Dec 27, 2014
  4. Dec 26, 2014
  5. Dec 25, 2014
  6. Dec 24, 2014
Loading