Skip to content
  1. Aug 01, 2013
  2. Jul 31, 2013
    • Kevin Enderby's avatar
      Added the B9.3.19 SUBS PC, LR, #imm (Thumb2) system instruction. · 78f9572f
      Kevin Enderby authored
      While the .td entry is nice and all, it takes a pretty gross hack in
      ARMAsmParser::ParseInstruction() because of handling of other "subs"
      instructions to get it to match.  Ran it by Jim Grosbach and he said it was
      about what he expected to make this work given the existing code.
      
      rdar://14214063
      
      llvm-svn: 187530
      78f9572f
    • Tom Stellard's avatar
      Revert "R600: Non vector only instruction can be scheduled on trans unit" · ca69a53b
      Tom Stellard authored
      This reverts commit 98ce62780ea7185ba710868bf83c8077e8d7f6d6.
      
      llvm-svn: 187526
      ca69a53b
    • Vincent Lejeune's avatar
      bb3f9311
    • Vincent Lejeune's avatar
      R600: Non vector only instruction can be scheduled on trans unit · df18804e
      Vincent Lejeune authored
      llvm-svn: 187514
      df18804e
    • Matt Arsenault's avatar
      Reject bitcasts between address spaces with different sizes · 24b49c41
      Matt Arsenault authored
      llvm-svn: 187506
      24b49c41
    • Richard Sandiford's avatar
      [SystemZ] Implement isLegalAddressingMode() · 791bea41
      Richard Sandiford authored
      The loop optimizers were assuming that scales > 1 were OK.  I think this
      is actually a bug in TargetLoweringBase::isLegalAddressingMode(),
      since it seems to be trying to reject anything that isn't r+i or r+r,
      but it has no default case for scales other than 0, 1 or 2.  Implementing
      the hook for z means that z can no longer test any change there though.
      
      llvm-svn: 187497
      791bea41
    • Richard Sandiford's avatar
      [SystemZ] Be more careful about inverting CC masks (conditional loads) · ee834382
      Richard Sandiford authored
      Extend r187495 to conditional loads.  I split this out because the
      easiest way seemed to be to force a particular operand order in
      SystemZISelDAGToDAG.cpp.
      
      llvm-svn: 187496
      ee834382
    • Richard Sandiford's avatar
      [SystemZ] Be more careful about inverting CC masks · 3d768e33
      Richard Sandiford authored
      System z branches have a mask to select which of the 4 CC values should
      cause the branch to be taken.  We can invert a branch by inverting the mask.
      However, not all instructions can produce all 4 CC values, so inverting
      the branch like this can lead to some oddities.  For example, integer
      comparisons only produce a CC of 0 (equal), 1 (less) or 2 (greater).
      If an integer EQ is reversed to NE before instruction selection,
      the branch will test for 1 or 2.  If instead the branch is reversed
      after instruction selection (by inverting the mask), it will test for
      1, 2 or 3.  Both are correct, but the second isn't really canonical.
      This patch therefore keeps track of which CC values are possible
      and uses this when inverting a mask.
      
      Although this is mostly cosmestic, it fixes undefined behavior
      for the CIJNLH in branch-08.ll.  Another fix would have been
      to mask out bit 0 when generating the fused compare and branch,
      but the point of this patch is that we shouldn't need to do that
      in the first place.
      
      The patch also makes it easier to reuse CC results from other instructions.
      
      llvm-svn: 187495
      3d768e33
    • Richard Sandiford's avatar
      [SystemZ] Move compare-and-branch generation even later · 8a757bba
      Richard Sandiford authored
      r187116 moved compare-and-branch generation from the instruction-selection
      pass to the peephole optimizer (via optimizeCompare).  It turns out that even
      this is a bit too early.  Fused compare-and-branch instructions don't
      interact well with predication, where a CC result is needed.  They also
      make it harder to reuse the CC side-effects of earlier instructions
      (not yet implemented, but the subject of a later patch).
      
      Another problem was that the AnalyzeBranch family of routines weren't
      handling compares and branches, so we weren't able to reverse the fused
      form in cases where we would reverse a separate branch.  This could have
      been fixed by extending AnalyzeBranch, but given the other problems,
      I've instead moved the fusing to the long-branch pass, which is also
      responsible for the opposite transformation: splitting out-of-range
      compares and branches into separate compares and long branches.
      
      I've added a test for the AnalyzeBranch problem.  A test for the
      predication problem is included in the next patch, which fixes a bug
      in the choice of CC mask.
      
      llvm-svn: 187494
      8a757bba
    • Richard Sandiford's avatar
      [SystemZ] Postpone NI->RISBG conversion to convertToThreeAddress() · 6a06ba36
      Richard Sandiford authored
      r186399 aggressively used the RISBG instruction for immediate ANDs,
      both because it can handle some values that AND IMMEDIATE can't,
      and because it allows the destination register to be different from
      the source.  I realized later while implementing the distinct-ops
      support that it would be better to leave the choice up to
      convertToThreeAddress() instead.  The AND IMMEDIATE form is shorter
      and is less likely to be cracked.
      
      This is a problem for 32-bit ANDs because we assume that all 32-bit
      operations will leave the high word untouched, whereas RISBG used in
      this way will either clear the high word or copy it from the source
      register.  The patch uses the z196 instruction RISBLG for this instead.
      
      This means that z10 will be restricted to NILL, NILH and NILF for
      32-bit ANDs, but I think that should be OK for now.  Although we're
      using z10 as the base architecture, the optimization work is going
      to be focused more on z196 and zEC12.
      
      llvm-svn: 187492
      6a06ba36
    • Elena Demikhovsky's avatar
      Added INSERT and EXTRACT intructions from AVX-512 ISA. · 67b05fc0
      Elena Demikhovsky authored
      All insertf*/extractf* functions replaced with insert/extract since we have insertf and inserti forms.
      Added lowering for INSERT_VECTOR_ELT / EXTRACT_VECTOR_ELT for 512-bit vectors.
      Added lowering for EXTRACT/INSERT subvector for 512-bit vectors.
      Added a test.
      
      llvm-svn: 187491
      67b05fc0
    • Richard Sandiford's avatar
      [SystemZ] Add RISBLG and RISBHG instruction definitions · 6cf80b3e
      Richard Sandiford authored
      The next patch will make use of RISBLG for codegen.
      
      llvm-svn: 187490
      6cf80b3e
    • Craig Topper's avatar
      Changed register names (and pointer keywords) to be lower case when using... · efd67d46
      Craig Topper authored
      Changed register names (and pointer keywords) to be lower case when using Intel X86 assembler syntax.
      
      Patch by Richard Mitton.
      
      llvm-svn: 187476
      efd67d46
    • Owen Anderson's avatar
      c7be519d
  3. Jul 30, 2013
Loading