Skip to content
  1. Oct 30, 2013
    • Daniel Sanders's avatar
      [mips][msa] Added support for matching bmnz, bmnzi, bmz, and bmzi from normal... · ab94b537
      Daniel Sanders authored
      [mips][msa] Added support for matching bmnz, bmnzi, bmz, and bmzi from normal IR (i.e. not intrinsics)
      
      Also corrected the definition of the intrinsics for these instructions (the
      result register is also the first operand), and added intrinsics for bsel and
      bseli to clang (they already existed in the backend).
      
      These four operations are mostly equivalent to bsel, and bseli (the difference
      is which operand is tied to the result). As a result some of the tests changed
      as described below.
      
      bitwise.ll:
      - bsel.v test adapted so that the mask is unknown at compile-time. This stops
        it emitting bmnzi.b instead of the intended bsel.v.
      - The bseli.b test now tests the right thing. Namely the case when one of the
        values is an uimm8, rather than when the condition is a uimm8 (which is
        covered by bmnzi.b)
      
      compare.ll:
      - bsel.v tests now (correctly) emits bmnz.v instead of bsel.v because this
        is the same operation (see MSA.txt).
      
      i8.ll
      - CHECK-DAG-ized test.
      - bmzi.b test now (correctly) emits equivalent bmnzi.b with swapped operands
        because this is the same operation (see MSA.txt).
      - bseli.b still emits bseli.b though because the immediate makes it
        distinguishable from bmnzi.b.
      
      vec.ll:
      - CHECK-DAG-ized test.
      - bmz.v tests now (correctly) emits bmnz.v with swapped operands (see
        MSA.txt).
      - bsel.v tests now (correctly) emits bmnz.v with swapped operands (see
        MSA.txt).
      
      llvm-svn: 193693
      ab94b537
    • Chad Rosier's avatar
      be020d03
    • Cameron McInally's avatar
      Refactor the AVX512 intrinsics. Cluster the intrinsics into the appropriate... · d184466d
      Cameron McInally authored
      Refactor the AVX512 intrinsics. Cluster the intrinsics into the appropriate vector extension class within the .td file.
      
      llvm-svn: 193690
      d184466d
    • Howard Hinnant's avatar
      Rehash but don't grow when full of tombstones. · 811c96fa
      Howard Hinnant authored
      This problem was found and fixed by José Fonseca in March 2011 for
      SmallPtrSet, committed r128566.  But as far as I can tell, all other
      llvm hash tables retain the same problem:  the bucket count can grow
      without bound while size() remains near constant by repeated
      insert/erase cycles that tend to fill the container with tombstones. 
      Here is a demo that has been reduced to a trivial case:
      
      int
      main()
      {
         llvm::DenseSet<unsigned> d;
         for (unsigned i = 0; i < 0xFFFFFFF; ++i)
         {
             d.insert(i);
             d.erase(i);
         }
      }
      
      While the container size() never grows above 1, the bucket count grows
      like this:
      
      nb = 64
      nb = 128
      nb = 256
      nb = 512
      nb = 1024
      nb = 2048
      nb = 4096
      nb = 8192
      nb = 16384
      nb = 32768
      nb = 65536
      nb = 131072
      nb = 262144
      nb = 524288
      nb = 1048576
      nb = 2097152
      nb = 4194304
      nb = 8388608
      nb = 16777216
      nb = 33554432
      nb = 67108864
      nb = 134217728
      nb = 268435456
      
      The above program currently consumes a few GB ram.  This patch brings
      the memory consumption down by several orders of magnitude, and keeps
      the bucket count at 64 for the above test.
      
      llvm-svn: 193689
      811c96fa
    • Daniel Sanders's avatar
      [mips][msa] Added support for matching bins[lr]i.[bhwd] from normal IR (i.e. not intrinsics) · d74b130c
      Daniel Sanders authored
      This required correcting the definition of the bins[lr]i intrinsics because
      the result is also the first operand.
      
      It also required removing the (arbitrary) check for 32-bit immediates in
      MipsSEDAGToDAGISel::selectVSplat().
      
      Currently using binsli.d with 2 bits set in the mask doesn't select binsli.d
      because the constant is legalized into a ConstantPool. Similar things can
      happen with binsri.d with more than 10 bits set in the mask. The resulting
      code when this happens is correct but not optimal.
      
      llvm-svn: 193687
      d74b130c
    • Daniel Sanders's avatar
      [mips][msa] Combine binsri-like DAG of AND and OR into equivalent VSELECT · 53fe6c4d
      Daniel Sanders authored
      (or (and $a, $mask), (and $b, $inverse_mask)) => (vselect $mask, $a, $b).
      where $mask is a constant splat. This allows bitwise operations to make use
      of bsel.
      
      It's also a stepping stone towards matching bins[lr], and bins[lr]i from
      normal IR.
      
      Two sets of similar tests have been added in this commit. The bsel_* functions
      test the case where binsri cannot be used. The binsr_*_i functions will
      start to use the binsri instruction in the next commit.
      
      llvm-svn: 193682
      53fe6c4d
    • Daniel Sanders's avatar
      [mips] MipsSETargetLowering now reports DAGCombiner changes when using -debug-only=mips-isel · 62aeab83
      Daniel Sanders authored
      No test since -debug output is intended for developers and not end-users.
      
      llvm-svn: 193681
      62aeab83
    • Daniel Sanders's avatar
      [mips][msa] Added support for matching splat.[bhw] from normal IR (i.e. not intrinsics) · e7ef0c81
      Daniel Sanders authored
      splat.d is implemented but this subtest is currently disabled. This is because
      it is difficult to match the appropriate IR on MIPS32. There is a patch under
      review that should help with this so I hope to enable the subtest soon.
      
      llvm-svn: 193680
      e7ef0c81
    • Juergen Ributzka's avatar
      Revert "SelectionDAG: Teach the legalizer to split SETCC if VSELECT needs splitting too." · 3bd686d4
      Juergen Ributzka authored
      Now Hexagon and SystemZ are not happy with it :-(
      
      llvm-svn: 193677
      3bd686d4
    • Juergen Ributzka's avatar
      SelectionDAG: Teach the legalizer to split SETCC if VSELECT needs splitting too. · 6ad05d6b
      Juergen Ributzka authored
      The Type Legalizer recognizes that VSELECT needs to be split, because the type
      is to wide for the given target. The same does not always apply to SETCC,
      because less space is required to encode the result of a comparison. As a result
      VSELECT is split and SETCC is unrolled into scalar comparisons.
      
      This commit fixes the issue by checking for VSELECT-SETCC patterns in the DAG
      Combiner. If a matching pattern is found, then the result mask of SETCC is
      promoted to the expected vector mask type for the given target. This mask has
      usually the same size as the VSELECT return type (except for Intel KNL). Now the
      type legalizer will split both VSELECT and SETCC.
      
      This allows the following X86 DAG Combine code to sucessfully detect the MIN/MAX
      pattern. This fixes PR16695, PR17002, and <rdar://problem/14594431>.
      
      Reviewed by Nadav
      
      llvm-svn: 193676
      6ad05d6b
    • Bill Wendling's avatar
      Reformat Makefile. No other changes. · d3b4344a
      Bill Wendling authored
      llvm-svn: 193675
      d3b4344a
    • Akira Hatanaka's avatar
      [mips] Compute stack alignment on the fly. · 3048b024
      Akira Hatanaka authored
      llvm-svn: 193673
      3048b024
    • Josh Magee's avatar
      Reformat code with clang-format. · 7245f1d8
      Josh Magee authored
      Differential Revision: http://llvm-reviews.chandlerc.com/D2057
      
      llvm-svn: 193672
      7245f1d8
    • NAKAMURA Takumi's avatar
      StackProtector.h: Fix trailing comments for doxygen. [-Wdocumentation] · c6823c76
      NAKAMURA Takumi authored
        s!//<!///<!
      
      llvm-svn: 193669
      c6823c76
    • NAKAMURA Takumi's avatar
      Trailing whitespace in a comment line. · 8970f538
      NAKAMURA Takumi authored
      llvm-svn: 193668
      8970f538
    • Manman Ren's avatar
      Debug Info: code clean up. · 251a1bd2
      Manman Ren authored
      Use EmitLabelOffsetDifference for handling on darwin platform when
      non-darwin platforms use EmitLabelPlusOffset.
      
      Also fix a bug in EmitLabelOffsetDifference where the size is hard-coded
      to 4 even though Size is passed in as an argument.
      
      llvm-svn: 193660
      251a1bd2
  2. Oct 29, 2013
Loading