Skip to content
  1. Jan 24, 2014
  2. Jan 23, 2014
    • Eric Christopher's avatar
      Make the use of DW_AT_ranges in the compile unit depend also upon · 1bca60d6
      Eric Christopher authored
      the existence of comdat/special sections.
      
      llvm-svn: 199954
      1bca60d6
    • Rafael Espindola's avatar
      Remove duplicated info on what .text, .data and .bss look like. · e308c0cd
      Rafael Espindola authored
      llvm-svn: 199951
      e308c0cd
    • Kevin Enderby's avatar
      Update the X86 assembler for .intel_syntax to produce an error for invalid base · bc570f28
      Kevin Enderby authored
      registers in memory addresses that do not match the index register. As it does
      for .att_syntax.
      
      rdar://15887380
      
      llvm-svn: 199948
      bc570f28
    • Kevin Enderby's avatar
      Update the X86 assembler for .intel_syntax to produce an error for invalid · 9d11702f
      Kevin Enderby authored
      scale factors in memory addresses. As it does for .att_syntax.
      
      It was producing:
      Assertion failed: (((Scale == 1 || Scale == 2 || Scale == 4 || Scale == 8)) && "Invalid scale!"), function CreateMem, file /Volumes/SandBox/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp, line 1133.
      
      rdar://14967214
      
      llvm-svn: 199942
      9d11702f
    • Eric Christopher's avatar
      Fix out of bounds access to the double regs array. Given the · 7383d4a9
      Eric Christopher authored
      code this looks correct, but could use review. The previous
      was definitely not correct.
      
      llvm-svn: 199940
      7383d4a9
    • Lang Hames's avatar
      Add a few missing cases from r199933. Testcase coming shortly. · b1ce3337
      Lang Hames authored
      llvm-svn: 199938
      b1ce3337
    • Lang Hames's avatar
      Replace vfmaddxx213 instructions with their 231-type equivalents in accumulator · 23de211c
      Lang Hames authored
      loops. Writing back to the accumulator (231-type) allows the coalescer to
      eliminate an extra copy.
      
      llvm-svn: 199933
      23de211c
    • Weiming Zhao's avatar
      [Thumbv8] Fix the value of BLXOperandIndex of isV8EligibleForIT · 5930ae6c
      Weiming Zhao authored
      Originally, BLX was passed as operand #0 in MachineInstr and as operand
      #2 in MCInst. But now, it's operand #2 in both cases.
      
      This patch also removes unnecessary FileCheck in the test case added by r199127.
      
      llvm-svn: 199928
      5930ae6c
    • Juergen Ributzka's avatar
      Add target analysis passes to the codegen pipeline for MCJIT. · 5fe955cb
      Juergen Ributzka authored
      This patch adds the target analysis passes (usually TargetTransformInfo) to the
      codgen pipeline. We also expose now the AddAnalysisPasses method through the C
      API, because the optimizer passes would also benefit from better target-specific
      cost models.
      
      Reviewed by Andrew Kaylor
      
      llvm-svn: 199926
      5fe955cb
    • Ana Pazos's avatar
      [AArch64] Added vselect patterns with float and double types · 5d31f694
      Ana Pazos authored
      llvm-svn: 199925
      5d31f694
    • Eric Christopher's avatar
      Avoid emitting a DWARF type attribute for an ObjC property of type · 4c96056a
      Eric Christopher authored
      void.
      
      Patch by Scott Talbot.
      
      llvm-svn: 199924
      4c96056a
    • Tom Stellard's avatar
      R600: Remove successive JUMP in AnalyzeBranch when AllowModify is true · a64353e5
      Tom Stellard authored
      This fixes a crash in the OpenCV OpenCL test suite.
      
      There is no lit test for this, because the test would be very large
      and could easily be invalidated by changes to the scheduler
      or other parts of the compiler.
      
      Patch by:  Vincent Lejeune
      
      llvm-svn: 199919
      a64353e5
    • Tom Stellard's avatar
      R600: Disable the BFE pattern · a2a4b8ee
      Tom Stellard authored
      This pattern uses an SDNodeXForm, which isn't being emitted for some
      reason.  I can get it to work by attaching the PatLeaf that has the
      XForm to the argument in the output pattern, but this results in an
      immediate being used in a register operand, which the backend can't
      handle yet.
      
      llvm-svn: 199918
      a2a4b8ee
    • Tom Stellard's avatar
      R600: Correctly handle vertex fetch clauses the precede ENDIFs · 805890b2
      Tom Stellard authored
      The control flow finalizer would sometimes use an ALU_POP_AFTER
      instruction before the vetex fetch clause instead of using a POP
      instruction after it.
      
      llvm-svn: 199917
      805890b2
    • Tom Stellard's avatar
      R600: Unconditionally unroll loops that contain GEPs with alloca pointers · 8cce9bdf
      Tom Stellard authored
      Implement the getUnrollingPreferences() function for
      AMDGPUTargetTransformInfo so that loops that do address calculations
      on pointers derived from alloca are unconditionally unrolled.
      
      Unrolling these loops makes it more likely that SROA will be able to
      eliminate the allocas, which is a big win for R600 since memory
      allocated by alloca (private memory) is really slow.
      
      llvm-svn: 199916
      8cce9bdf
    • Rafael Espindola's avatar
      Remove tail marker when changing an argument to an alloca. · 2a05ea5c
      Rafael Espindola authored
      Argument promotion can replace an argument of a call with an alloca. This
      requires clearing the tail marker as it is very likely that the callee is now
      using an alloca in the caller.
      
      This fixes pr14710.
      
      llvm-svn: 199909
      2a05ea5c
    • Tom Stellard's avatar
      R600: Recommit 199842: Add work-around for the CF stack entry HW bug · 348273df
      Tom Stellard authored
      The unit test is now disabled on non-asserts builds.
      
      The CF stack can be corrupted if you use CF_ALU_PUSH_BEFORE,
      CF_ALU_ELSE_AFTER, CF_ALU_BREAK, or CF_ALU_CONTINUE when the number of
      sub-entries on the stack is greater than or equal to the stack entry
      size and sub-entries modulo 4 is either 0 or 3 (on cedar the bug is
      present when number of sub-entries module 8 is either 7 or 0)
      
      We choose to be conservative and always apply the work-around when the
      number of sub-enries is greater than or equal to the stack entry size,
      so that we can safely over-allocate the stack when we are unsure of the
      stack allocation rules.
      
      reviewed-by: Vincent Lejeune <vljn at ovi.com>
      llvm-svn: 199905
      348273df
    • Elena Demikhovsky's avatar
      AVX-512: added VPERM2D VPERM2Q VPERM2PS VPERM2PD instructions, · a5d38a39
      Elena Demikhovsky authored
      they give better sequences than VPERMI
      
      llvm-svn: 199893
      a5d38a39
    • Tim Northover's avatar
      ARM: use litpools for normal i32 imms when compiling minsize. · 55c625f2
      Tim Northover authored
      With constant-sharing, litpool loads consume 4 + N*2 bytes of code, but
      movw/movt pairs consume 8*N. This means litpools are better than movw/movt even
      with just one use. Other materialisation strategies can still be better though,
      so the logic is a little odd.
      
      llvm-svn: 199891
      55c625f2
    • Artyom Skrobov's avatar
      a5158963
    • Chandler Carruth's avatar
      [LPM] Make LoopSimplify no longer a LoopPass and instead both a utility · aa7fa5e4
      Chandler Carruth authored
      function and a FunctionPass.
      
      This has many benefits. The motivating use case was to be able to
      compute function analysis passes *after* running LoopSimplify (to avoid
      invalidating them) and then to run other passes which require
      LoopSimplify. Specifically passes like unrolling and vectorization are
      critical to wire up to BranchProbabilityInfo and BlockFrequencyInfo so
      that they can be profile aware. For the LoopVectorize pass the only
      things in the way are LoopSimplify and LCSSA. This fixes LoopSimplify
      and LCSSA is next on my list.
      
      There are also a bunch of other benefits of doing this:
      - It is now very feasible to make more passes *preserve* LoopSimplify
        because they can simply run it after changing a loop. Because
        subsequence passes can assume LoopSimplify is preserved we can reduce
        the runs of this pass to the times when we actually mutate a loop
        structure.
      - The new pass manager should be able to more easily support loop passes
        factored in this way.
      - We can at long, long last observe that LoopSimplify is preserved
        across SCEV. This *halves* the number of times we run LoopSimplify!!!
      
      Now, getting here wasn't trivial. First off, the interfaces used by
      LoopSimplify are all over the map regarding how analysis are updated. We
      end up with weird "pass" parameters as a consequence. I'll try to clean
      at least some of this up later -- I'll have to have it all clean for the
      new pass manager.
      
      Next up I discovered a really frustrating bug. LoopUnroll *claims* to
      preserve LoopSimplify. That's actually a lie. But the way the
      LoopPassManager ends up running the passes, it always ran LoopSimplify
      on the unrolled-into loop, rectifying this oversight before any
      verification could kick in and point out that in fact nothing was
      preserved. So I've added code to the unroller to *actually* simplify the
      surrounding loop when it succeeds at unrolling.
      
      The only functional change in the test suite is that we now catch a case
      that was previously missed because SCEV and other loop transforms see
      their containing loops as simplified and thus don't miss some
      opportunities. One test case has been converted to check that we catch
      this case rather than checking that we miss it but at least don't get
      the wrong answer.
      
      Note that I have #if-ed out all of the verification logic in
      LoopSimplify! This is a temporary workaround while extracting these bits
      from the LoopPassManager. Currently, there is no way to have a pass in
      the LoopPassManager which preserves LoopSimplify along with one which
      does not. The LPM will try to verify on each loop in the nest that
      LoopSimplify holds but the now-Function-pass cannot distinguish what
      loop is being verified and so must try to verify all of them. The inner
      most loop is clearly no longer simplified as there is a pass which
      didn't even *attempt* to preserve it. =/ Once I get LCSSA out (and maybe
      LoopVectorize and some other fixes) I'll be able to re-enable this check
      and catch any places where we are still failing to preserve
      LoopSimplify. If this causes problems I can back this out and try to
      commit *all* of this at once, but so far this seems to work and allow
      much more incremental progress.
      
      llvm-svn: 199884
      aa7fa5e4
    • Daniel Sanders's avatar
      [mips][sched] Split IIStore into II_S[BHWD], II_S[WD][LR], and II_SAVE · 37463f72
      Daniel Sanders authored
      No functional change since the InstrItinData's have been duplicated.
      
      llvm-svn: 199876
      37463f72
    • Eric Christopher's avatar
      Add a variable to track whether or not we've used a unique section, · 15abef6d
      Eric Christopher authored
      e.g. linkonce, to TargetMachine and set it when we've done so
      for ELF targets currently. This involved making TargetMachine
      non-const in a TLOF use and propagating that change around - I'm
      open to other ideas.
      
      This will be used in a future commit to handle emitting debug
      information with ranges.
      
      llvm-svn: 199871
      15abef6d
    • Kevin Qin's avatar
    • NAKAMURA Takumi's avatar
      372f05d5
    • Jack Carter's avatar
      [Mips] formatting through clang-format · 3b2c96ee
      Jack Carter authored
      llvm-svn: 199853
      3b2c96ee
    • Jack Carter's avatar
      [Mips] TargetStreamer Support for .set mips16. · 39536724
      Jack Carter authored
      This patch updates .set mips16 support which
      affects the ELF ABI and its flags. In addition the patch uses
      a common interface for both the MipsTargetSteamer and
      MipsObjectStreamer that the assembler uses for
      both ELF and ASCII output for these directives.
      
      llvm-svn: 199851
      39536724
  3. Jan 22, 2014
    • Owen Anderson's avatar
      Revert r162101 and replace it with a solution that works for targets where the... · 77e4d444
      Owen Anderson authored
      Revert r162101 and replace it with a solution that works for targets where the pointer type is illegal.
      This is a horrible bit of code.  We're calling a simplification routine *in the middle* of type legalization.  We tell the
      simplification routine that it's running after legalization, but some of the types it will encounter will be illegal!  The
      fix is only to invoke the simplification if the types in question were legal, so that none of its invariants will be violated.
      
      llvm-svn: 199847
      77e4d444
    • Tom Stellard's avatar
      Revert "R600: Add work-around for the CF stack entry HW bug" · 31e16388
      Tom Stellard authored
      This reverts commit 35b8331cad6eb512a2506adbc394201181da94ba.
      
      The -debug-only flag for llc doesn't appear to be available in
      all build configurations.
      
      llvm-svn: 199845
      31e16388
    • Rafael Espindola's avatar
      Provide a dummy section to fix a crash with inline assembly in LTO. · 20fcda71
      Rafael Espindola authored
      Fixes pr18508.
      
      llvm-svn: 199843
      20fcda71
    • Tom Stellard's avatar
      R600: Add work-around for the CF stack entry HW bug · e89373e0
      Tom Stellard authored
      The CF stack can be corrupted if you use CF_ALU_PUSH_BEFORE,
      CF_ALU_ELSE_AFTER, CF_ALU_BREAK, or CF_ALU_CONTINUE when the number of
      sub-entries on the stack is greater than or equal to the stack entry
      size and sub-entries modulo 4 is either 0 or 3 (on cedar the bug is
      present when number of sub-entries module 8 is either 7 or 0)
      
      We choose to be conservative and always apply the work-around when the
      number of sub-enries is greater than or equal to the stack entry size,
      so that we can safely over-allocate the stack when we are unsure of the
      stack allocation rules.
      
      reviewed-by: Vincent Lejeune <vljn at ovi.com>
      llvm-svn: 199842
      e89373e0
Loading