Skip to content
  1. Mar 17, 2013
    • Rafael Espindola's avatar
      Build LLVMgold.so on FreeBSD using cmake. · bd5bd89e
      Rafael Espindola authored
      Patch by Stephen Checkoway.
      
      llvm-svn: 177233
      bd5bd89e
    • Michael Gottesman's avatar
      The promised test case for r175939. · 97821831
      Michael Gottesman authored
      This test makes sure that the ObjCARC escape analysis looks at the uses of
      instructions which copy the block pointer value by checking all four cases where
      that can occur.
      
      llvm-svn: 177232
      97821831
    • Hal Finkel's avatar
      Improve PPC VR (Altivec) register spilling · fcc51d4f
      Hal Finkel authored
      This change cleans up two issues with Altivec register spilling:
      
        1. The spilling code was inefficient (using two instructions, and add and a
           load, when just one would do)
      
        2. The code assumed that r0 would always be available (true for now, but this
           will change)
      
      The new code handles VR spilling just like GPR spills but forced into r+r mode.
      As a result, when any VR spills are present, we must now always allocate the
      register-scavenger spill slot.
      
      llvm-svn: 177231
      fcc51d4f
    • Hal Finkel's avatar
      Remove FIXMEs in PPC test cases related to unaligned loads/stores · 57080382
      Hal Finkel authored
      As pointed out by Bill in response to r177160, these two FIXMEs
      can also be removed.
      
      llvm-svn: 177229
      57080382
  2. 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
    • Andrew Trick's avatar
      Machine model. Allow mixed itinerary classes and SchedRW lists. · bf8a28dc
      Andrew Trick authored
      We always supported a mixture of the old itinerary model and new
      per-operand model, but it required a level of indirection to map
      itinerary classes to SchedRW lists. This was done for ARM A9.
      
      Now we want to define x86 SchedRW lists, with the goal of removing its
      itinerary classes, but still support the itineraries in the mean
      time. When I original developed the model, Atom did not have
      itineraries, so there was no reason to expect this requirement.
      
      llvm-svn: 177226
      bf8a28dc
    • Sean Silva's avatar
      [docs] Discuss a potential bug to be aware of. · ca11d2c7
      Sean Silva authored
      llvm-svn: 177224
      ca11d2c7
    • Aaron Ballman's avatar
    • 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
  3. Mar 15, 2013
  4. Mar 14, 2013
    • Andrew Trick's avatar
      Fix r177112: Add ProcResGroup. · a5c747b0
      Andrew Trick authored
      This is the other half of r177122 that I meant to commit at the same time.
      
      llvm-svn: 177123
      a5c747b0
    • 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
    • Arnold Schwaighofer's avatar
      LoopVectorizer: Insert some white space to make test case more readable · 9b55e31b
      Arnold Schwaighofer authored
      Also remove some unneeded function attributes.
      
      llvm-svn: 177114
      9b55e31b
    • 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
    • Andrew Trick's avatar
      MachineModel: Add a ProcResGroup class. · 4e67cba8
      Andrew Trick authored
      This allows abitrary groups of processor resources. Using something in
      a subset automatically counts againts the superset. Currently, this
      only works if the superset is also a ProcResGroup as opposed to a
      SuperUnit.
      
      This allows SandyBridge to be expressed naturally, which will be
      checked in shortly.
      
      def SBPort01 : ProcResGroup<[SBPort0, SBPort1]>;
      def SBPort15 : ProcResGroup<[SBPort1, SBPort5]>;
      def SBPort23  : ProcResGroup<[SBPort2, SBPort3]>;
      def SBPort015 : ProcResGroup<[SBPort0, SBPort1, SBPort5]>;
      
      llvm-svn: 177112
      4e67cba8
    • 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