Skip to content
  1. Jun 09, 2010
  2. Apr 05, 2010
    • Jakob Stoklund Olesen's avatar
      Replace TSFlagsFields and TSFlagsShifts with a simpler TSFlags field. · b93331f3
      Jakob Stoklund Olesen authored
      When a target instruction wants to set target-specific flags, it should simply
      set bits in the TSFlags bit vector defined in the Instruction TableGen class.
      
      This works well because TableGen resolves member references late:
      
      class I : Instruction {
        AddrMode AM = AddrModeNone;
        let TSFlags{3-0} = AM.Value;
      }
      
      let AM = AddrMode4 in
      def ADD : I;
      
      TSFlags gets the expected bits from AddrMode4 in this example.
      
      llvm-svn: 100384
      b93331f3
  3. Mar 25, 2010
  4. Mar 19, 2010
  5. Feb 10, 2010
  6. Feb 09, 2010
  7. Jan 15, 2010
  8. Jan 09, 2010
  9. Oct 29, 2009
  10. Oct 01, 2009
    • Evan Cheng's avatar
      Add instruction flags: hasExtraSrcRegAllocReq and hasExtraDefRegAllocReq. When · 46668e09
      Evan Cheng authored
      set, these flags indicate the instructions source / def operands have special
      register allocation requirement that are not captured in their register classes.
      Post-allocation passes (e.g. post-alloc scheduler) should not change their
      allocations. e.g. ARM::LDRD require the two definitions to be allocated
      even / odd register pair.
      
      llvm-svn: 83196
      46668e09
  11. Sep 28, 2009
  12. Aug 24, 2009
  13. Jul 29, 2009
  14. Jul 03, 2009
  15. Apr 13, 2009
    • Dan Gohman's avatar
      Rename COPY_TO_SUBCLASS to COPY_TO_REGCLASS, and generalize · 6c142630
      Dan Gohman authored
      it accordingly. Thanks to Jakob Stoklund Olesen for pointing
      out how this might be useful.
      
      llvm-svn: 68986
      6c142630
    • Dan Gohman's avatar
      Add a new TargetInstrInfo MachineInstr opcode, COPY_TO_SUBCLASS. · 60a446ab
      Dan Gohman authored
      This will be used to replace things like X86's MOV32to32_.
      
      Enhance ScheduleDAGSDNodesEmit to be more flexible and robust
      in the presense of subregister superclasses and subclasses. It
      can now cope with the definition of a virtual register being in
      a subclass of a use.
      
      Re-introduce the code for recording register superreg classes and
      subreg classes. This is needed because when subreg extracts and
      inserts get coalesced away, the virtual registers are left in
      the correct subclass.
      
      llvm-svn: 68961
      60a446ab
  16. Dec 03, 2008
  17. Oct 17, 2008
  18. Jul 01, 2008
    • Dan Gohman's avatar
      Split ISD::LABEL into ISD::DBG_LABEL and ISD::EH_LABEL, eliminating · fb19f940
      Dan Gohman authored
      the need for a flavor operand, and add a new SDNode subclass,
      LabelSDNode, for use with them to eliminate the need for a label id
      operand.
      
      Change instruction selection to let these label nodes through
      unmodified instead of creating copies of them. Teach the MachineInstr
      emitter how to emit a MachineInstr directly from an ISD label node.
      
      This avoids the need for allocating SDNodes for the label id and
      flavor value, as well as SDNodes for each of the post-isel label,
      label id, and label flavor.
      
      llvm-svn: 52943
      fb19f940
  19. May 31, 2008
    • Dan Gohman's avatar
      Teach the DAGISelEmitter to not compute the variable_ops operand · bd3390c7
      Dan Gohman authored
      index for the input pattern in terms of the output pattern. Instead
      keep track of how many fixed operands the input pattern actually
      has, and have the input matching code pass the output-emitting
      function that index value. This simplifies the code, disentangles
      variables_ops from the support for predication operations, and
      makes variable_ops more robust.
      
      llvm-svn: 51808
      bd3390c7
  20. May 29, 2008
    • Dan Gohman's avatar
      Fix a tblgen problem handling variable_ops in tblgen instruction · 6e582c44
      Dan Gohman authored
      definitions. This adds a new construct, "discard", for indicating
      that a named node in the input matching pattern is to be discarded,
      instead of corresponding to a node in the output pattern. This
      allows tblgen to know where the arguments for the varaible_ops are
      supposed to begin.
      
      This fixes "rdar://5791600", whatever that is ;-).
      
      llvm-svn: 51699
      6e582c44
    • Bill Wendling's avatar
      Add a flag to indicate that an instruction is as cheap (or cheaper) than a move · 3f6bb271
      Bill Wendling authored
      instruction to execute. This can be used for transformations (like two-address
      conversion) to remat an instruction instead of generating a "move"
      instruction. The idea is to decrease the live ranges and register pressure and
      all that jazz.
      
      llvm-svn: 51660
      3f6bb271
  21. Apr 03, 2008
    • Dan Gohman's avatar
      Move instruction flag inference out of InstrInfoEmitter and into · fc4ad7de
      Dan Gohman authored
      CodeGenDAGPatterns, where it can be used in other tablegen backends.
      This allows the inference to be done for DAGISelEmitter so that it
      gets accurate mayLoad/mayStore/isSimpleLoad flags. 
      
      This brings MemOperand functionality back to where it was before
      48329. However, it doesn't solve the problem of anonymous patterns
      which expand to code that does loads or stores.
      
      llvm-svn: 49123
      fc4ad7de
  22. Mar 16, 2008
  23. Mar 15, 2008
  24. Feb 02, 2008
    • Evan Cheng's avatar
      SDIsel processes llvm.dbg.declare by recording the variable debug information... · efd142a9
      Evan Cheng authored
      SDIsel processes llvm.dbg.declare by recording the variable debug information descriptor and its corresponding stack frame index in MachineModuleInfo. This only works if the local variable is "homed" in the stack frame. It does not work for byval parameter, etc.
      Added ISD::DECLARE node type to represent llvm.dbg.declare intrinsic. Now the intrinsic calls are lowered into a SDNode and lives on through out the codegen passes.
      For now, since all the debugging information recording is done at isel time, when a ISD::DECLARE node is selected, it has the side effect of also recording the variable. This is a short term solution that should be fixed in time.
      
      llvm-svn: 46659
      efd142a9
  25. Jan 11, 2008
    • Chris Lattner's avatar
      Simplify the side effect stuff a bit more and make licm/sinking · c8226f32
      Chris Lattner authored
      both work right according to the new flags.
      
      This removes the TII::isReallySideEffectFree predicate, and adds
      TII::isInvariantLoad. 
      
      It removes NeverHasSideEffects+MayHaveSideEffects and adds
      UnmodeledSideEffects as machine instr flags.  Now the clients
      can decide everything they need.
      
      I think isRematerializable can be implemented in terms of the
      flags we have now, though I will let others tackle that.
      
      llvm-svn: 45843
      c8226f32
  26. Jan 10, 2008
Loading