Skip to content
  1. Mar 17, 2014
  2. Mar 14, 2014
    • Owen Anderson's avatar
      Phase 2 of the great MachineRegisterInfo cleanup. This time, we're changing · 16c6bf49
      Owen Anderson authored
      operator* on the by-operand iterators to return a MachineOperand& rather than
      a MachineInstr&.  At this point they almost behave like normal iterators!
      
      Again, this requires making some existing loops more verbose, but should pave
      the way for the big range-based for-loop cleanups in the future.
      
      llvm-svn: 203865
      16c6bf49
  3. Mar 11, 2014
  4. Feb 10, 2014
    • Tom Stellard's avatar
      R600/SI: Initialize M0 and emit S_WQM_B64 whenever DS instructions are used · 5d7aaaed
      Tom Stellard authored
      DS instructions that access local memory can only uses addresses that
      are less than or equal to the value of M0.  When M0 is uninitialized,
      then we experience undefined behavior.
      
      This patch also changes the behavior to emit S_WQM_B64 on pixel shaders
      no matter what kind of DS instruction is used.
      
      llvm-svn: 201097
      5d7aaaed
  5. Dec 17, 2013
    • Andrew Trick's avatar
      Allow MachineCSE to coalesce trivial subregister copies the same way that it... · e339828b
      Andrew Trick authored
      Allow MachineCSE to coalesce trivial subregister copies the same way that it coalesces normal copies.
      
      Without this, MachineCSE is powerless to handle redundant operations with truncated source operands.
      
      This required fixing the 2-addr pass to handle tied subregisters. It isn't clear what combinations of subregisters can legally be tied, but the simple case of truncated source operands is now safely handled:
      
           %vreg11<def> = COPY %vreg1:sub_32bit; GR32:%vreg11 GR64:%vreg1
           %vreg12<def> = COPY %vreg2:sub_32bit; GR32:%vreg12 GR64:%vreg2
           %vreg13<def,tied1> = ADD32rr %vreg11<tied0>, %vreg12<kill>, %EFLAGS<imp-def>
      
      Test case: cse-add-with-overflow.ll.
      
      This exposed an existing bug in
      PPCInstrInfo::commuteInstruction. Thanks to Rafael for the test case:
      PowerPC/crash.ll.
      
      llvm-svn: 197465
      e339828b
  6. Nov 27, 2013
  7. Nov 18, 2013
  8. Nov 15, 2013
  9. Nov 14, 2013
  10. Oct 28, 2013
  11. Oct 22, 2013
  12. Oct 16, 2013
  13. Oct 10, 2013
  14. Aug 18, 2013
  15. Aug 16, 2013
    • Michel Danzer's avatar
      R600/SI: Fix broken encoding of DS_WRITE_B32 · 20680b1c
      Michel Danzer authored
      
      
      The logic in SIInsertWaits::getHwCounts() only really made sense for SMRD
      instructions, and trying to shoehorn it into handling DS_WRITE_B32 caused
      it to corrupt the encoding of that by clobbering the first operand with
      the second one.
      
      Undo that damage and only apply the SMRD logic to that.
      
      Fixes some derivates related piglit regressions with radeonsi.
      
      Reviewed-by: default avatarTom Stellard <thomas.stellard@amd.com>
      llvm-svn: 188558
      20680b1c
  16. Aug 15, 2013
  17. Jul 15, 2013
  18. Jun 07, 2013
  19. Apr 10, 2013
  20. Mar 27, 2013
  21. Mar 26, 2013
  22. Mar 01, 2013
  23. Feb 26, 2013
  24. Feb 16, 2013
  25. Feb 07, 2013
  26. Feb 06, 2013
    • Tom Stellard's avatar
      R600: Support for indirect addressing v4 · f3b2a1e8
      Tom Stellard authored
      Only implemented for R600 so far.  SI is missing implementations of a
      few callbacks used by the Indirect Addressing pass and needs code to
      handle frame indices.
      
      At the moment R600 only supports array sizes of 16 dwords or less.
      Register packing of vector types is currently disabled, which means that a
      vec4 is stored in T0_X, T1_X, T2_X, T3_X, rather than T0_XYZW. In order
      to correctly pack registers in all cases, we will need to implement an
      analysis pass for R600 that determines the correct vector width for each
      array.
      
      v2:
        - Add support for i8 zext load from stack.
        - Coding style fixes
      
      v3:
        - Don't reserve registers for indirect addressing when it isn't
          being used.
        - Fix bug caused by LLVM limiting the number of SubRegIndex
          declarations.
      
      v4:
        - Fix 64-bit defines
      
      llvm-svn: 174525
      f3b2a1e8
  27. Jan 02, 2013
  28. Dec 20, 2012
  29. Dec 11, 2012
    • Tom Stellard's avatar
      Add R600 backend · 75aadc28
      Tom Stellard authored
      A new backend supporting AMD GPUs: Radeon HD2XXX - HD7XXX
      
      llvm-svn: 169915
      75aadc28
Loading