Skip to content
  1. Mar 18, 2013
  2. Mar 17, 2013
  3. Mar 16, 2013
    • Hal Finkel's avatar
      Remove PPC avoidWriteAfterWrite callback · 8b047039
      Hal Finkel authored
      As a follow-up to r158719, remove PPCRegisterInfo::avoidWriteAfterWrite.
      Jakob pointed out in response to r158719 that this callback is currently unused
      and so this has no effect (and the speedups that I thought that I had observed
      as a result of implementing this function must have been noise).
      
      llvm-svn: 177228
      8b047039
    • Andrew Trick's avatar
      Change the default latency for implicit defs. · 6057017c
      Andrew Trick authored
      Implicit defs are not currently positional and not modeled by the
      per-operand machine model. Unfortunately, we treat defs that are part
      of the architectural instruction description, like flags, the same as
      other implicit defs. Really, they should have a fixed MachineInstr
      layout and probably shouldn't be "implicit" at all.
      
      For now, we'll change the default latency to be the max operand
      latency. That will give flag setting operands full latency for x86
      folded loads. Other kinds of "fake" implicit defs don't occur prior to
      regalloc anyway, and we would like them to go away postRegAlloc as
      well.
      
      llvm-svn: 177227
      6057017c
    • Craig Topper's avatar
      Add X86 code emitter support AVX encoded MRMDestReg instructions. · 612f7bfa
      Craig Topper authored
      Previously we weren't skipping the VVVV encoded register. Based on patch by Michael Liao.
      
      llvm-svn: 177221
      612f7bfa
    • Jakob Stoklund Olesen's avatar
      Define more SchedWrites for annotating X86 instructions. · 63bff2eb
      Jakob Stoklund Olesen authored
      Since almost all X86 instructions can fold loads, use a multiclass to
      define register/memory pairs of SchedWrites.
      
      An X86FoldableSchedWrite represents the register version of an
      instruction. It holds a reference to the SchedWrite to use when the
      instruction folds a load.
      
      This will be used inside multiclasses that define rr and rm instruction
      versions together.
      
      llvm-svn: 177210
      63bff2eb
  4. Mar 15, 2013
  5. Mar 14, 2013
    • Jakob Stoklund Olesen's avatar
      Prepare for adding InstrSchedModel annotations to X86 instructions. · 71236682
      Jakob Stoklund Olesen authored
      The new InstrSchedModel is easier to use than the instruction
      itineraries. It will be used to model instruction latency and throughput
      in modern Intel microarchitectures like Sandy Bridge.
      
      InstrSchedModel should be able to coexist with instruction itinerary
      classes, but for cleanliness we should switch the Atom processor model
      to the new InstrSchedModel as well.
      
      llvm-svn: 177122
      71236682
    • Reed Kotler's avatar
      Add a new method which enables one to change register classes. · fafaa9d9
      Reed Kotler authored
      See the Mips16ISetLowering.cpp patch to see a use of this.
      For now now the extra code in Mips16ISetLowering.cpp is a nop but is
      used for test purposes. Mips32 registers are setup and then removed and
      then the Mips16 registers are setup. 
      
      Normally you need to add register classes and then call
      computeRegisterProperties.
      
      llvm-svn: 177120
      fafaa9d9
    • Chad Rosier's avatar
      [fast-isel] The X86FastISel::FastLowerArguments function doesn't properly handle · 4b54f594
      Chad Rosier authored
      the win64 calling convention.
      rdar://13423768
      
      llvm-svn: 177113
      4b54f594
    • Hal Finkel's avatar
      Move estimateStackSize from ARM into MachineFrameInfo · 628ba128
      Hal Finkel authored
      This is a generic function (derived from PEI); moving it into
      MachineFrameInfo eliminates a current redundancy between the ARM and AArch64
      backends, and will allow it to be used by the PowerPC target code.
      
      No functionality change intended.
      
      llvm-svn: 177111
      628ba128
    • Hal Finkel's avatar
      Provide the register scavenger to processFunctionBeforeFrameFinalized · 5a765fdd
      Hal Finkel authored
      Add the current PEI register scavenger as a parameter to the
      processFunctionBeforeFrameFinalized callback.
      
      This change is necessary in order to allow the PowerPC target code to
      set the register scavenger frame index after the save-area offset
      adjustments performed by processFunctionBeforeFrameFinalized. Only
      after these adjustments have been made is it possible to estimate
      the size of the stack frame.
      
      llvm-svn: 177108
      5a765fdd
    • Hal Finkel's avatar
      Use frame-index scavenging for PPC register spilling · ad26f4de
      Hal Finkel authored
      Make requiresFrameIndexScavenging return true, and create virtual registers in
      the spilling code instead of using the register scavenger directly. This makes
      the target-level code simpler, and importantly, delays the scavenging until
      after callee-saved register processing (which will be important for later
      changes).
      
      Also cleans up trackLivenessAfterRegAlloc (makes it inline in the header with
      the other related functions). This makes it clear that it always returns true.
      
      No functionality change intended.
      
      llvm-svn: 177107
      ad26f4de
    • Hal Finkel's avatar
      Not all PPC functions with a frame pointer need a RS spill slot · e987a311
      Hal Finkel authored
      We used to add a spill slot for the register scavenger whenever the function
      has a frame pointer. This is unnecessarily conservative: We may need the spill
      slot for dynamic stack allocations, and functions with dynamic stack
      allocations always have a FP, but we might also have a FP for other reasons
      (such as the user explicitly disabling frame-pointer elimination), and we don't
      necessarily need a spill slot for those functions.
      
      The structsinregs test needed adjustment because it disables FP elimination.
      
      llvm-svn: 177106
      e987a311
Loading