Skip to content
  1. Apr 24, 2012
  2. Apr 23, 2012
    • Nadav Rotem's avatar
      Optimize the vector UINT_TO_FP, SINT_TO_FP and FP_TO_SINT operations where the... · 3f8acfc3
      Nadav Rotem authored
      Optimize the vector UINT_TO_FP, SINT_TO_FP and FP_TO_SINT operations where the integer type is i8 (commonly used in graphics).
      
      llvm-svn: 155397
      3f8acfc3
    • Preston Gurd's avatar
      This patch fixes a problem which arose when using the Post-RA scheduler · 9a091475
      Preston Gurd authored
      on X86 Atom. Some of our tests failed because the tail merging part of
      the BranchFolding pass was creating new basic blocks which did not
      contain live-in information. When the anti-dependency code in the Post-RA
      scheduler ran, it would sometimes rename the register containing
      the function return value because the fact that the return value was
      live-in to the subsequent block had been lost. To fix this, it is necessary
      to run the RegisterScavenging code in the BranchFolding pass.
      
      This patch makes sure that the register scavenging code is invoked
      in the X86 subtarget only when post-RA scheduling is being done.
      Post RA scheduling in the X86 subtarget is only done for Atom.
      
      This patch adds a new function to the TargetRegisterClass to control
      whether or not live-ins should be preserved during branch folding.
      This is necessary in order for the anti-dependency optimizations done
      during the PostRASchedulerList pass to work properly when doing
      Post-RA scheduling for the X86 in general and for the Intel Atom in particular.
      
      The patch adds and invokes the new function trackLivenessAfterRegAlloc()
      instead of using the existing requiresRegisterScavenging().
      It changes BranchFolding.cpp to call trackLivenessAfterRegAlloc() instead of
      requiresRegisterScavenging(). It changes the all the targets that
      implemented requiresRegisterScavenging() to also implement
      trackLivenessAfterRegAlloc().  
      
      It adds an assertion in the Post RA scheduler to make sure that post RA
      liveness information is available when it is needed.
      
      It changes the X86 break-anti-dependencies test to use –mcpu=atom, in order
      to avoid running into the added assertion.
      
      Finally, this patch restores the use of anti-dependency checking
      (which was turned off temporarily for the 3.1 release) for
      Intel Atom in the Post RA scheduler.
      
      Patch by Andy Zhang!
      
      Thanks to Jakob and Anton for their reviews.
      
      llvm-svn: 155395
      9a091475
    • Jim Grosbach's avatar
      ARM: VSLI two-operand assmebly aliases are tblgen'erated. · 41e94d79
      Jim Grosbach authored
      llvm-svn: 155393
      41e94d79
    • Jim Grosbach's avatar
      ARM: tblgen'erate VSRA/VRSRA/VSRI assembly two-operand aliases. · 3dada484
      Jim Grosbach authored
      llvm-svn: 155392
      3dada484
    • Jim Grosbach's avatar
      ARM: vqdmulh two-operand aliases are tblgen'erated now. · e5012fba
      Jim Grosbach authored
      llvm-svn: 155387
      e5012fba
    • Michael J. Spencer's avatar
      [Support/Unix] Unconditionally include time.h. · 04b795bc
      Michael J. Spencer authored
      When building LLVM on Linux with libc++ with CMake TIME_WITH_SYS_TIME is
      undefined, and HAVE_SYS_TIME_H is defined. This ends up including
      sys/time.h but not time.h. Unix/TimeValue.inc requires time.h for asctime_r
      and localtime. libstdc++ seems to include time.h anyway, but libc++ does
      not.
      
      Fix this by always including time.h
      
      llvm-svn: 155382
      04b795bc
    • Eric Christopher's avatar
      Allow forward declarations to take a context. This helps the debugger · 27deb265
      Eric Christopher authored
      find forward declarations in the context that the actual definition
      will occur.
      
      rdar://11291658
      
      llvm-svn: 155380
      27deb265
    • Chandler Carruth's avatar
      Temporarily revert r155364 until the upstream review can complete, per · af0f8bf5
      Chandler Carruth authored
      the stated developer policy.
      
      llvm-svn: 155373
      af0f8bf5
    • Chandler Carruth's avatar
      Revert r155365, r155366, and r155367. All three of these have regression · 3c3bb55a
      Chandler Carruth authored
      test suite failures. The failures occur at each stage, and only get
      worse, so I'm reverting all of them.
      
      Please resubmit these patches, one at a time, after verifying that the
      regression test suite passes. Never submit a patch without running the
      regression test suite.
      
      llvm-svn: 155372
      3c3bb55a
    • Sirish Pande's avatar
      Hexagon V5 (floating point) support. · a3f8ba24
      Sirish Pande authored
      llvm-svn: 155367
      a3f8ba24
    • Sirish Pande's avatar
      Support for Hexagon architectural feature, new value jump. · 2c7bf00f
      Sirish Pande authored
      llvm-svn: 155366
      2c7bf00f
    • Sirish Pande's avatar
      Support for Hexagon VLIW Packetizer. · 6cd22515
      Sirish Pande authored
      llvm-svn: 155365
      6cd22515
    • Sirish Pande's avatar
      Hexagon Packetizer's target independent fix. · 995c8dbf
      Sirish Pande authored
      llvm-svn: 155364
      995c8dbf
    • Jakob Stoklund Olesen's avatar
      Reapply r155136 after fixing PR12599. · 43bcb970
      Jakob Stoklund Olesen authored
      Original commit message:
      
      Defer some shl transforms to DAGCombine.
      
      The shl instruction is used to represent multiplication by a constant
      power of two as well as bitwise left shifts. Some InstCombine
      transformations would turn an shl instruction into a bit mask operation,
      making it difficult for later analysis passes to recognize the
      constsnt multiplication.
      
      Disable those shl transformations, deferring them to DAGCombine time.
      An 'shl X, C' instruction is now treated mostly the same was as 'mul X, C'.
      
      These transformations are deferred:
      
        (X >>? C) << C   --> X & (-1 << C)  (When X >> C has multiple uses)
        (X >>? C1) << C2 --> X << (C2-C1) & (-1 << C2)   (When C2 > C1)
        (X >>? C1) << C2 --> X >>? (C1-C2) & (-1 << C2)  (When C1 > C2)
      
      The corresponding exact transformations are preserved, just like
      div-exact + mul:
      
        (X >>?,exact C) << C   --> X
        (X >>?,exact C1) << C2 --> X << (C2-C1)
        (X >>?,exact C1) << C2 --> X >>?,exact (C1-C2)
      
      The disabled transformations could also prevent the instruction selector
      from recognizing rotate patterns in hash functions and cryptographic
      primitives. I have a test case for that, but it is too fragile.
      
      llvm-svn: 155362
      43bcb970
    • Sylvestre Ledru's avatar
      Conflict with st_dev/st_ino identifiers under Debian GNU/Hurd · 3099f4bd
      Sylvestre Ledru authored
      The problem is that the struct file_status on UNIX systems has two
      members called st_dev and st_ino; those are also members of the
      struct stat, and they are reserved identifiers which can also be
      provided as #define (and this is the case for st_dev on Hurd).
      The solution (attached) is to rename them, for example adding a
      "fs_" prefix (= file status) to them.
      
      Patch by Pino Toscano
      
      llvm-svn: 155354
      3099f4bd
    • Alexander Potapenko's avatar
      Fix issue 67 by checking that the interface functions weren't redefined in the... · 056e27ea
      Alexander Potapenko authored
      Fix issue 67 by checking that the interface functions weren't redefined in the compiled source file.
      
      llvm-svn: 155346
      056e27ea
    • Kostya Serebryany's avatar
      [tsan] use llvm/ADT/Statistic.h for tsan stats · 5a4b7a23
      Kostya Serebryany authored
      llvm-svn: 155341
      5a4b7a23
    • Craig Topper's avatar
      Use MVT instead of EVT through all of LowerVECTOR_SHUFFLEtoBlend and not just... · 153bb34a
      Craig Topper authored
      Use MVT instead of EVT through all of LowerVECTOR_SHUFFLEtoBlend and not just the switch. Saves a little bit of binary size.
      
      llvm-svn: 155339
      153bb34a
    • Craig Topper's avatar
      Make getZeroVector and getOnesVector more alike as far as how they detect... · 0a2c809d
      Craig Topper authored
      Make getZeroVector and getOnesVector more alike as far as how they detect 128-bit versus 256-bit vectors. Be explicit about both sizes and use llvm_unreachable. Similar changes to getLegalSplat.
      
      llvm-svn: 155337
      0a2c809d
Loading