Skip to content
  1. Aug 29, 2012
  2. Aug 28, 2012
    • Jack Carter's avatar
      The instruction DEXT may be transformed into DEXTU or DEXTM depending · cd6b0e13
      Jack Carter authored
      on the size of the extraction and its position in the 64 bit word.
      
      This patch allows support of the dext transformations with mips64 direct
      object output.
      
      0 <= msb < 32 0 <= lsb < 32 0 <= pos < 32 1 <= size <= 32
      DINS
      The field is entirely contained in the right-most word of the doubleword
      
      32 <= msb < 64 0 <= lsb < 32 0 <= pos < 32 2 <= size <= 64
      DINSM
      The field straddles the words of the doubleword
      
      32 <= msb < 64 32 <= lsb < 64 32 <= pos < 64 1 <= size <= 32
      DINSU
      The field is entirely contained in the left-most word of the doubleword
      
      llvm-svn: 162782
      cd6b0e13
    • Jack Carter's avatar
      Some of the instructions in the Mips instruction set are revision · 551efd7f
      Jack Carter authored
      delimited. llvm-mc -disassemble access these through the -mattr
      option.
      
      llvm-objdump -disassemble had no such way to set the attribute so
      some instructions were just not recognized for disassembly.
      
      This patch accepts llvm-mc mechanism for specifying the attributes.
      
      llvm-svn: 162781
      551efd7f
    • Michael Liao's avatar
      Explicitly update the number of nodes to be traversed · 710e1a59
      Michael Liao authored
      llvm-svn: 162780
      710e1a59
    • Jack Carter's avatar
      Some instructions are passed to the assembler to be · c20a21b8
      Jack Carter authored
      transformed to the final instruction variant. An
      example would be dsrll which is transformed into 
      dsll32 if the shift value is greater than 32.
      
      For direct object output we need to do this transformation
      in the codegen. If the instruction was inside branch
      delay slot, it was being missed. This patch corrects this
      oversight.
      
      llvm-svn: 162779
      c20a21b8
    • Roman Divacky's avatar
      Emit word of zeroes after the last instruction as a start of the mandatory · 8c4b6a30
      Roman Divacky authored
      traceback table on PowerPC64. This helps gdb handle exceptions. The other
      mandatory fields are ignored by gdb and harder to implement so just add
      there a FIXME.
      
      Patch by Bill Schmidt. PR13641.
      
      llvm-svn: 162778
      8c4b6a30
    • Akira Hatanaka's avatar
      Follow-up patch to r162731. · 206cefe6
      Akira Hatanaka authored
      Fix a couple of bugs in mips' long branch pass.
      This patch was supposed to be committed along with r162731, so I don't have a
      new test case.
      
      llvm-svn: 162777
      206cefe6
    • Jakob Stoklund Olesen's avatar
      Add a MachineOperand::isTied() flag. · e56c60c5
      Jakob Stoklund Olesen authored
      While in SSA form, a MachineInstr can have pairs of tied defs and uses.
      The tied operands are used to represent read-modify-write operands that
      must be assigned the same physical register.
      
      Previously, tied operand pairs were computed from fixed MCInstrDesc
      fields, or by using black magic on inline assembly instructions.
      
      The isTied flag makes it possible to add tied operands to any
      instruction while getting rid of (some of) the inlineasm magic.
      
      Tied operands on normal instructions are needed to represent predicated
      individual instructions in SSA form. An extra <tied,imp-use> operand is
      required to represent the output value when the instruction predicate is
      false.
      
      Adding a predicate to:
      
        %vreg0<def> = ADD %vreg1, %vreg2
      
      Will look like:
      
        %vreg0<tied,def> = ADD %vreg1, %vreg2, pred:3, %vreg7<tied,imp-use>
      
      The virtual register %vreg7 is the value given to %vreg0 when the
      predicate is false. It will be assigned the same physreg as %vreg0.
      
      This commit adds the isTied flag and sets it based on MCInstrDesc when
      building an instruction. The flag is not used for anything yet.
      
      llvm-svn: 162774
      e56c60c5
    • Jakob Stoklund Olesen's avatar
      Don't allow TargetFlags on MO_Register MachineOperands. · dba99d0d
      Jakob Stoklund Olesen authored
      Register operands are manipulated by a lot of target-independent code,
      and it is not always possible to preserve target flags. That means it is
      not safe to use target flags on register operands.
      
      None of the targets in the tree are using register operand target flags.
      External targets should be using immediate operands to annotate
      instructions with operand modifiers.
      
      llvm-svn: 162770
      dba99d0d
Loading