Skip to content
  1. Aug 02, 2013
  2. Aug 01, 2013
    • Bill Wendling's avatar
      Use function attributes to indicate that we don't want to realign the stack. · a5c536e1
      Bill Wendling authored
      Function attributes are the future! So just query whether we want to realign the
      stack directly from the function instead of through a random target options
      structure.
      
      llvm-svn: 187618
      a5c536e1
    • Daniel Malea's avatar
      Fixed the Intel-syntax X86 disassembler to respect the (existing) option for... · a3d4245a
      Daniel Malea authored
      Fixed the Intel-syntax X86 disassembler to respect the (existing) option for hexadecimal immediates, to match AT&T syntax. This also brings a new option for C-vs-MASM-style hex.
      
      Patch by Richard Mitton
      Reviewed: http://llvm-reviews.chandlerc.com/D1243
      
      llvm-svn: 187614
      a3d4245a
    • Reed Kotler's avatar
      Fix some issues with Mips16 floating when certain intrinsics are present. · 83f879dd
      Reed Kotler authored
      This is actually an LLVM bug in the way it generates signatures for these
      when soft float is enabled. For example, floor ends up having the signature
      of int64(int64). The signature part is not the same as where the actual
      parameter types are recorded, and those ARE of course int64(int64) when
      soft float is enabled. (Yes, Mips16 hard float uses soft float but with
      different runtime rounes but then has to interoperate with Mips32 using
      normal floating point). This logic will eventually be moved to the 
      Mips16HardFloat pass so it's not worth sorting out these issues in LLVM
      since nobody but Mips16 cares about these signatures, as far as I know,
      and even I won't eventually either.
      
      llvm-svn: 187613
      83f879dd
    • Manman Ren's avatar
      Debug Info Finder|Verifier: handle DbgLoc attached to instructions. · 4c065e77
      Manman Ren authored
      Also remove checking of llvm.dbg.sp since it is not used in generating dwarf.
      
      Current state of Finder:
      DebugInfoFinder tries to list all debug info MDNodes used in a module. To
      list debug info MDNodes used by an instruction, DebugInfoFinder provides
      processDeclare, processValue and processLocation to handle DbgDeclareInst,
      DbgValueInst and DbgLoc attached to instructions. processModule will go
      through all DICompileUnits in llvm.dbg.cu and list debug info MDNodes
      used by the CUs.
      
      TODO:
      1> Finder has a list of CUs, SPs, Types, Scopes and global variables. We
      need to add a list of variables that are used by DbgDeclareInst and
      DbgValueInst.
      2> MDString fields should be null or isa<MDString> and MDNode fields should be
      null or isa<MDNode>. We currently use empty string or int 0 to represent null.
      3> Go though Verify functions and make sure that they check field types.
      4> Clean up existing testing cases to remove llvm.dbg.sp and make sure each
      testing case has a llvm.dbg.cu.
      
      llvm-svn: 187609
      4c065e77
    • David Blaikie's avatar
      DebugInfo: Emit definitions for types with no members. · a1ae0e6e
      David Blaikie authored
      The absence of members was a poor/incorrect proxy for "is definition".
      
      llvm-svn: 187607
      a1ae0e6e
    • Carlo Kok's avatar
      Bugfix for making the DWARF debug strings and labels to code emitted as... · afcc6202
      Carlo Kok authored
      Bugfix for making the DWARF debug strings and labels to code emitted as secrel32 instead of long opcodes (only for coff). This makes them debuggable with GDB.
      
      fixes Bug 16249 - LLVM generates broken debug info on Windows 
      
      llvm-svn: 187597
      afcc6202
    • Nadav Rotem's avatar
      Only enable SLP-vectorization on O3 builds. · 9153b387
      Nadav Rotem authored
      llvm-svn: 187595
      9153b387
    • Tom Stellard's avatar
      R600: Add 64-bit float load/store support · 0344cdfe
      Tom Stellard authored
      
      
      * Added R600_Reg64 class
      * Added T#Index#.XY registers definition
      * Added v2i32 register reads from parameter and global space
      * Added f32 and i32 elements extraction from v2f32 and v2i32
      * Added v2i32 -> v2f32 conversions
      
      Tom Stellard:
        - Mark vec2 operations as expand.  The addition of a vec2 register
          class made them all legal.
      
      Patch by: Dmitry Cherkassov
      
      Signed-off-by: default avatarDmitry Cherkassov <dcherkassov@gmail.com>
      llvm-svn: 187582
      0344cdfe
    • Tom Stellard's avatar
      R600: Use 64-bit alignment for 64-bit kernel arguments · 53698938
      Tom Stellard authored
      llvm-svn: 187581
      53698938
    • Tom Stellard's avatar
      R600/SI: Custom lower i64 ZERO_EXTEND · 98f675a9
      Tom Stellard authored
      llvm-svn: 187580
      98f675a9
    • Elena Demikhovsky's avatar
      EVEX and compressed displacement encoding for AVX512 · b1266b54
      Elena Demikhovsky authored
      llvm-svn: 187576
      b1266b54
    • Richard Sandiford's avatar
      [SystemZ] Reuse CC results for integer comparisons with zero · fd7f4ae6
      Richard Sandiford authored
      This also fixes a bug in the predication of LR to LOCR: I'd forgotten
      that with these in-place instruction builds, the implicit operands need
      to be added manually.  I think this was latent until now, but is tested
      by int-cmp-45.c.  It also adds a CC valid mask to STOC, again tested by
      int-cmp-45.c.
      
      llvm-svn: 187573
      fd7f4ae6
    • Richard Sandiford's avatar
      [SystemZ] Prefer comparisons with zero · a075708a
      Richard Sandiford authored
      Convert >= 1 to > 0, etc.  Using comparison with zero isn't a win on its own,
      but it exposes more opportunities for CC reuse (the next patch).
      
      llvm-svn: 187571
      a075708a
    • Vladimir Medic's avatar
      Moving definition of MnemonicContainsDot field from class Instruction to class... · d3dade29
      Vladimir Medic authored
      Moving definition of MnemonicContainsDot field from class Instruction to class AsmParser as suggested.
      
      llvm-svn: 187569
      d3dade29
    • Tim Northover's avatar
      AArch64: add initial NEON support · 40e9efd7
      Tim Northover authored
      Patch by Ana Pazos.
      
      - Completed implementation of instruction formats:
      AdvSIMD three same
      AdvSIMD modified immediate
      AdvSIMD scalar pairwise
      
      - Completed implementation of instruction classes
      (some of the instructions in these classes
      belong to yet unfinished instruction formats):
      Vector Arithmetic
      Vector Immediate
      Vector Pairwise Arithmetic
      
      - Initial implementation of instruction formats:
      AdvSIMD scalar two-reg misc
      AdvSIMD scalar three same
      
      - Intial implementation of instruction class:
      Scalar Arithmetic
      
      - Initial clang changes to support arm v8 intrinsics.
      Note: no clang changes for scalar intrinsics function name mangling yet.
      
      - Comprehensive test cases for added instructions
      To verify auto codegen, encoding, decoding, diagnosis, intrinsics.
      
      llvm-svn: 187567
      40e9efd7
    • Robert Lytton's avatar
      XCore target: Fix Vararg handling · 4be00f8a
      Robert Lytton authored
      llvm-svn: 187565
      4be00f8a
    • Robert Lytton's avatar
      XCore target: Add byval handling · 4e60a3f4
      Robert Lytton authored
      llvm-svn: 187563
      4e60a3f4
    • Robert Lytton's avatar
      Xcore target · b4787a15
      Robert Lytton authored
      Fix emitArrayBound() calling OutStreamer.Emit*() multiple times when trying to print a single line
      
      llvm-svn: 187562
      b4787a15
    • Reed Kotler's avatar
      Fix some misc. issues with Mips16 fp stubs. · 302ae6b0
      Reed Kotler authored
      1) They should never be inlined.
      2) A naming inconsistency with gcc mips16
      3) Stubs should not have the global attribute
      
      llvm-svn: 187555
      302ae6b0
    • Reed Kotler's avatar
      Add an omitted IsCall=1. · fd132b99
      Reed Kotler authored
      llvm-svn: 187553
      fd132b99
    • Hans Wennborg's avatar
      Option parsing: add support for alias arguments. · 5fdcf868
      Hans Wennborg authored
      This makes option aliases more powerful by enabling them to
      pass along arguments to the option they're aliasing.
      
      For example, if we have a joined option "-foo=", we can now
      specify a flag option "-bar" to be an alias of that, with the
      argument "baz".
      
      This is especially useful for the cl.exe compatible clang driver,
      where many options are aliases. For example, this patch enables
      us to alias "/Ox" to "-O3" (-O is a joined option), and "/WX" to
      "-Werror" (again, -W is a joined option).
      
      Differential Revision: http://llvm-reviews.chandlerc.com/D1245
      
      llvm-svn: 187537
      5fdcf868
    • Nadav Rotem's avatar
      80-col · 25f15358
      Nadav Rotem authored
      llvm-svn: 187535
      25f15358
  3. 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
    • Tom Stellard's avatar
      Revert "R600: Use SchedModel enum for is{Trans,Vector}Only functions" · 4dd41845
      Tom Stellard authored
      This reverts commit 3f1de26cb5cc0543a6a1d71259a7a39d97139051.
      
      llvm-svn: 187524
      4dd41845
    • Vincent Lejeune's avatar
      R600: Do not mergevector after a vector reg is used · 220db748
      Vincent Lejeune authored
      If we merge vector when a vector is used, it will generate an artificial
      antidependency that can prevent 2 tex/vtx instructions to use the same
      clause and thus generate extra clauses that reduce performance.
      
      There is no test case as such situation is really hard to predict.
      
      llvm-svn: 187516
      220db748
    • 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
    • Vincent Lejeune's avatar
      R600: Don't mix LDS and non-LDS instructions in the same group · 21de8baa
      Vincent Lejeune authored
      There are a lot of restrictions on instruction groups that contain
      LDS instructions, so for now we will be conservative and not packetize
      anything else with them.
      
      llvm-svn: 187513
      21de8baa
    • Vincent Lejeune's avatar
      R600: Use SchedModel enum for is{Trans,Vector}Only functions · 79afe17e
      Vincent Lejeune authored
      llvm-svn: 187512
      79afe17e
    • Vincent Lejeune's avatar
      R600: Remove predicated_break inst · 0c5ed2b4
      Vincent Lejeune authored
      We were using two instructions for similar purpose : break and
      predicated break. Only predicated_break was emitted and it was
      lowered at R600ControlFlowFinalizer to JUMP;CF_BREAK;POP.
      This commit simplify the situation by making AMDILCFGStructurizer
      emit IF_PREDICATE;BREAK;ENDIF; instead of predicated_break (which
      is now removed).
      
      There is no functionality change.
      
      llvm-svn: 187510
      0c5ed2b4
    • 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
    • Elena Demikhovsky's avatar
      Fixed assertion in Extract128BitVector() · b0a75431
      Elena Demikhovsky authored
      llvm-svn: 187493
      b0a75431
    • 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
Loading