Skip to content
  1. Dec 14, 2011
    • Evan Cheng's avatar
      - Add MachineInstrBundle.h and MachineInstrBundle.cpp. This includes a function · 7fae11b2
      Evan Cheng authored
        to finalize MI bundles (i.e. add BUNDLE instruction and computing register def
        and use lists of the BUNDLE instruction) and a pass to unpack bundles.
      - Teach more of MachineBasic and MachineInstr methods to be bundle aware.
      - Switch Thumb2 IT block to MI bundles and delete the hazard recognizer hack to
        prevent IT blocks from being broken apart.
      
      llvm-svn: 146542
      7fae11b2
  2. Dec 07, 2011
    • Evan Cheng's avatar
      Add bundle aware API for querying instruction properties and switch the code · 7f8e563a
      Evan Cheng authored
      generator to it. For non-bundle instructions, these behave exactly the same
      as the MC layer API.
      
      For properties like mayLoad / mayStore, look into the bundle and if any of the
      bundled instructions has the property it would return true.
      For properties like isPredicable, only return true if *all* of the bundled
      instructions have the property.
      For properties like canFoldAsLoad, isCompare, conservatively return false for
      bundles.
      
      llvm-svn: 146026
      7f8e563a
  3. Nov 15, 2011
  4. Nov 14, 2011
  5. Nov 13, 2011
    • Jakob Stoklund Olesen's avatar
      Rename SlotIndexes to match how they are used. · 90b5e565
      Jakob Stoklund Olesen authored
      The old naming scheme (load/use/def/store) can be traced back to an old
      linear scan article, but the names don't match how slots are actually
      used.
      
      The load and store slots are not needed after the deferred spill code
      insertion framework was deleted.
      
      The use and def slots don't make any sense because we are using
      half-open intervals as is customary in C code, but the names suggest
      closed intervals.  In reality, these slots were used to distinguish
      early-clobber defs from normal defs.
      
      The new naming scheme also has 4 slots, but the names match how the
      slots are really used.  This is a purely mechanical renaming, but some
      of the code makes a lot more sense now.
      
      llvm-svn: 144503
      90b5e565
  6. Oct 06, 2011
    • Jakob Stoklund Olesen's avatar
      Fix sub-register operand verification. · eb38bd8c
      Jakob Stoklund Olesen authored
      PhysReg operands are not allowed to have sub-register indices at all.
      
      For virtual registers with sub-reg indices, check that all registers in
      the register class support the sub-reg index.
      
      llvm-svn: 141220
      eb38bd8c
  7. Sep 24, 2011
  8. Sep 21, 2011
    • Andrew Trick's avatar
      Lower ARM adds/subs to add/sub after adding optional CPSR operand. · 924123ac
      Andrew Trick authored
      This is still a hack until we can teach tblgen to generate the
      optional CPSR operand rather than an implicit CPSR def. But the
      strangeness is now limited to the selection DAG. ADD/SUB MI's no
      longer have implicit CPSR defs, nor do we allow flag setting variants
      of these opcodes in machine code. There are several corner cases to
      consider, and getting one wrong would previously lead to nasty
      miscompilation. It's not the first time I've debugged one, so this
      time I added enough verification to ensure it won't happen again.
      
      llvm-svn: 140228
      924123ac
  9. Sep 15, 2011
    • Jakob Stoklund Olesen's avatar
      Stop verifying hasPHIKill() flags. · 4c099551
      Jakob Stoklund Olesen authored
      There is only one legitimate use remaining, in addIntervalsForSpills().
      All other calls to hasPHIKill() are only used to update PHIKill flags.
      
      The addIntervalsForSpills() function is part of the old spilling
      framework, only used by linearscan.
      
      llvm-svn: 139783
      4c099551
  10. Jul 30, 2011
  11. Jun 28, 2011
  12. Jun 27, 2011
  13. Jun 02, 2011
  14. May 19, 2011
  15. May 05, 2011
    • Bill Wendling's avatar
      SjLj EH could produce a machine basic block that legitimately has more than one · 2a40131f
      Bill Wendling authored
      landing pad as its successor.
      
      SjLj exception handling jumps to the correct landing pad via a switch statement
      that's generated right before code-gen. Loosen the constraint in the machine
      instruction verifier to allow for this. Note, this isn't the most rigorous check
      since we cannot determine where that switch statement came from. But it's
      marginally better than turning this check off when SjLj exceptions are used.
      <rdar://problem/9187612>
      
      llvm-svn: 130881
      2a40131f
  16. Apr 06, 2011
  17. Mar 31, 2011
  18. Feb 04, 2011
    • Jakob Stoklund Olesen's avatar
      Verify kill flags conservatively. · 66d0f399
      Jakob Stoklund Olesen authored
      Allow a live range to end with a kill flag, but don't allow a kill flag that
      doesn't end the live range.
      
      This makes the machine code verifier more useful during register allocation when
      kill flag computation is deferred.
      
      llvm-svn: 124838
      66d0f399
  19. Jan 12, 2011
  20. Jan 09, 2011
  21. Dec 29, 2010
  22. Dec 27, 2010
  23. Dec 20, 2010
  24. Dec 19, 2010
  25. Dec 18, 2010
  26. Dec 17, 2010
  27. Nov 17, 2010
  28. Nov 16, 2010
  29. Nov 02, 2010
  30. Nov 01, 2010
    • Jakob Stoklund Olesen's avatar
      Add kill flag verification. · d7a82400
      Jakob Stoklund Olesen authored
      At least X86FloatingPoint requires correct kill flags after register allocation,
      and targets using register scavenging benefit. Conservative kill flags are not
      enough.
      
      llvm-svn: 117960
      d7a82400
Loading