Skip to content
  1. Jun 15, 2009
    • Evan Cheng's avatar
      Silence a warning. · 1cf0f193
      Evan Cheng authored
      llvm-svn: 73406
      1cf0f193
    • Evan Cheng's avatar
      Part 1. · 1283c6a0
      Evan Cheng authored
      - Change register allocation hint to a pair of unsigned integers. The hint type is zero (which means prefer the register specified as second part of the pair) or entirely target dependent.
      - Allow targets to specify alternative register allocation orders based on allocation hint.
      
      Part 2.
      - Use the register allocation hint system to implement more aggressive load / store multiple formation.
      - Aggressively form LDRD / STRD. These are formed *before* register allocation. It has to be done this way to shorten live interval of base and offset registers. e.g.
      v1025 = LDR v1024, 0
      v1026 = LDR v1024, 0
      =>
      v1025,v1026 = LDRD v1024, 0
      
      If this transformation isn't done before allocation, v1024 will overlap v1025 which means it more difficult to allocate a register pair.
      
      - Even with the register allocation hint, it may not be possible to get the desired allocation. In that case, the post-allocation load / store multiple pass must fix the ldrd / strd instructions. They can either become ldm / stm instructions or back to a pair of ldr / str instructions.
      
      This is work in progress, not yet enabled.
      
      llvm-svn: 73381
      1283c6a0
    • Chris Lattner's avatar
      remove extraneous const qualifier · 8565c4be
      Chris Lattner authored
      llvm-svn: 73373
      8565c4be
    • Chris Lattner's avatar
      I got J and K backward, many thanks to Eli for spotting this! · c68a564c
      Chris Lattner authored
      llvm-svn: 73372
      c68a564c
    • Chris Lattner's avatar
      implement support for the 'K' asm constraint, PR4347 · ea3621a6
      Chris Lattner authored
      llvm-svn: 73366
      ea3621a6
    • Dan Gohman's avatar
      Fix old-style type names in comments. · 4fe64deb
      Dan Gohman authored
      llvm-svn: 73362
      4fe64deb
  2. Jun 14, 2009
  3. Jun 13, 2009
    • Sanjiv Gupta's avatar
      · c16c9470
      Sanjiv Gupta authored
      The subprogram descriptor for a function may be missing (llvm-ld linking two static functions with same name), so pick up the compilation unit for the function from the first valid debug loc of its instructions.
      This patch also emits debug info for structure (aggregate types in 
      general) types.
      
      llvm-svn: 73295
      c16c9470
    • Evan Cheng's avatar
      Add a ARM specific pre-allocation pass that re-schedule loads / stores from · 185c9ef0
      Evan Cheng authored
      consecutive addresses togther. This makes it easier for the post-allocation pass
      to form ldm / stm.
      
      This is step 1. We are still missing a lot of ldm / stm opportunities because
      of register allocation are not done in the desired order. More enhancements
      coming.
      
      llvm-svn: 73291
      185c9ef0
  4. Jun 12, 2009
  5. Jun 11, 2009
  6. Jun 10, 2009
  7. Jun 09, 2009
  8. Jun 08, 2009
  9. Jun 07, 2009
  10. Jun 06, 2009
  11. Jun 05, 2009
    • Devang Patel's avatar
      Add new function attribute - noimplicitfloat · d1c7d349
      Devang Patel authored
      Update code generator to use this attribute and remove NoImplicitFloat target option.
      Update llc to set this attribute when -no-implicit-float command line option is used.
      
      llvm-svn: 72959
      d1c7d349
    • Nate Begeman's avatar
      Adapt the x86 build_vector dagcombine to the current state of the legalizer. · 624690c6
      Nate Begeman authored
      build vectors with i64 elements will only appear on 32b x86 before legalize.
      Since vector widening occurs during legalize, and produces i64 build_vector 
      elements, the dag combiner is never run on these before legalize splits them
      into 32b elements.
      
      Teach the build_vector dag combine in x86 back end to recognize consecutive 
      loads producing the low part of the vector.
      
      Convert the two uses of TLI's consecutive load recognizer to pass LoadSDNodes
      since that was required implicitly.
      
      Add a testcase for the transform.
      
      Old:
      	subl	$28, %esp
      	movl	32(%esp), %eax
      	movl	4(%eax), %ecx
      	movl	%ecx, 4(%esp)
      	movl	(%eax), %eax
      	movl	%eax, (%esp)
      	movaps	(%esp), %xmm0
      	pmovzxwd	%xmm0, %xmm0
      	movl	36(%esp), %eax
      	movaps	%xmm0, (%eax)
      	addl	$28, %esp
      	ret
      
      New:
      	movl	4(%esp), %eax
      	pmovzxwd	(%eax), %xmm0
      	movl	8(%esp), %eax
      	movaps	%xmm0, (%eax)
      	ret
      
      llvm-svn: 72957
      624690c6
    • Evan Cheng's avatar
      Changing allocation ordering from r3 ... r0 back to r0 ... r3. The order... · 3158790e
      Evan Cheng authored
      Changing allocation ordering from r3 ... r0 back to r0 ... r3. The order change no longer make sense after the coalescing changes we have made since then.
      
      llvm-svn: 72955
      3158790e
    • Devang Patel's avatar
      Evan thinks NoImplicitFloat check is not required here. · 54707b42
      Devang Patel authored
      llvm-svn: 72954
      54707b42
Loading