Skip to content
  1. Jul 12, 2012
  2. Jul 11, 2012
  3. Jul 10, 2012
  4. Jul 09, 2012
    • Manman Ren's avatar
      X86: implement functions to analyze & synthesize CMOV|SET|Jcc · 5f6fa428
      Manman Ren authored
      getCondFromSETOpc, getCondFromCMovOpc, getSETFromCond, getCMovFromCond
      
      No functional change intended.
      If we want to update the condition code of CMOV|SET|Jcc, we first analyze the
      opcode to get the condition code, then update the condition code, finally
      synthesize the new opcode form the new condition code.
      
      llvm-svn: 159955
      5f6fa428
  5. Jul 07, 2012
    • Andrew Trick's avatar
      I'm introducing a new machine model to simultaneously allow simple · 87255e34
      Andrew Trick authored
      subtarget CPU descriptions and support new features of
      MachineScheduler.
      
      MachineModel has three categories of data:
      1) Basic properties for coarse grained instruction cost model.
      2) Scheduler Read/Write resources for simple per-opcode and operand cost model (TBD).
      3) Instruction itineraties for detailed per-cycle reservation tables.
      
      These will all live side-by-side. Any subtarget can use any
      combination of them. Instruction itineraries will not change in the
      near term. In the long run, I expect them to only be relevant for
      in-order VLIW machines that have complex contraints and require a
      precise scheduling/bundling model. Once itineraries are only actively
      used by VLIW-ish targets, they could be replaced by something more
      appropriate for those targets.
      
      This tablegen backend rewrite sets things up for introducing
      MachineModel type #2: per opcode/operand cost model.
      
      llvm-svn: 159891
      87255e34
    • Manman Ren's avatar
      X86: Fix optimizeCompare to correctly check safe condition. · bb360740
      Manman Ren authored
      It is safe if EFLAGS is killed or re-defined.
      When we are done with the basic block, check whether EFLAGS is live-out.
      Do not optimize away cmp if EFLAGS is live-out.
      
      llvm-svn: 159888
      bb360740
  6. Jul 06, 2012
    • Manman Ren's avatar
      X86: peephole optimization to remove cmp instruction · c9656737
      Manman Ren authored
      For each Cmp, we check whether there is an earlier Sub which make Cmp
      redundant. We handle the case where SUB operates on the same source operands as
      Cmp, including the case where the two source operands are swapped.
      
      llvm-svn: 159838
      c9656737
  7. Jul 05, 2012
  8. Jul 04, 2012
    • Jakob Stoklund Olesen's avatar
      Ensure CopyToReg nodes are always glued to the call instruction. · 2dee8124
      Jakob Stoklund Olesen authored
      The CopyToReg nodes that set up the argument registers before a call
      must be glued to the call instruction. Otherwise, the scheduler may emit
      the physreg copies long before the call, causing long live ranges for
      the fixed registers.
      
      Besides disabling good register allocation, that can also expose
      problems when EmitInstrWithCustomInserter() splits a basic block during
      the live range of a physreg.
      
      llvm-svn: 159721
      2dee8124
    • Jakob Stoklund Olesen's avatar
      Add early if-conversion support to X86. · 49e4d4b3
      Jakob Stoklund Olesen authored
      Implement the TII hooks needed by EarlyIfConversion to create cmov
      instructions and estimate their latency.
      
      Early if-conversion is still not enabled by default.
      
      llvm-svn: 159695
      49e4d4b3
  9. Jul 03, 2012
  10. Jul 02, 2012
  11. Jul 01, 2012
  12. Jun 29, 2012
    • Rafael Espindola's avatar
      In the initial exec mode we always do a load to find the address of a variable. · efdfb1e6
      Rafael Espindola authored
      Before this patch in pic 32 bit code we would add the global base register
      and not load from that address. This is a really old bug, but before the
      introduction of the tls attributes we would never select initial exec for
      pic code.
      
      llvm-svn: 159409
      efdfb1e6
    • Manman Ren's avatar
      X86: add more GATHER intrinsics in LLVM · 98a5bf24
      Manman Ren authored
      Corrected type for index of llvm.x86.avx2.gather.d.pd.256
        from 256-bit to 128-bit.
      Corrected types for src|dst|mask of llvm.x86.avx2.gather.q.ps.256
        from 256-bit to 128-bit.
      
      Support the following intrinsics:
        llvm.x86.avx2.gather.d.q, llvm.x86.avx2.gather.q.q
        llvm.x86.avx2.gather.d.q.256, llvm.x86.avx2.gather.q.q.256
        llvm.x86.avx2.gather.d.d, llvm.x86.avx2.gather.q.d
        llvm.x86.avx2.gather.d.d.256, llvm.x86.avx2.gather.q.d.256
      
      llvm-svn: 159402
      98a5bf24
  13. Jun 28, 2012
  14. Jun 26, 2012
    • Manman Ren's avatar
      X86: add GATHER intrinsics (AVX2) in LLVM · a0982041
      Manman Ren authored
      Support the following intrinsics:
      llvm.x86.avx2.gather.d.pd, llvm.x86.avx2.gather.q.pd
      llvm.x86.avx2.gather.d.pd.256, llvm.x86.avx2.gather.q.pd.256
      llvm.x86.avx2.gather.d.ps, llvm.x86.avx2.gather.q.ps
      llvm.x86.avx2.gather.d.ps.256, llvm.x86.avx2.gather.q.ps.256
      
      Modified Disassembler to handle VSIB addressing mode.
      
      llvm-svn: 159221
      a0982041
    • Jack Carter's avatar
      There are a number of generic inline asm operand modifiers that · 5e69cffe
      Jack Carter authored
      up to r158925 were handled as processor specific. Making them 
      generic and putting tests for these modifiers in the CodeGen/Generic
      directory caused a number of targets to fail. 
      
      This commit addresses that problem by having the targets call 
      the generic routine for generic modifiers that they don't currently
      have explicit code for.
      
      For now only generic print operands 'c' and 'n' are supported.vi
      
      
      Affected files:
      
          test/CodeGen/Generic/asm-large-immediate.ll
          lib/Target/PowerPC/PPCAsmPrinter.cpp
          lib/Target/NVPTX/NVPTXAsmPrinter.cpp
          lib/Target/ARM/ARMAsmPrinter.cpp
          lib/Target/XCore/XCoreAsmPrinter.cpp
          lib/Target/X86/X86AsmPrinter.cpp
          lib/Target/Hexagon/HexagonAsmPrinter.cpp
          lib/Target/CellSPU/SPUAsmPrinter.cpp
          lib/Target/Sparc/SparcAsmPrinter.cpp
          lib/Target/MBlaze/MBlazeAsmPrinter.cpp
          lib/Target/Mips/MipsAsmPrinter.cpp
          
      MSP430 isn't represented because it did not even run with
      the long existing 'c' modifier and it was not apparent what
      needs to be done to get it inline asm ready.
      
      Contributer: Jack Carter
      llvm-svn: 159203
      5e69cffe
    • Elena Demikhovsky's avatar
      Removed unused variable · 863d2d32
      Elena Demikhovsky authored
      llvm-svn: 159197
      863d2d32
    • Bill Wendling's avatar
      Rename to match other X86_64* names. · 8ed44466
      Bill Wendling authored
      llvm-svn: 159196
      8ed44466
    • Elena Demikhovsky's avatar
      Shuffle optimization for AVX/AVX2. · 26088d2e
      Elena Demikhovsky authored
      The current patch optimizes frequently used shuffle patterns and gives these instruction sequence reduction.
      Before:
            vshufps $-35, %xmm1, %xmm0, %xmm2 ## xmm2 = xmm0[1,3],xmm1[1,3]
             vpermilps       $-40, %xmm2, %xmm2 ## xmm2 = xmm2[0,2,1,3]
             vextractf128    $1, %ymm1, %xmm1
             vextractf128    $1, %ymm0, %xmm0
             vshufps $-35, %xmm1, %xmm0, %xmm0 ## xmm0 = xmm0[1,3],xmm1[1,3]
             vpermilps       $-40, %xmm0, %xmm0 ## xmm0 = xmm0[0,2,1,3]
             vinsertf128     $1, %xmm0, %ymm2, %ymm0
      After:
            vshufps $13, %ymm0, %ymm1, %ymm1 ## ymm1 = ymm1[1,3],ymm0[0,0],ymm1[5,7],ymm0[4,4]
            vshufps $13, %ymm0, %ymm0, %ymm0 ## ymm0 = ymm0[1,3,0,0,5,7,4,4]
            vunpcklps       %ymm1, %ymm0, %ymm0 ## ymm0 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[4],ymm1[4],ymm0[5],ymm1[5]
      
      llvm-svn: 159188
      26088d2e
    • Craig Topper's avatar
      Remove some duplicate instructions that exist only to given different... · 94bf0f38
      Craig Topper authored
      Remove some duplicate instructions that exist only to given different mnemonics for the assembler. Use InstAlias instead.
      
      llvm-svn: 159184
      94bf0f38
    • Eli Friedman's avatar
      Make some ugly hacks for inline asm operands which name a specific register a... · bbcd09cc
      Eli Friedman authored
      Make some ugly hacks for inline asm operands which name a specific register a bit more thorough.  PR13196.
      
      llvm-svn: 159176
      bbcd09cc
  15. Jun 25, 2012
Loading