Skip to content
  1. Jan 07, 2015
    • Kevin Enderby's avatar
      Slightly refactor things for llvm-objdump and the -macho option so it can be used with · e2297ddd
      Kevin Enderby authored
      options other than just -disassemble so that universal files can be used with other
      options combined with -arch options.
      
      No functional change to existing options and use.  One test case added for the
      additional functionality with a universal file an a -arch option.
      
      llvm-svn: 225383
      e2297ddd
    • Tom Stellard's avatar
      R600/SI: Remove VReg_32 register class · 45c0b3a8
      Tom Stellard authored
      Use VGPR_32 register class instead.  These two register classes were
      identical and having separate classes was causing
      SIInstrInfo::isLegalOperands() to be overly conservative in some cases.
      
      This change is necessary to prevent future paches from missing a folding
      opportunity in fneg-fabs.ll.
      
      llvm-svn: 225382
      45c0b3a8
    • Olivier Sallenave's avatar
      More FMA folding opportunities. · 04515329
      Olivier Sallenave authored
      llvm-svn: 225380
      04515329
    • Adrian Prantl's avatar
      Reapply: Teach SROA how to update debug info for fragmented variables. · 72b8ee70
      Adrian Prantl authored
      The two buildbot failures were addressed in LLVM r225378 and CFE r225359.
      
      This rapplies commit 225272 without modifications.
      
      llvm-svn: 225379
      72b8ee70
    • Adrian Prantl's avatar
      Debug info: Allow aggregate types to be described by constants. · 3dd48c6f
      Adrian Prantl authored
      llvm-svn: 225378
      3dd48c6f
    • Colin LeMahieu's avatar
      [Hexagon] Fix 225372 USR register is not fully complete. Removing Uses =... · 92b49c3e
      Colin LeMahieu authored
      [Hexagon] Fix 225372 USR register is not fully complete.  Removing Uses = [USR] maintains existing functionality to old instructions without encodings.
      
      llvm-svn: 225377
      92b49c3e
    • Colin LeMahieu's avatar
      [Hexagon] Adding floating point classification and creation. · 627df427
      Colin LeMahieu authored
      llvm-svn: 225374
      627df427
    • Tom Stellard's avatar
      R600/SI: Add a V_MOV_B64 pseudo instruction · 4842c052
      Tom Stellard authored
      This is used to simplify the SIFoldOperands pass and make it easier to
      fold immediates.
      
      llvm-svn: 225373
      4842c052
    • Colin LeMahieu's avatar
      [Hexagon] Adding encodings for v5 floating point instructions. · 290ece7d
      Colin LeMahieu authored
      llvm-svn: 225372
      290ece7d
    • Colin LeMahieu's avatar
      777abcb1
    • Tom Stellard's avatar
      R600/SI: Teach SIFoldOperands to split 64-bit constants when folding · ef3b864a
      Tom Stellard authored
      This allows folding of sequences like:
      
      s[0:1] = s_mov_b64 4
      v_add_i32 v0, s0, v0
      v_addc_u32 v1, s1, v1
      
      into
      
      v_add_i32 v0, 4, v0
      v_add_i32 v1, 0, v1
      
      llvm-svn: 225369
      ef3b864a
    • Olivier Sallenave's avatar
      Test commit · e64ad7ce
      Olivier Sallenave authored
      llvm-svn: 225368
      e64ad7ce
    • Ahmed Bougacha's avatar
      [X86] Fix 512->256 typo in comments. NFC. · b994d0c0
      Ahmed Bougacha authored
      llvm-svn: 225367
      b994d0c0
    • Philip Reames's avatar
      Add a missing file from 225365 · 352fb937
      Philip Reames authored
      llvm-svn: 225366
      352fb937
    • Philip Reames's avatar
      Introduce an example statepoint GC strategy · 4ac17a30
      Philip Reames authored
      This change includes the most basic possible GCStrategy for a GC which is using the statepoint lowering code. At the moment, this GCStrategy doesn't really do much - aside from actually generate correct stackmaps that is - but I went ahead and added a few extra correctness checks as proof of concept. It's mostly here to provide documentation on how to do one, and to provide a point for various optimization legality hooks I'd like to add going forward. (For context, see the TODOs in InstCombine around gc.relocate.)
      
      Most of the validation logic added here as proof of concept will soon move in to the Verifier.  That move is dependent on http://reviews.llvm.org/D6811
      
      There was discussion in the review thread about addrspace(1) being reserved for something.  I'm going to follow up on a seperate llvmdev thread.  If needed, I'll update all the code at once.
      
      Note that I am deliberately not making a GCStrategy required to use gc.statepoints with this change. I want to give folks out of tree - including myself - a chance to migrate. In a week or two, I'll make having a GCStrategy be required for gc.statepoints. To this end, I added the gc tag to one of the test cases but not others.
      
      Differential Revision: http://reviews.llvm.org/D6808
      
      llvm-svn: 225365
      4ac17a30
    • Ahmed Bougacha's avatar
      [CodeGen] Add MVT::FIRST_VALUETYPE to avoid explicit 0. NFC. · a776a932
      Ahmed Bougacha authored
      Many places reference MVT::LAST_VALUETYPE when iterating over all
      valid MVTs, but they usually start with 0.
      With FIRST_VALUETYPE, we can avoid explicit constants when we really
      should be using MVT::SimpleValueType.
      
      llvm-svn: 225362
      a776a932
    • David Majnemer's avatar
      X86: Allow the stack probe size to be configurable per function · 4d77fdf3
      David Majnemer authored
      LLVM emits stack probes on Windows targets to ensure that the stack is
      correctly accessed.  However, the amount of stack allocated before
      emitting such a probe is hardcoded to 4096.
      
      It is desirable to have this be configurable so that a function might
      opt-out of stack probes.  Our level of granularity is at the function
      level instead of, say, the module level to permit proper generation of
      code after LTO.
      
      Patch by Andrew H!
      
      N.B.  The inliner needs to be updated to properly consider what happens
      after inlining a function with a specific stack-probe-size into another
      function with a different stack-probe-size.
      
      llvm-svn: 225360
      4d77fdf3
    • Tom Stellard's avatar
      R600/SI: Refactor SIFoldOperands to simplify immediate folding · bb763e6b
      Tom Stellard authored
      This will make a future patch much less intrusive.
      
      llvm-svn: 225358
      bb763e6b
    • Ahmed Bougacha's avatar
      [X86] Teach FCOPYSIGN lowering to recognize constant magnitudes. · aa2d2909
      Ahmed Bougacha authored
      For code like:
          float foo(float x) { return copysign(1.0, x); }
      We used to generate:
          andps  <-0.000000e+00,0,0,0>, %xmm0
          movss  <1.000000e+00>, %xmm1
          andps  <nan>, %xmm1
          orps   %xmm0, %xmm1
      Basically doing an abs(1.0f) in the two middle instructions.
      
      We now generate:
          andps  <-0.000000e+00,0,0,0>, %xmm0
          orps   <1.000000e+00,0,0,0>, %xmm0
      
      Builds on cleanups r223415, r223542.
      rdar://19049548
      Differential Revision: http://reviews.llvm.org/D6555
      
      llvm-svn: 225357
      aa2d2909
    • Rafael Espindola's avatar
      Improvements to emacs packages for llvm and tablegen mode. · 94c60cd0
      Rafael Espindola authored
      * Both files have valid package headers and footers (you can verify
      with M-x checkdoc).
      * Fixed style warnings generated by checkdoc.
      * Fixed a byte-compiler warning in llvm-mode.el.
      * Ensure that the modes are autoloaded, so users do not need to
      (require 'llvm-mode) to use them.
      
      Patch by Wilfred Hughes.
      
      llvm-svn: 225356
      94c60cd0
    • Aaron Ballman's avatar
      Reverting r225319; since there is a folder named Examples, attempting to add a... · d2e43421
      Aaron Ballman authored
      Reverting r225319; since there is a folder named Examples, attempting to add a target of the same name causes problems for IDEs like Visual Studio.
      
      llvm-svn: 225355
      d2e43421
    • Aaron Ballman's avatar
      Manually specify the folder that Kaleidescope should reside in for... · 1ec24c6a
      Aaron Ballman authored
      Manually specify the folder that Kaleidescope should reside in for CMake-produced solutions that care about such things (like MSVC). This takes the Kaleidescope target out of the root solution folder and places it into the Examples folder where it belongs.
      
      llvm-svn: 225354
      1ec24c6a
    • Aaron Ballman's avatar
      Manually specify the folder that llvm-ranlib should reside in for... · f307b11c
      Aaron Ballman authored
      Manually specify the folder that llvm-ranlib should reside in for CMake-produced solutions that care about such things (like MSVC). This takes llvm-ranlib out of the root solution folder and places it into the Tools folder where it belongs.
      
      llvm-svn: 225353
      f307b11c
    • Jonas Paulsson's avatar
      New method SDep::isNormalMemoryOrBarrier() in ScheduleDAGInstrs.cpp. · fcf0cba8
      Jonas Paulsson authored
      Used to iterate over previously added memory dependencies in
      adjustChainDeps() and iterateChainSucc().
      
      SDep::isCtrl() was previously used in these places, that also gave
      anti and output edges. The code may be worse if these are followed,
      because MisNeedChainEdge() will conservatively return true since a
      non-memory instruction has no memory operands, and a false chain dep
      will be added. It is also unnecessary since all memory accesses of
      interest will be reached by memory dependencies, and there is a budget
      limit for the number of edges traversed.
      
      This problem was found on an out-of-tree target with enabled alias
      analysis. No test case for an in-tree target has been found.
      
      Reviewed by Hal Finkel.
      
      llvm-svn: 225351
      fcf0cba8
    • Jonas Paulsson's avatar
      Fix typos in comment and option help texts. · bf408bbe
      Jonas Paulsson authored
      For -enable-aa-sched-mi and -use-tbaa-in-sched-mi.
      
      llvm-svn: 225350
      bf408bbe
    • Charlie Turner's avatar
      [ARM] Add missing Tag_DIV_use tests. · 06f22f46
      Charlie Turner authored
      llvm-svn: 225348
      06f22f46
    • Asiri Rathnayake's avatar
      Fix regression in r225266. · 77436f84
      Asiri Rathnayake authored
      The change in r225266 was reviewed under D6722. But the commit r225266 has a
      typo, causing some MCHammer failures. This patch fixes it.
      
      Change-Id: I573efcff25003af7478ac02548ebbe929fc7f5fd
      llvm-svn: 225347
      77436f84
    • Chandler Carruth's avatar
      [PM] Give slightly less horrible names to the utility pass templates for · e5b0a9cf
      Chandler Carruth authored
      requiring and invalidating specific analyses. Also make their printed
      names match their class names. Writing these out as prose really doesn't
      make sense to me any more.
      
      llvm-svn: 225346
      e5b0a9cf
    • Craig Topper's avatar
      [X86] Merge a switch statement inside a default case of another switch... · 39354e1b
      Craig Topper authored
      [X86] Merge a switch statement inside a default case of another switch statement on the same variable. There was no additional code in the default so this should be no functional change.
      
      llvm-svn: 225345
      39354e1b
    • Craig Topper's avatar
      [X86] Don't mark the shift by 1 instructions as isConvertibleToThreeAddress.... · 8b3c47ca
      Craig Topper authored
      [X86] Don't mark the shift by 1 instructions as isConvertibleToThreeAddress. There is no handling for them.
      
      llvm-svn: 225344
      8b3c47ca
    • Craig Topper's avatar
      [X86] Remove some unused TYPE enums from the disassembler. · 23fa4787
      Craig Topper authored
      llvm-svn: 225343
      23fa4787
    • Karthik Bhat's avatar
      Revert r225165 and r225169 · 9ba55334
      Karthik Bhat authored
      Even thouh gcc produces simialr instructions as Owen pointed out the two patterns aren’t equivalent in the case
      where the original subtraction could have caused an overflow.
      Reverting the same.
      
      llvm-svn: 225341
      9ba55334
    • Ahmed Bougacha's avatar
      [ADT][SmallVector] Flip an assert comparison to avoid overflows yielding false-negatives. NFC. · c7db7f04
      Ahmed Bougacha authored
      r221973 changed SmallVector::operator[] to use size_t instead of unsigned.
      
      Before that, on 64bit platforms, when a large index (say -1) was passed,
      truncating it to unsigned avoided an overflow when computing 'begin() + idx',
      and failed the range checking assertion, as expected.
      With r221973, idx isn't truncated, so the addition wraps to
      '(char*)begin() - 1', and doesn't fire anymore when it should have done so.
      
      This commit changes the comparison to instead compute 'end() - begin()'
      (i.e., 'size()'), which avoids potentially overflowing additions, and
      correctly triggers the assertion when values such as -1 are passed.
      Note that the problem already existed before that revision, on platforms
      where sizeof(size_t) == sizeof(unsigned).
      
      llvm-svn: 225338
      c7db7f04
    • Duncan P. N. Exon Smith's avatar
      IR: Remove MDNode::getWhenValsUnresolved() · b392f513
      Duncan P. N. Exon Smith authored
      Remove dead code.  Use `MDNode::get()` instead.
      
      llvm-svn: 225335
      b392f513
    • Duncan P. N. Exon Smith's avatar
      Remove invalid TODO · 5fa3de07
      Duncan P. N. Exon Smith authored
      We can't drop support for RAUW entirely in `MDNode`s, since it's
      required for graph construction.  This comment was from before I'd done
      the math on that (out-of-tree), and never should have been committed.
      
      llvm-svn: 225334
      5fa3de07
    • Chandler Carruth's avatar
      [PM] Fix a pretty nasty bug where the new pass manager would invalidate · fdb41805
      Chandler Carruth authored
      passes too many time.
      
      I think this is actually the issue that someone raised with me at the
      developer's meeting and in an email, but that we never really got to the
      bottom of. Having all the testing utilities made it much easier to dig
      down and uncover the core issue.
      
      When a pass manager is running many passes over a single function, we
      need it to invalidate the analyses between each run so that they can be
      re-computed as needed. We also need to track the intersection of
      preserved higher-level analyses across all the passes that we run (for
      example, if there is one module analysis which all the function analyses
      preserve, we want to track that and propagate it). Unfortunately, this
      interacted poorly with any enclosing pass adaptor between two IR units.
      It would see the intersection of preserved analyses, and need to
      invalidate any other analyses, but some of the un-preserved analyses
      might have already been invalidated *and recomputed*! We would fail to
      propagate the fact that the analysis had already been invalidated.
      
      The solution to this struck me as really strange at first, but the more
      I thought about it, the more natural it seemed. After a nice discussion
      with Duncan about it on IRC, it seemed even nicer. The idea is that
      invalidating an analysis *causes* it to be preserved! Preserving the
      lack of result is trivial. If it is recomputed, great. Until something
      *else* invalidates it again, we're good.
      
      The consequence of this is that the invalidate methods on the analysis
      manager which operate over many passes now consume their
      PreservedAnalyses object, update it to "preserve" every analysis pass to
      which it delivers an invalidation (regardless of whether the pass
      chooses to be removed, or handles the invalidation itself by updating
      itself). Then we return this augmented set from the invalidate routine,
      letting the pass manager take the result and use the intersection of
      *that* across each pass run to compute the final preserved set. This
      accounts for all the places where the early invalidation of an analysis
      has already "preserved" it for a future run.
      
      I've beefed up the testing and adjusted the assertions to show that we
      no longer repeatedly invalidate or compute the analyses across nested
      pass managers.
      
      llvm-svn: 225333
      fdb41805
    • Tom Stellard's avatar
      R600/SI: Add check for amdgcn triple forgotten in r225276. · d00a923e
      Tom Stellard authored
      llvm-svn: 225331
      d00a923e
    • David Majnemer's avatar
      Analysis: Reformulate WillNotOverflowUnsignedAdd for reusability · 5310c1e9
      David Majnemer authored
      WillNotOverflowUnsignedAdd's smarts will live in ValueTracking as
      computeOverflowForUnsignedAdd.  It now returns a tri-state result:
      never overflows, always overflows and sometimes overflows.
      
      llvm-svn: 225329
      5310c1e9
    • David Majnemer's avatar
      InstCombine: Just a small tidy-up · 3b83b3fa
      David Majnemer authored
      llvm-svn: 225328
      3b83b3fa
    • Hal Finkel's avatar
      [PowerPC] Transform a README.txt entry into a FIXME · b0e9b35b
      Hal Finkel authored
      Remove the README.txt entry regarding register allocation of CR logical ops,
      and replace it with a FIXME in PPCInstrInfo.td. The text in the README.txt was
      not really accurate, and thanks goes to Pat Haugen (and Bill Schmidt) from IBM
      for clarifying what was intended and highlighting the relevant text in the ISA
      specification.
      
      llvm-svn: 225325
      b0e9b35b
Loading