Skip to content
  1. Apr 14, 2013
  2. Apr 04, 2013
  3. 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
  4. Apr 02, 2013
    • 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
    • Jakob Stoklund Olesen's avatar
      Add predicates for distinguishing 32-bit and 64-bit modes. · 739d722e
      Jakob Stoklund Olesen authored
      The 'sparc' architecture produces 32-bit code while 'sparcv9' produces
      64-bit code.
      
      It is also possible to run 32-bit code using SPARC v9 instructions with:
      
        llc -march=sparc -mattr=+v9
      
      llvm-svn: 178524
      739d722e
    • Jakob Stoklund Olesen's avatar
      Add an I64Regs register class for 64-bit registers. · 5ad3b353
      Jakob Stoklund Olesen authored
      We are going to use the same registers for 32-bit and 64-bit values, but
      in two different register classes. The I64Regs register class has a
      larger spill size and alignment.
      
      The addition of an i64 register class confuses TableGen's type
      inference, so it is necessary to clarify the type of some immediates and
      the G0 register.
      
      In 64-bit mode, pointers are i64 and should use the I64Regs register
      class. Implement getPointerRegClass() to dynamically provide the pointer
      register class depending on the subtarget. Use ptr_rc and iPTR for
      memory operands.
      
      Finally, add the i64 type to the IntRegs register class. This register
      class is not used to hold i64 values, I64Regs is for that. The type is
      required to appease TableGen's type checking in output patterns like this:
      
        def : Pat<(add i64:$a, i64:$b), (ADDrr $a, $b)>;
      
      SPARC v9 uses the same ADDrr instruction for i32 and i64 additions, and
      TableGen doesn't know to check the type of register sub-classes.
      
      llvm-svn: 178522
      5ad3b353
  5. Mar 24, 2013
  6. Mar 23, 2013
  7. Feb 05, 2013
  8. Aug 24, 2012
  9. Feb 18, 2012
  10. Feb 21, 2011
  11. Jan 22, 2011
  12. Jan 21, 2011
    • Venkatraman Govindaraju's avatar
      Sparc backend: · ef8cf45e
      Venkatraman Govindaraju authored
       Rename FLUSH to FLUSHW.
       Output "ta 3" instead of a "flushw" instruction if v8 instruction set is used.
      
      llvm-svn: 123997
      ef8cf45e
  13. Jan 20, 2011
  14. Jan 12, 2011
  15. Jan 11, 2011
  16. Dec 28, 2010
    • Venkatraman Govindaraju's avatar
      · 2f15503d
      Venkatraman Govindaraju authored
      Multiple SPARC backend fixes: added Y register; updated select_cc, subx, subxcc defs/uses; 
      and fixed CustomInserter.
      
      llvm-svn: 122607
      2f15503d
  17. Dec 23, 2010
  18. Aug 17, 2010
  19. Jun 21, 2010
  20. Mar 19, 2010
  21. Nov 11, 2009
  22. Oct 29, 2009
  23. Sep 15, 2009
  24. Aug 26, 2009
  25. Aug 11, 2009
  26. Aug 05, 2009
    • Dan Gohman's avatar
      Major calling convention code refactoring. · f9bbcd1a
      Dan Gohman authored
      Instead of awkwardly encoding calling-convention information with ISD::CALL,
      ISD::FORMAL_ARGUMENTS, ISD::RET, and ISD::ARG_FLAGS nodes, TargetLowering
      provides three virtual functions for targets to override:
      LowerFormalArguments, LowerCall, and LowerRet, which replace the custom
      lowering done on the special nodes. They provide the same information, but
      in a more immediately usable format.
      
      This also reworks much of the target-independent tail call logic. The
      decision of whether or not to perform a tail call is now cleanly split
      between target-independent portions, and the target dependent portion
      in IsEligibleForTailCallOptimization.
      
      This also synchronizes all in-tree targets, to help enable future
      refactoring and feature work.
      
      llvm-svn: 78142
      f9bbcd1a
  27. Oct 12, 2008
  28. Sep 12, 2008
  29. Mar 15, 2008
  30. Mar 14, 2008
  31. Feb 27, 2008
  32. Jan 17, 2008
    • Chris Lattner's avatar
      This commit changes: · 1ea55cf8
      Chris Lattner authored
      1. Legalize now always promotes truncstore of i1 to i8. 
      2. Remove patterns and gunk related to truncstore i1 from targets.
      3. Rename the StoreXAction stuff to TruncStoreAction in TLI.
      4. Make the TLI TruncStoreAction table a 2d table to handle from/to conversions.
      5. Mark a wide variety of invalid truncstores as such in various targets, e.g.
         X86 currently doesn't support truncstore of any of its integer types.
      6. Add legalize support for truncstores with invalid value input types.
      7. Add a dag combine transform to turn store(truncate) into truncstore when
         safe.
      
      The later allows us to compile CodeGen/X86/storetrunc-fp.ll to:
      
      _foo:
      	fldt	20(%esp)
      	fldt	4(%esp)
      	faddp	%st(1)
      	movl	36(%esp), %eax
      	fstps	(%eax)
      	ret
      
      instead of:
      
      _foo:
      	subl	$4, %esp
      	fldt	24(%esp)
      	fldt	8(%esp)
      	faddp	%st(1)
      	fstps	(%esp)
      	movl	40(%esp), %eax
      	movss	(%esp), %xmm0
      	movss	%xmm0, (%eax)
      	addl	$4, %esp
      	ret
      
      llvm-svn: 46140
      1ea55cf8
  33. Dec 29, 2007
  34. Dec 13, 2007
Loading