Skip to content
  1. Jul 28, 2014
    • Duncan P. N. Exon Smith's avatar
      llvm-uselistorder: Get it building in configure+make after r214125 · 3a7fb63c
      Duncan P. N. Exon Smith authored
      Somehow this wasn't being built before (only noticed now since the test
      was XFAILed).
      
      llvm-svn: 214128
      3a7fb63c
    • Duncan P. N. Exon Smith's avatar
      Bitcode: Serialize (and recover) use-list order · 1f66c856
      Duncan P. N. Exon Smith authored
      Predict and serialize use-list order in bitcode.  This makes the option
      `-preserve-bc-use-list-order` work *most* of the time, but this is still
      experimental.
      
        - Builds a full value-table up front in the writer, sets up a list of
          use-list orders to write out, and discards the table.  This is a
          simpler first step than determining the order from the various
          overlapping IDs of values on-the-fly.
      
        - The shuffles stored in the use-list order list have an unnecessarily
          large memory footprint.
      
        - `blockaddress` expressions cause functions to be materialized
          out-of-order.  For now I've ignored this problem, so use-list orders
          will be wrong for constants used by functions that have block
          addresses taken.  There are a couple of ways to fix this, but I
          don't have a concrete plan yet.
      
        - When materializing functions lazily, the use-lists for constants
          will not be correct.  This use case is out of scope: what should the
          use-list order be, if it's incomplete?
      
      This is part of PR5680.
      
      llvm-svn: 214125
      1f66c856
    • Duncan P. N. Exon Smith's avatar
      llvm-uselistorder: Add -save-temps option · 2101a7fb
      Duncan P. N. Exon Smith authored
      This is part of PR5680.
      
      llvm-svn: 214123
      2101a7fb
    • Duncan P. N. Exon Smith's avatar
      llvm-uselistorder: Check the correct flag for assembly · 75d94849
      Duncan P. N. Exon Smith authored
      This is part of PR5680.
      
      llvm-svn: 214122
      75d94849
    • Duncan P. N. Exon Smith's avatar
      IR: Expose Module::rbegin() and rend() · b5806889
      Duncan P. N. Exon Smith authored
      A follow-up commit for PR5680 needs to visit functions in reverse order.
      Expose iterators to allow that.
      
      llvm-svn: 214121
      b5806889
    • Lang Hames's avatar
      [MCJIT] Remove extraneous parentheses in test case. · 1f638440
      Lang Hames authored
      llvm-svn: 214117
      1f638440
    • Rafael Espindola's avatar
      Test the linker plugin handling of llvm.used. · 99298fc3
      Rafael Espindola authored
      llvm-svn: 214116
      99298fc3
    • Manman Ren's avatar
      [Debug Info] add a template class DITypedArray. · 1a125c95
      Manman Ren authored
      Typedef DIArray to DITypedArray<DIDescriptor>. Also typedef DITypeArray as
      DITypedArray<DITypeRef>.
      
      This is the third of a series of patches to handle type uniqueing of the
      type array for a subroutine type.
      
      This commit should have no functionality change.
      
      llvm-svn: 214115
      1a125c95
    • Manman Ren's avatar
      [Debug Info] rename getTypeArray to getElements, setTypeArray to setArrays. · ab8ffbaa
      Manman Ren authored
      This is the second of a series of patches to handle type uniqueing of the
      type array for a subroutine type.
      
      For vector and array types, getElements returns the array of subranges, so it
      is a better name than getTypeArray. Even for class, struct and enum types,
      getElements returns the members, which can be subprograms.
      
      setArrays can set up to two arrays, the second is the templates.
      
      This commit should have no functionality change.
      
      llvm-svn: 214112
      ab8ffbaa
    • Manman Ren's avatar
      [Debug Info] replace DIUnspecifiedParameter with DITrivialType. · bf696e39
      Manman Ren authored
      This is the first of a series of patches to handle type uniqueing of the
      type array for a subroutine type.
      
      This commit makes sure unspecified_parameter is a DIType to enable converting
      the type array for a subroutine type to an array of DITypes.
      
      This commit should have no functionality change. With this commit, we may
      change unspecified type to be a DITrivialType instead of a DIType.
      
      llvm-svn: 214111
      bf696e39
    • Matt Arsenault's avatar
      R600: Modernize test · 2b252ecf
      Matt Arsenault authored
      llvm-svn: 214108
      2b252ecf
    • Alex Lorenz's avatar
      llvm-cov: move the gcov code into a separate file. · 2b5d03ae
      Alex Lorenz authored
      The gcov compatible code is moved to its own file and
      llvm-cov is updated to be a wrapper that always calls
      the gcov main function.
      
      llvm-svn: 214107
      2b5d03ae
    • Matt Arsenault's avatar
      R600/SI: Fix return type for isMIMG / isSMRD · b9f46eef
      Matt Arsenault authored
      All the others use bool, so these should too.
      
      llvm-svn: 214106
      b9f46eef
    • Chandler Carruth's avatar
      [SDAG] Add DEBUG logging to the legalizer, fixing a "bug" found by · b143274a
      Chandler Carruth authored
      inspection in the proccess, and shuffle the logging in the DAG combiner
      around a bit.
      
      With this it is much easier to follow what the legalizer is doing. It
      should even accurately present most of the strange legalization
      operations where a single node is replaced by multiple nodes, etc. There
      is still some information lost (we log SDNodes not SDValues so we don't
      log which result is used for which thing), but I think this is much
      closer to a usable system. Notably, this will make it *much* more
      apparant when legalization is actually happening inside the combiner, or
      when there is a cycle caused by interactions of the legalizer and the
      combiner.
      
      The "bug" I fixed here I'm not sure is remotely possible to trigger. We
      were only adding one of the nodes in a replacement to the updated set
      rather than all of the nodes in the replacement. Realistically, the
      worst result of this are nodes not getting back onto the worklist in the
      DAG combiner. I doubt it is possible to trigger this today, and
      I certainly don't have any ideas about how, but this at least brings the
      code into alignment with the principled operation of the routine.
      
      llvm-svn: 214105
      b143274a
    • Matt Arsenault's avatar
      R600/SI: Implement getOptimalMemOpType · 46645fa1
      Matt Arsenault authored
      The default guess uses i32. This needs an address space argument
      to really do the right thing in all cases.
      
      llvm-svn: 214104
      46645fa1
    • Rafael Espindola's avatar
      Add tests for the various emit-llvm plugin options. · 6dca5150
      Rafael Espindola authored
      llvm-svn: 214102
      6dca5150
    • Matt Arsenault's avatar
      R600/SI: Make argument loads invariant · 86033cae
      Matt Arsenault authored
      llvm-svn: 214101
      86033cae
    • Matt Arsenault's avatar
      Update comment · 9a1d12dc
      Matt Arsenault authored
      llvm-svn: 214100
      9a1d12dc
    • Rafael Espindola's avatar
      Test the mcpu option. · 2172f51e
      Rafael Espindola authored
      llvm-svn: 214087
      2172f51e
    • Robert Khasanov's avatar
      [SKX] Enabling mask logic instructions: encoding, lowering · 595683da
      Robert Khasanov authored
      Instructions: KAND{BWDQ}, KANDN{BWDQ}, KOR{BWDQ}, KXOR{BWDQ}, KXNOR{BWDQ}
      
      Reviewed by Elena Demikhovsky <elena.demikhovsky@intel.com>
      
      llvm-svn: 214081
      595683da
    • Dan Liew's avatar
      Emit a warning if llvm_map_components_to_libraries() is used noting that its · 544f45b3
      Dan Liew authored
      use is deprecated in favour of llvm_map_components_to_libnames()
      
      Although message(DEPRECATION "msg") would probably be a better fit this
      does nothing if CMAKE_ERROR_DEPRECATED and CMAKE_WARNING_DEPRECATED are
      both off, which is the default.
      
      llvm-svn: 214078
      544f45b3
    • Dan Liew's avatar
      Document the new LLVM CMake interface for building against LLVM · 9745661d
      Dan Liew authored
      libraries. With many contributions from Brad King.
      
      llvm-svn: 214077
      9745661d
    • Dan Liew's avatar
      Fixed sphinx warning. · bafdcba1
      Dan Liew authored
      llvm-svn: 214076
      bafdcba1
    • Ulrich Weigand's avatar
      [PowerPC] Add testcase forgotten in the 214072 commit. · 085a10c4
      Ulrich Weigand authored
      llvm-svn: 214073
      085a10c4
    • Ulrich Weigand's avatar
      [PowerPC] Support ELFv1/ELFv2 ABI selection via features · 90a5de88
      Ulrich Weigand authored
      While LLVM now supports both ELFv1 and ELFv2 ABIs, their use is currently
      hard-coded via the target triple: powerpc64-linux is always ELFv1, while
      powerpc64le-linux is always ELFv2.
      
      These are of course the most common scenarios, but in principle it is
      possible to support the ELFv2 ABI on big-endian or the ELFv1 ABI on
      little-endian systems (and GCC does support that), and there are some
      special use cases for that (e.g. certain Linux kernel versions could
      only be built using ELFv1 on LE).
      
      This patch implements the LLVM side of supporting this.  As precedent
      on other platforms suggests, ABI options are passed to the back-end as
      features.  Thus, this patch implements two features "elfv1" and "elfv2"
      that select the desired ABI if present.  (If not, the LLVM uses the
      same default rules as now.)
      
      llvm-svn: 214072
      90a5de88
    • Rafael Espindola's avatar
      Start adding some tests for the gold plugin. · 852bad0a
      Rafael Espindola authored
      These are only used when the 'ld' in the path is gold and the plugin has
      been built, but it is already a start to make sure we don't regress features
      that cannot be tested with llvm-lto.
      
      llvm-svn: 214058
      852bad0a
  2. Jul 27, 2014
    • Saleem Abdulrasool's avatar
      ARM: correct handling of features in arch_extension · 8988c2a5
      Saleem Abdulrasool authored
      The subtarget information is the ultimate source of truth for the feature set
      that is enabled at this point.  We would previously not propagate the feature
      information to the subtarget.  While this worked for the most part (features
      would be enabled/disabled as requested), if another operation that changed the
      feature bits was encountered (such as a mode switch via a .arm or .thumb
      directive), we would end up resetting the behaviour of the architectural
      extensions.
      
      Handling this properly requires a slightly more complicated handling.  We need
      to check if the feature is now being toggled.  If so, only then do we toggle the
      features.  In return, we no longer have to calculate the feature bits ourselves.
      
      The test changes are mostly to the diagnosis, which is now more uniform (a nice
      side effect!).  Add an additional test to ensure that we handle this case
      properly.
      
      Thanks to Nico Weber for alerting me to this issue!
      
      llvm-svn: 214057
      8988c2a5
    • Saleem Abdulrasool's avatar
      ARM: convert loop to range based · 45cf67b8
      Saleem Abdulrasool authored
      Convert a loop to use range based iteration.  Rename structure members to help
      naming, and make structure definition anonymous.  NFC.
      
      llvm-svn: 214056
      45cf67b8
    • Matt Arsenault's avatar
      Add alignment value to allowsUnalignedMemoryAccess · 6f2a5261
      Matt Arsenault authored
      Rename to allowsMisalignedMemoryAccess.
      
      On R600, 8 and 16 byte accesses are mostly OK with 4-byte alignment,
      and don't need to be split into multiple accesses. Vector loads with
      an alignment of the element type are not uncommon in OpenCL code.
      
      llvm-svn: 214055
      6f2a5261
    • Tim Northover's avatar
      AArch64: fix conversion of 'J' inline asm constraints. · 2c46beb0
      Tim Northover authored
      'J' represents a negative number suitable for an add/sub alias
      instruction, but while preparing it to become an int64_t we were
      mangling the sign extension. So "i32 -1" became 0xffffffffLL, for
      example.
      
      Should fix one half of PR20456.
      
      llvm-svn: 214052
      2c46beb0
    • Chandler Carruth's avatar
      [x86] Sink a variable only used by asserts into the asserts. Should fix · 64a7c828
      Chandler Carruth authored
      some -Werror bots, sorry for the noise.
      
      llvm-svn: 214043
      64a7c828
    • Chandler Carruth's avatar
      [x86] Add a much more powerful framework for combining x86 shuffle · 80c5bfd8
      Chandler Carruth authored
      instructions in the legalized DAG, and leverage it to combine long
      sequences of instructions to PSHUFB.
      
      Eventually, the other x86-instruction-specific shuffle combines will
      probably all be driven out of this routine. But the real motivation is
      to detect after we have fully legalized and optimized a shuffle to the
      minimal number of x86 instructions whether it is profitable to replace
      the chain with a fully generic PSHUFB instruction even though doing so
      requires either a load from a constant pool or tying up a register with
      the mask.
      
      While the Intel manuals claim it should be used when it replaces 5 or
      more instructions (!!!!) my experience is that it is actually very fast
      on modern chips, and so I've gon with a much more aggressive model of
      replacing any sequence of 3 or more instructions.
      
      I've also taught it to do some basic canonicalization to special-purpose
      instructions which have smaller encodings than their generic
      counterparts.
      
      There are still quite a few FIXMEs here, and I've not yet implemented
      support for lowering blends with PSHUFB (where its power really shines
      due to being able to zero out lanes), but this starts implementing real
      PSHUFB support even when using the new, fancy shuffle lowering. =]
      
      llvm-svn: 214042
      80c5bfd8
    • Chandler Carruth's avatar
      [ADT] Add a remarkbly useful little helper routine to ArrayRef for · 3ea985b3
      Chandler Carruth authored
      checking whether the ArrayRef is equal to an explicit list of arguments.
      
      This is particularly easy to implement even without variadic templates
      because ArrayRef happens to be homogeneously typed. As a consequence we
      can use a "clever" wrapper type and default arguments to capture in
      a single method many arguments as well as *how many* arguments the user
      specified.
      
      Thanks to Dave Blaikie for helping me pull together this little helper.
      Suggestions for how to improve or generalize it are of course welcome.
      I'll be using it immediately in my follow-up patch. =D
      
      llvm-svn: 214041
      3ea985b3
  3. Jul 26, 2014
Loading