Skip to content
  1. Dec 29, 2013
  2. Dec 28, 2013
    • Saleem Abdulrasool's avatar
      CodeGen: silence a C++11 feature warning · 7230b377
      Saleem Abdulrasool authored
      llvm-svn: 198133
      7230b377
    • Saleem Abdulrasool's avatar
      ARM IAS: handle errors more appropriately · 0c4b1026
      Saleem Abdulrasool authored
      Directive parsers must return false if the target assembler is interested in
      handling the directive.  The Error member function returns true always.  Using
      the 'return Error()' pattern would incorrectly indicate to the general parser
      that the target was not interested in the directive, when in reality it simply
      encountered a badly formed directive or some other error.  This corrects the
      behaviour to ensure that the parser behaves appropriately.
      
      llvm-svn: 198132
      0c4b1026
    • Andrew Trick's avatar
      Uninitialized variable (in never taken path) after factoring. · 7afe4818
      Andrew Trick authored
      llvm-svn: 198131
      7afe4818
    • Andrew Trick's avatar
      New machine model for cortex-a9. Schedule for resources and latency. · 3ca67d64
      Andrew Trick authored
      Schedule more conservatively to account for stalls on floating point
      resources and latency. Use the AGU resource to model latency stalls
      since it's shared between FP and LD/ST instructions. This might not be
      completely accurate but should work well in practice.
      
      llvm-svn: 198125
      3ca67d64
    • Andrew Trick's avatar
      Added debugging options: -misched-only-func/block · 33e05d76
      Andrew Trick authored
      llvm-svn: 198124
      33e05d76
    • Andrew Trick's avatar
      The Cortex-A9 machine model is incomplete. Mark it as such. · 03b22e39
      Andrew Trick authored
      Many vector operations never had itineraries. Since the new machine
      model was a mapping from existing itinerary classes, we don't have a
      model for these. We still want to migrate A9 even though no one has
      invested in a complete model, so mark it incomplete to avoid the
      scheduler asserting.
      
      llvm-svn: 198123
      03b22e39
    • Andrew Trick's avatar
      Add a PostMachineScheduler pass with generic implementation. · d14d7c20
      Andrew Trick authored
      PostGenericScheduler uses either the new machine model or the hazard
      checker for top-down scheduling. Most of the infrastructure for PreRA
      machine scheduling is reused.
      
      With a some tuning, this should allow MachineScheduler to be default
      for all ARM targets, including cortex-A9, using the new machine
      model. Likewise, with additional tuning, it should be able to replace
      PostRAScheduler for all targets.
      
      The PostMachineScheduler pass does not currently run the
      AntiDepBreaker. There is less need for it on targets that are already
      running preRA MachineScheduler. I want to prove it's necessary before
      committing to the maintenance burden.
      
      The PostMachineScheduler also currently removes kill flags and adds
      them all back later. This is a bit ridiculous. I'd prefer passes to
      directly use a liveness utility than rely on flags.
      
      A test case that enables this scheduler will be included in a
      subsequent checkin that updates the A9 model.
      
      llvm-svn: 198122
      d14d7c20
    • Andrew Trick's avatar
      Move the PostRA scheduler's fixupKills function for reuse. · 6b104f8b
      Andrew Trick authored
      llvm-svn: 198121
      6b104f8b
    • Andrew Trick's avatar
      Stub out a PostMachineScheduler pass. · 17080b9b
      Andrew Trick authored
      Placeholder and boilerplate for a PostRA MachineScheduler pass.
      
      llvm-svn: 198120
      17080b9b
    • Andrew Trick's avatar
      Factor MI-Sched in preparation for post-ra scheduling support. · d7f890ed
      Andrew Trick authored
      Factor the MachineFunctionPass into MachineSchedulerBase.
      
      Split the DAG class into ScheduleDAGMI and SchedulerDAGMILive.
      
      llvm-svn: 198119
      d7f890ed
    • Craig Topper's avatar
      bf096926
    • Craig Topper's avatar
      Minor indentation fix to match other switch statements. Change... · e829fe42
      Craig Topper authored
      Minor indentation fix to match other switch statements. Change llvm_unreachable text to match similar places.
      
      llvm-svn: 198116
      e829fe42
    • Craig Topper's avatar
      Mark some Type and EVT methods as LLVM_READONLY. · 8c4ac147
      Craig Topper authored
      llvm-svn: 198115
      8c4ac147
    • Andrea Di Biagio's avatar
      [X86] Teach the backend how to fold target specific dag node for packed · eaceba0e
      Andrea Di Biagio authored
      vector shift by immedate count (VSHLI/VSRLI/VSRAI) into a build_vector when
      the vector in input to the shift is a build_vector of all constants or UNDEFs.
      
      Target specific nodes for packed shifts by immediate count are in
      general introduced by function 'getTargetVShiftByConstNode' (in
      X86ISelLowering.cpp) when lowering shift operations, SSE/AVX immediate
      shift intrinsics and (only in very few cases) SIGN_EXTEND_INREG dag
      nodes.
      
      This patch adds extra rules for simplifying vector shifts inside
      function 'getTargetVShiftByConstNode'.
      
      Added file test/CodeGen/X86/vec_shift5.ll to verify that packed
      shifts by immediate are correctly folded into a build_vector when the
      input vector to the shift dag node is a vector of constants or undefs.
      
      llvm-svn: 198113
      eaceba0e
    • Saleem Abdulrasool's avatar
      AsmParser: cleanup diagnostics for .rep/.rept · 51cff719
      Saleem Abdulrasool authored
      Avoid double diagnostics for invalid expressions for count.  Improve caret
      location for negative count.
      
      llvm-svn: 198099
      51cff719
    • Saleem Abdulrasool's avatar
      IAS: support .rep as an alias for .rept · d743d0ab
      Saleem Abdulrasool authored
      The GNU assembler supports .rep as an alias for .rept.  This simply creates the
      alias for it and introduces a test for both .rept and .rep.
      
      llvm-svn: 198097
      d743d0ab
    • Saleem Abdulrasool's avatar
      ARMAsmParser: fix typo in comment · 83e3770a
      Saleem Abdulrasool authored
      llvm-svn: 198095
      83e3770a
    • Chandler Carruth's avatar
      Disable transforms that introduce calls to exp10*() on Linux due to · f5689f83
      Chandler Carruth authored
      widespread glibc bugs.
      
      The glibc implementation of exp10 has a very serious precision bug in
      version 2.15 (and older versions). This is still very widely used (the
      current Ubuntu LTS for example uses it) and so it isn't reasonable to
      make transforms that produce these functions. This fixes many
      miscompiles introduced when we started transforming pow(10.0, ...) into
      exp10, and it may have fixed other latent miscompiles where exp10
      provided sufficient precision but exp10f did not.
      
      This is all really horrible. The primary bug has been fixed for over
      a year and glibc 2.18 works correctly for the test cases I have, but it
      will be 2017 before the LTS using 2.15 is no longer supported by Ubuntu
      (and thus reasonable for folks to be relying on). =[ We're either going
      to need to live without these optimizations, or find a way to switch
      behavior more dynamically than using simply the fact that the OS is
      "Linux".
      
      To make matters worse, there appears to be significant testing and
      fixing of numerous other bugs in the exp10 family of functions right now
      in glibc. While those haven't been causing problems I've seen in the
      wild, it gives me concerns that we may need to wait until an even later
      release of glibc before we can reliably transform code into exp10.
      
      llvm-svn: 198093
      f5689f83
    • Eric Christopher's avatar
      Remove AsmPrinter::needsRelocationsForDwarfStringPool() since it's · 8458862f
      Eric Christopher authored
      just calling into MAI and is only abstracting for a single interface that
      we actually need to check in multiple places.
      
      llvm-svn: 198092
      8458862f
  3. Dec 27, 2013
    • Andrea Di Biagio's avatar
      Teach DAGCombiner how to fold a SIGN_EXTEND_INREG of a BUILD_VECTOR of · 46dcddb3
      Andrea Di Biagio authored
      ConstantSDNodes (or UNDEFs) into a simple BUILD_VECTOR.
      
      For example, given the following sequence of dag nodes:
      
        i32 C = Constant<1>
        v4i32 V = BUILD_VECTOR C, C, C, C
        v4i32 Result = SIGN_EXTEND_INREG V, ValueType:v4i1
      
      The SIGN_EXTEND_INREG node can be folded into a build_vector since
      the vector in input is a BUILD_VECTOR of constants.
      
      The optimized sequence is:
      
        i32 C = Constant<-1>
        v4i32 Result = BUILD_VECTOR C, C, C, C
      
      llvm-svn: 198084
      46dcddb3
    • David Blaikie's avatar
      DebugInfo: Remove dead code, DICompositeType::addMember(DIDescriptor D) · ac200297
      David Blaikie authored
      It's no longer necessary to lazily add members to the DICompositeType
      member list. Instead any lazy members (special member functions and
      member template instantiations) are added to the parent late based on
      their context link, the same way that nested types have always been
      handled (never being in the member list - just added to the parent DIE
      lazily based on context).
      
      Clang's been updated not to use this function anymore as it improves
      type unit consistency by never emitting lazy members in type units.
      
      llvm-svn: 198079
      ac200297
    • Chandler Carruth's avatar
      Use two variables here rather than reusing (and abusing) one. This is · 87c3a0cf
      Chandler Carruth authored
      much more clear to me. I meant to make this change before committing the
      original patch, but forgot to merge it in. Sorry.
      
      llvm-svn: 198069
      87c3a0cf
    • Chandler Carruth's avatar
      Introduce a simple line-by-line iterator type into the Support library. · f8c5281c
      Chandler Carruth authored
      This is an iterator which you can build around a MemoryBuffer. It will
      iterate through the non-empty, non-comment lines of the buffer as
      a forward iterator. It should be small and reasonably fast (although it
      could be made much faster if anyone cares, I don't really...).
      
      This will be used to more simply support the text-based sample
      profile file format, and is largely based on the original patch by
      Diego. I've re-worked the style of it and separated it from the work of
      producing a MemoryBuffer from a file which both simplifies the interface
      and makes it easier to test.
      
      The style of the API follows the C++ standard naming conventions to fit
      in better with iterators in general, much like the Path and FileSystem
      interfaces follow standard-based naming conventions.
      
      llvm-svn: 198068
      f8c5281c
  4. Dec 26, 2013
  5. Dec 25, 2013
Loading