Skip to content
  1. Oct 21, 2003
  2. Oct 20, 2003
  3. Oct 18, 2003
  4. Sep 23, 2003
  5. Sep 16, 2003
  6. Aug 18, 2003
  7. Aug 12, 2003
  8. Aug 11, 2003
  9. Aug 07, 2003
  10. Aug 06, 2003
    • Vikram S. Adve's avatar
      1. Bug fix: was using SLL instead of SLLX for ULongTy. Chump. · 792b48f4
      Vikram S. Adve authored
      2. Handle fp-to-uint conversions directly here instead of relying on
         a pre-transformation to replace them with the 2-step conversion.
      3. Use size rather than explicitly checking types when deciding what
         opcodes to use, wherever possible.  This is less error prone (the
         bug fix above was not the first time!).
      4. Float-to-pointer casts shd now work though this hasn't been tested.
      
      llvm-svn: 7645
      792b48f4
  11. Aug 05, 2003
  12. Aug 01, 2003
  13. Jul 29, 2003
  14. Jul 25, 2003
  15. Jul 10, 2003
    • Vikram S. Adve's avatar
      Several important bug fixes: · 4f420ce3
      Vikram S. Adve authored
      (1) Cannot use ANDN(ot), ORN, and XORN for boolean ops, only bitwise ops.
      
      (2) Conditional move instructions must distinguish signed and unsigned
          condition codes, e.g., MOVLE vs. MOVLEU.
      
      (3) Conditional-move-on-register was using the cond-move-on-cc opcodes,
          which produces a valid-looking instruction with bogus registers!
      
      (4) Here's a really cute one: dividing-by-2^k for negative numbers needs to
          add 2^k-1 before shifting, not add 1 after shifting.  Sadly, these
          are the same when k=0 so our poor test case worked fine.
      
      (5) Casting between signed and unsigned values was not correct:
          completely reimplemented.
      
      (6) Zero-extension on unsigned values was bogus: I was only doing the
          SRL and not the SLLX before it.  Don't know WHAT I was thinking!
      
      (7) And the most important class of changes: Sign-extensions on signed values.
          Signed values are not sign-extended after ordinary operations,
          so they must be sign-extended before the following cases:
      	-- passing to an external or unknown function
      	-- returning from a function
      	-- using as operand 2 of DIV or REM
      	-- using as either operand of condition-code setting operation
                 (currently only SUBCC), with smaller than 32-bit operands
      
      
      Also, a couple of improvements:
      
      (1) Fold cast-to-bool into Not(bool).  Need to do this for And, Or, XOR also.
      
      (2) Convert SetCC-Const into a conditional-move-on-register (case 41)
          if the constant is 0.  This was only being done for branch-on-SetCC-Const
          when the branch is folded with the SetCC-Const.
      
      llvm-svn: 7159
      4f420ce3
  16. Jul 06, 2003
  17. Jul 02, 2003
    • Vikram S. Adve's avatar
      Force fixed-size but large alloca objects to the dynamically allocated · 7a4abf89
      Vikram S. Adve authored
      area to avoid using up precious stack space within the 4095 offset limit
      from %fp.  Such objects that would themselves live at a large offset
      were being put there already so this is a simple change.
      
      llvm-svn: 7066
      7a4abf89
    • Vikram S. Adve's avatar
      Bug/case fixes: · b5f8ada2
      Vikram S. Adve authored
      (1) select: Ok to convert a pointer to a float or double.
      (2) regalloc: Some MachineInstr* for caller-saving code before a call
          were being inserted before and after the call!
      (3) Don't insert the caller-saving instructions in the
          MachineCodeForInstruction for the Call instruction.
          *All* instructions generated by register allocation need to be
          recorded in those maps, but it needs to be done uniformly.
      
      llvm-svn: 7051
      b5f8ada2
  18. Jun 23, 2003
  19. Jun 06, 2003
  20. Jun 03, 2003
  21. Jun 02, 2003
    • Misha Brukman's avatar
      SparcInstr.def: added 'r' and 'i' versions of MOV(F)cc instructions · 843d6933
      Misha Brukman authored
      SparcInstrSelection.cpp:
      * Fixed opcodes to return correct 'i' version since the two functions are each
        only used in one place.
      * Changed name of function to have an 'i' in the name to signify that they each
        return an immediate form of the opcode.
      * Added a warning if either of the functions is ever used in a context which
        requires a register-version opcode.
      
      SparcV9_F4.td: fixed class F4_3, added F4_4 and notes that F4_{1,2} need fixing
      SparcV9.td: added the MOV(F)cc instructions
      
      llvm-svn: 6548
      843d6933
  22. May 31, 2003
  23. May 30, 2003
  24. May 28, 2003
    • Misha Brukman's avatar
      Added 'r' or 'i' annotations to instructions, as SparcInstr.def has changed. · da83883e
      Misha Brukman authored
      Here I had to make one non-trivial change: add a function to get a version of
      the opcode that takes an immediate, given an opcode that takes all registers.
      
      This is required because sometimes it is not known at construction time which
      opcode is used because opcodes are passed around between functions.
      
      llvm-svn: 6375
      da83883e
  25. May 27, 2003
  26. May 25, 2003
  27. May 21, 2003
  28. May 20, 2003
  29. Apr 26, 2003
  30. Apr 25, 2003
  31. Jan 15, 2003
Loading