Skip to content
  1. Nov 19, 2009
  2. Nov 16, 2009
  3. Nov 13, 2009
  4. Nov 05, 2009
  5. Oct 25, 2009
  6. Sep 25, 2009
  7. Sep 01, 2009
    • Bruno Cardoso Lopes's avatar
      Reapply 80278 · 0f20a5b3
      Bruno Cardoso Lopes authored
      Add MO flags to simplify the printing of relocations.
      Remove the support for printing large code model relocs (which
      aren't supported anyway).
      
      llvm-svn: 80691
      0f20a5b3
  8. Aug 27, 2009
  9. Aug 23, 2009
  10. Aug 11, 2009
  11. Aug 01, 2009
  12. Jul 08, 2009
  13. Jun 03, 2009
    • Dan Gohman's avatar
      Convert Alpha and Mips to use a MachineFunctionInfo subclass to · d5ca7064
      Dan Gohman authored
      carry GlobalBaseReg, and GlobalRetAddr too in Alpha's case. This
      eliminates the need for them to search through the
      MachineRegisterInfo livein list in order to identify these
      virtual registers. EmitLiveInCopies is now the only user of the
      virtual register portion of MachineRegisterInfo's livein data.
      
      llvm-svn: 72802
      d5ca7064
  14. Jun 02, 2009
  15. Feb 05, 2009
  16. Jan 15, 2009
    • Dan Gohman's avatar
      Move a few containers out of ScheduleDAGInstrs::BuildSchedGraph · 619ef48a
      Dan Gohman authored
      and into the ScheduleDAGInstrs class, so that they don't get
      destructed and re-constructed for each block. This fixes a
      compile-time hot spot in the post-pass scheduler.
      
      To help facilitate this, tidy and do some minor reorganization
      in the scheduler constructor functions.
      
      llvm-svn: 62275
      619ef48a
  17. Dec 14, 2008
  18. Nov 05, 2008
    • Dan Gohman's avatar
      Eliminate the ISel priority queue, which used the topological order for a · f14b77eb
      Dan Gohman authored
      priority function. Instead, just iterate over the AllNodes list, which is
      already in topological order. This eliminates a fair amount of bookkeeping,
      and speeds up the isel phase by about 15% on many testcases.
      
      The impact on most targets is that AddToISelQueue calls can be simply removed.
      
      In the x86 target, there are two additional notable changes.
      
      The rule-bending AND+SHIFT optimization in MatchAddress that creates new
      pre-isel nodes during isel is now a little more verbose, but more robust.
      Instead of either creating an invalid DAG or creating an invalid topological
      sort, as it has historically done, it can now just insert the new nodes into
      the node list at a position where they will be consistent with the topological
      ordering.
      
      Also, the address-matching code has logic that checked to see if a node was
      "already selected". However, when a node is selected, it has all its uses
      taken away via ReplaceAllUsesWith or equivalent, so it won't recieve any
      further visits from MatchAddress. This code is now removed.
      
      llvm-svn: 58748
      f14b77eb
  19. Oct 27, 2008
    • David Greene's avatar
      · ce2a9381
      David Greene authored
      Have TableGen emit setSubgraphColor calls under control of a -gen-debug
      flag.  Then in a debugger developers can set breakpoints at these calls
      to see waht is about to be selected and what the resulting subgraph
      looks like.  This really helps when debugging instruction selection.
      
      llvm-svn: 58278
      ce2a9381
  20. Oct 16, 2008
  21. Oct 03, 2008
    • Dan Gohman's avatar
      Avoid creating two TargetLowering objects for each target. · 2c836cf1
      Dan Gohman authored
      Instead, just create one, and make sure everything that needs
      it can access it. Previously most of the SelectionDAGISel
      subclasses all had their own TargetLowering object, which was
      redundant with the TargetLowering object in the TargetMachine
      subclasses, except on Sparc, where SparcTargetMachine
      didn't have a TargetLowering object. Change Sparc to work
      more like the other targets here.
      
      llvm-svn: 57016
      2c836cf1
  22. Sep 16, 2008
  23. Sep 12, 2008
  24. Aug 28, 2008
  25. Aug 23, 2008
    • Dan Gohman's avatar
      Move the point at which FastISel taps into the SelectionDAGISel · eb0cee91
      Dan Gohman authored
      process up to a higher level. This allows FastISel to leverage
      more of SelectionDAGISel's infastructure, such as updating Machine
      PHI nodes.
      
      Also, implement transitioning from SDISel back to FastISel in
      the middle of a block, so it's now possible to go back and
      forth. This allows FastISel to hand individual CallInsts and other
      complicated things off to SDISel to handle, while handling the rest
      of the block itself.
      
      To help support this, reorganize the SelectionDAG class so that it
      is allocated once and reused throughout a function, instead of
      being completely reallocated for each block.
      
      llvm-svn: 55219
      eb0cee91
  26. Aug 21, 2008
  27. Jul 27, 2008
  28. Jul 17, 2008
    • Dan Gohman's avatar
      Add a new function, ReplaceAllUsesOfValuesWith, which handles bulk · 17059681
      Dan Gohman authored
      replacement of multiple values. This is slightly more efficient
      than doing multiple ReplaceAllUsesOfValueWith calls, and theoretically
      could be optimized even further. However, an important property of this
      new function is that it handles the case where the source value set and
      destination value set overlap. This makes it feasible for isel to use
      SelectNodeTo in many very common cases, which is advantageous because
      SelectNodeTo avoids a temporary node and it doesn't require CSEMap
      updates for users of values that don't change position.
      
      Revamp MorphNodeTo, which is what does all the work of SelectNodeTo, to
      handle operand lists more efficiently, and to correctly handle a number
      of corner cases to which its new wider use exposes it.
      
      This commit also includes a change to the encoding of post-isel opcodes
      in SDNodes; now instead of being sandwiched between the target-independent
      pre-isel opcodes and the target-dependent pre-isel opcodes, post-isel
      opcodes are now represented as negative values. This makes it possible
      to test if an opcode is pre-isel or post-isel without having to know
      the size of the current target's post-isel instruction set.
      
      These changes speed up llc overall by 3% and reduce memory usage by 10%
      on the InstructionCombining.cpp testcase with -fast and -regalloc=local.
      
      llvm-svn: 53728
      17059681
  29. Jul 09, 2008
  30. Jul 07, 2008
  31. Jul 05, 2008
    • Bruno Cardoso Lopes's avatar
      Several changes to Mips backend, experimental fp support being the most · c9c3f499
      Bruno Cardoso Lopes authored
      important.
      - Cleanup in the Subtarget info with addition of new features, not all support
        yet, but they allow the future inclusion of features easier. Among new features,
        we have : Arch family info (mips1, mips2, ...), ABI info (o32, eabi), 64-bit
        integer
        and float registers, allegrex vector FPU (VFPU), single float only support.
      - TargetMachine now detects allegrex core.
      - Added allegrex (Mips32r2) sext_inreg instructions.
      - *Added Float Point Instructions*, handling single float only, and
        aliased accesses for 32-bit FPUs.
      - Some cleanup in FP instruction formats and FP register classes.
      - Calling conventions improved to support mips 32-bit EABI.
      - Added Asm Printer support for fp cond codes.
      - Added support for sret copy to a return register.
      - EABI support added into LowerCALL and FORMAL_ARGS.
      - MipsFunctionInfo now keeps a virtual register per function to track the
        sret on function entry until function ret.
      - MipsInstrInfo FP support into methods (isMoveInstr, isLoadFromStackSlot, ...),
        FP cond codes mapping and initial FP Branch Analysis.
      - Two new Mips SDNode to handle fp branch and compare instructions : FPBrcond,
        FPCmp
      - MipsTargetLowering : handling different FP classes, Allegrex support, sret
        return copy, no homing location within EABI, non 32-bit stack objects
        arguments, and asm constraint for float.
      
      llvm-svn: 53146
      c9c3f499
  32. Jun 30, 2008
  33. Jun 06, 2008
    • Duncan Sands's avatar
      Wrap MVT::ValueType in a struct to get type safety · 13237ac3
      Duncan Sands authored
      and better control the abstraction.  Rename the type
      to MVT.  To update out-of-tree patches, the main
      thing to do is to rename MVT::ValueType to MVT, and
      rewrite expressions like MVT::getSizeInBits(VT) in
      the form VT.getSizeInBits().  Use VT.getSimpleVT()
      to extract a MVT::SimpleValueType for use in switch
      statements (you will get an assert failure if VT is
      an extended value type - these shouldn't exist after
      type legalization).
      This results in a small speedup of codegen and no
      new testsuite failures (x86-64 linux).
      
      llvm-svn: 52044
      13237ac3
    • Bruno Cardoso Lopes's avatar
      Added custom isel for MUL, SDIVREM, UDIVREM, SMUL_LOHI and UMUL_LOHI nodes · 1a6e0d61
      Bruno Cardoso Lopes authored
      MUL is not anymore directly matched because its a pseudoinstruction.
      LogicI class fixed to zero-extend immediates. 
      
      llvm-svn: 52036
      1a6e0d61
    • Bruno Cardoso Lopes's avatar
      Added custom SELECT_CC lowering · 4eed3afd
      Bruno Cardoso Lopes authored
      Added special isel for ADDE,SUBE and new patterns to match SUBC,ADDC
      
      llvm-svn: 52031
      4eed3afd
Loading