Skip to content
  1. Feb 17, 2010
  2. Feb 14, 2010
  3. Dec 25, 2009
  4. Nov 02, 2009
  5. Aug 29, 2009
    • Bob Wilson's avatar
      PR4795: Remove EEVT::isFP, isInt and isVec types used by TableGen's type · 57b946c9
      Bob Wilson authored
      inferencing.  As far as I can tell, these are equivalent to the existing
      MVT::fAny, iAny and vAny types, and having both of them makes it harder
      to reason about and modify the type inferencing code.
      
      The specific problem in PR4795 occurs when updating a vAny type to be fAny
      or iAny, or vice versa.  Both iAny and fAny include vector types -- they
      intersect with the set of types represented by vAny.  When merging them,
      choose fAny/iAny to represent the intersection.  This is not perfect, since
      fAny/iAny also include scalar types, but it is good enough for TableGen's
      type inferencing.
      
      llvm-svn: 80423
      57b946c9
  6. Aug 23, 2009
    • Benjamin Kramer's avatar
      Try to fix MSVC build after r79846. · c2dbd5d6
      Benjamin Kramer authored
      llvm-svn: 79850
      c2dbd5d6
    • Daniel Dunbar's avatar
      Fix non-determinism in DAGISel emitter. · ced00815
      Daniel Dunbar authored
       - This manifested as non-determinism in the .inc output in rare cases (when two
         distinct patterns ended up being equivalent, which is rather rare). That
         meant the pattern matching was non-deterministic, which could eventually mean
         the code generator selected different instructions based on the arch.
      
       - It's probably worth making the DAGISel ensure a total ordering (or force the
         user to), but the simple fix here is to totally order the Record* maps based
         on a unique ID.
      
       - PR4672, PR4711.
      
      Yay:
      --
      ddunbar@giles:~$ cat ~/llvm.obj.64/lib/Target/*/*.inc | shasum
      d1099ff34b21459a5a3e7021c225c080e6017ece  -
      ddunbar@giles:~$ cat ~/llvm.obj.ppc/lib/Target/*/*.inc | shasum
      d1099ff34b21459a5a3e7021c225c080e6017ece  -
      --
      
      llvm-svn: 79846
      ced00815
    • Chris Lattner's avatar
      remove some DOUTs · 34822f6e
      Chris Lattner authored
      llvm-svn: 79821
      34822f6e
  7. Aug 13, 2009
  8. Aug 11, 2009
  9. Jul 29, 2009
  10. Jul 03, 2009
  11. Jun 26, 2009
  12. Jun 17, 2009
  13. Jun 09, 2009
  14. Jun 08, 2009
    • David Greene's avatar
      · 8618f95c
      David Greene authored
      Make IntInits and ListInits typed.  This helps deduce types of !if and
      other operators.  For the rare cases where a list type cannot be
      deduced, provide a []<type> syntax, where <type> is the list element
      type.
      
      llvm-svn: 73078
      8618f95c
  15. Jun 02, 2009
    • Dale Johannesen's avatar
      Revert 72707 and 72709, for the moment. · 5234d379
      Dale Johannesen authored
      llvm-svn: 72712
      5234d379
    • Dale Johannesen's avatar
      Make the implicit inputs and outputs of target-independent · 0b8ca792
      Dale Johannesen authored
      ADDC/ADDE use MVT::i1 (later, whatever it gets legalized to)
      instead of MVT::Flag.  Remove CARRY_FALSE in favor of 0; adjust
      all target-independent code to use this format.
      
      Most targets will still produce a Flag-setting target-dependent
      version when selection is done.  X86 is converted to use i32
      instead, which means TableGen needs to produce different code
      in xxxGenDAGISel.inc.  This keys off the new supportsHasI1 bit
      in xxxInstrInfo, currently set only for X86; in principle this
      is temporary and should go away when all other targets have
      been converted.  All relevant X86 instruction patterns are
      modified to represent setting and using EFLAGS explicitly.  The
      same can be done on other targets.
      
      The immediate behavior change is that an ADC/ADD pair are no
      longer tightly coupled in the X86 scheduler; they can be
      separated by instructions that don't clobber the flags (MOV).
      I will soon add some peephole optimizations based on using
      other instructions that set the flags to feed into ADC.
      
      llvm-svn: 72707
      0b8ca792
  16. Apr 27, 2009
    • Nate Begeman's avatar
      2nd attempt, fixing SSE4.1 issues and implementing feedback from duncan. · 8d6d4b92
      Nate Begeman authored
      PR2957
      
      ISD::VECTOR_SHUFFLE now stores an array of integers representing the shuffle
      mask internal to the node, rather than taking a BUILD_VECTOR of ConstantSDNodes
      as the shuffle mask.  A value of -1 represents UNDEF.
      
      In addition to eliminating the creation of illegal BUILD_VECTORS just to 
      represent shuffle masks, we are better about canonicalizing the shuffle mask,
      resulting in substantially better code for some classes of shuffles.
      
      llvm-svn: 70225
      8d6d4b92
  17. Apr 24, 2009
    • Rafael Espindola's avatar
      Revert 69952. Causes testsuite failures on linux x86-64. · b93db668
      Rafael Espindola authored
      llvm-svn: 69967
      b93db668
    • Nate Begeman's avatar
      PR2957 · bb881d66
      Nate Begeman authored
      ISD::VECTOR_SHUFFLE now stores an array of integers representing the shuffle
      mask internal to the node, rather than taking a BUILD_VECTOR of ConstantSDNodes
      as the shuffle mask.  A value of -1 represents UNDEF.
      
      In addition to eliminating the creation of illegal BUILD_VECTORS just to 
      represent shuffle masks, we are better about canonicalizing the shuffle mask,
      resulting in substantially better code for some classes of shuffles.
      
      A clean up of x86 shuffle code, and some canonicalizing in DAGCombiner is next.
      
      llvm-svn: 69952
      bb881d66
  18. Apr 13, 2009
    • Dan Gohman's avatar
      Rename COPY_TO_SUBCLASS to COPY_TO_REGCLASS, and generalize · 6c142630
      Dan Gohman authored
      it accordingly. Thanks to Jakob Stoklund Olesen for pointing
      out how this might be useful.
      
      llvm-svn: 68986
      6c142630
    • Dan Gohman's avatar
      Add a new TargetInstrInfo MachineInstr opcode, COPY_TO_SUBCLASS. · 60a446ab
      Dan Gohman authored
      This will be used to replace things like X86's MOV32to32_.
      
      Enhance ScheduleDAGSDNodesEmit to be more flexible and robust
      in the presense of subregister superclasses and subclasses. It
      can now cope with the definition of a virtual register being in
      a subclass of a use.
      
      Re-introduce the code for recording register superreg classes and
      subreg classes. This is needed because when subreg extracts and
      inserts get coalesced away, the virtual registers are left in
      the correct subclass.
      
      llvm-svn: 68961
      60a446ab
  19. Mar 31, 2009
  20. Mar 26, 2009
  21. Mar 19, 2009
  22. Mar 13, 2009
    • Chris Lattner's avatar
      add a new TGError class and use it to propagate location info with · ba42e49c
      Chris Lattner authored
      errors when thrown.  This gets us nice errors like this from tblgen:
      
      CMOVL32rr: 	(set GR32:i32:$dst, (X86cmov GR32:$src1, GR32:$src2))
      /Users/sabre/llvm/Debug/bin/tblgen: error:
      Included from X86.td:116:
      Parsing X86InstrInfo.td:922: In CMOVL32rr: X86cmov node requires exactly 4 operands!
      def CMOVL32rr : I<0x4C, MRMSrcReg,       // if <s, GR32 = GR32
      ^
      
      instead of just:
      
      CMOVL32rr: 	(set GR32:i32:$dst, (X86cmov GR32:$src1, GR32:$src2))
      /Users/sabre/llvm/Debug/bin/tblgen: In CMOVL32rr: X86cmov node requires exactly 4 operands!
      
      This is all I plan to do with this, but it should be easy enough to improve if anyone 
      cares (e.g. keeping more loc info in "dag" expr records in tblgen.
      
      llvm-svn: 66898
      ba42e49c
  23. Feb 05, 2009
  24. Feb 04, 2009
  25. Feb 01, 2009
    • Duncan Sands's avatar
      Fix PR3453 and probably a bunch of other potential · 3ed76886
      Duncan Sands authored
      crashes or wrong code with codegen of large integers:
      eliminate the legacy getIntegerVTBitMask and
      getIntegerVTSignBit methods, which returned their
      value as a uint64_t, so couldn't handle huge types.
      
      llvm-svn: 63494
      3ed76886
  26. Jan 05, 2009
  27. Dec 03, 2008
    • Dan Gohman's avatar
      Mark x86's V_SET0 and V_SETALLONES with isSimpleLoad, and teach X86's · cc78cdf2
      Dan Gohman authored
      foldMemoryOperand how to "fold" them, by converting them into constant-pool
      loads. When they aren't folded, they use xorps/cmpeqd, but for example when
      register pressure is high, they may now be folded as memory operands, which
      reduces register pressure.
      
      Also, mark V_SET0 isAsCheapAsAMove so that two-address-elimination will
      remat it instead of copying zeros around (V_SETALLONES was already marked).
      
      llvm-svn: 60461
      cc78cdf2
Loading