Skip to content
  1. Nov 03, 2013
  2. Oct 06, 2013
  3. Sep 22, 2013
  4. Jun 08, 2013
  5. Jun 07, 2013
  6. Jun 03, 2013
  7. May 19, 2013
  8. Apr 16, 2013
  9. Apr 14, 2013
  10. Apr 07, 2013
    • Jakob Stoklund Olesen's avatar
      Implement LowerReturn_64 for SPARC v9. · edaf66b0
      Jakob Stoklund Olesen authored
      Integer return values are sign or zero extended by the callee, and
      structs up to 32 bytes in size can be returned in registers.
      
      The CC_Sparc64 CallingConv definition is shared between
      LowerFormalArguments_64 and LowerReturn_64. Function arguments and
      return values are passed in the same registers.
      
      The inreg flag is also used for return values. This is required to handle
      C functions returning structs containing floats and ints:
      
        struct ifp {
          int i;
          float f;
        };
      
        struct ifp f(void);
      
      LLVM IR:
      
        define inreg { i32, float } @f() {
           ...
           ret { i32, float } %retval
        }
      
      The ABI requires that %retval.i is returned in the high bits of %i0
      while %retval.f goes in %f1.
      
      Without the inreg return value attribute, %retval.i would go in %i0 and
      %retval.f would go in %f3 which is a more efficient way of returning
      %multiple values, but it is not ABI compliant for returning C structs.
      
      llvm-svn: 178966
      edaf66b0
  11. Apr 04, 2013
  12. Apr 03, 2013
    • Jakob Stoklund Olesen's avatar
      Add 64-bit compare + branch for SPARC v9. · d9bbdfd3
      Jakob Stoklund Olesen authored
      The same compare instruction is used for 32-bit and 64-bit compares. It
      sets two different sets of flags: icc and xcc.
      
      This patch adds a conditional branch instruction using the xcc flags for
      64-bit compares.
      
      llvm-svn: 178621
      d9bbdfd3
  13. Apr 02, 2013
    • Jakob Stoklund Olesen's avatar
      Add 64-bit load and store instructions. · 8eabc3ff
      Jakob Stoklund Olesen authored
      There is only a few new instructions, the rest is handled with patterns.
      
      llvm-svn: 178528
      8eabc3ff
    • Jakob Stoklund Olesen's avatar
      Basic 64-bit ALU operations. · 917e07f0
      Jakob Stoklund Olesen authored
      SPARC v9 extends all ALU instructions to 64 bits, so we simply need to
      add patterns to use them for both i32 and i64 values.
      
      llvm-svn: 178527
      917e07f0
    • Jakob Stoklund Olesen's avatar
      Materialize 64-bit immediates. · bddb20ee
      Jakob Stoklund Olesen authored
      The last resort pattern produces 6 instructions, and there are still
      opportunities for materializing some immediates in fewer instructions.
      
      llvm-svn: 178526
      bddb20ee
    • Jakob Stoklund Olesen's avatar
      Add 64-bit shift instructions. · c1d1a481
      Jakob Stoklund Olesen authored
      SPARC v9 defines new 64-bit shift instructions. The 32-bit shift right
      instructions are still usable as zero and sign extensions.
      
      This adds new F3_Sr and F3_Si instruction formats that probably should
      be used for the 32-bit shifts as well. They don't really encode an
      simm13 field.
      
      llvm-svn: 178525
      c1d1a481
Loading