Skip to content
  1. Oct 09, 2012
  2. Sep 26, 2012
  3. Sep 21, 2012
  4. Sep 13, 2012
  5. Sep 11, 2012
  6. Aug 30, 2012
    • Michael Liao's avatar
      Introduce 'UseSSEx' to force SSE legacy encoding · bbd10792
      Michael Liao authored
      - Add 'UseSSEx' to force SSE legacy insn not being selected when AVX is
        enabled.
      
        As the penalty of inter-mixing SSE and AVX instructions, we need
        prevent SSE legacy insn from being generated except explicitly
        specified through some intrinsics. For patterns supported by both
        SSE and AVX, so far, we force AVX insn will be tried first relying on
        AddedComplexity or position in td file. It's error-prone and
        introduces bugs accidentally.
      
        'UseSSEx' is disabled when AVX is turned on. For SSE insns inherited
        by AVX, we need this predicate to force VEX encoding or SSE legacy
        encoding only.
      
        For insns not inherited by AVX, we still use the previous predicates,
        i.e. 'HasSSEx'. So far, these insns fall into the following
        categories:
        * SSE insns with MMX operands
        * SSE insns with GPR/MEM operands only (xFENCE, PREFETCH, CLFLUSH,
          CRC, and etc.)
        * SSE4A insns.
        * MMX insns.
        * x87 insns added by SSE.
      
      2 test cases are modified:
      
       - test/CodeGen/X86/fast-isel-x86-64.ll
         AVX code generation is different from SSE one. 'vcvtsi2sdq' cannot be
         selected by fast-isel due to complicated pattern and fast-isel
         fallback to materialize it from constant pool.
      
       - test/CodeGen/X86/widen_load-1.ll
         AVX code generation is different from SSE one after fixing SSE/AVX
         inter-mixing. Exec-domain fixing prefers 'vmovapd' instead of
         'vmovaps'.
      
      llvm-svn: 162919
      bbd10792
  7. Aug 27, 2012
  8. Aug 24, 2012
  9. Jul 18, 2012
  10. Jul 12, 2012
  11. Jun 29, 2012
    • 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
  12. 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
  13. Jun 03, 2012
  14. Jun 01, 2012
    • Hans Wennborg's avatar
      Implement the local-dynamic TLS model for x86 (PR3985) · 789acfb6
      Hans Wennborg authored
      This implements codegen support for accesses to thread-local variables
      using the local-dynamic model, and adds a clean-up pass so that the base
      address for the TLS block can be re-used between local-dynamic access on
      an execution path.
      
      llvm-svn: 157818
      789acfb6
  15. May 31, 2012
  16. May 10, 2012
  17. May 09, 2012
  18. Apr 27, 2012
    • Benjamin Kramer's avatar
      X86: Don't emit conditional floating point moves on when targeting pre-pentiumpro architectures. · 913da4b2
      Benjamin Kramer authored
      * Model FPSW (the FPU status word) as a register.
      * Add ISel patterns for the FUCOM*, FNSTSW and SAHF instructions.
      * During Legalize/Lowering, build a node sequence to transfer the comparison
      result from FPSW into EFLAGS. If you're wondering about the right-shift: That's
      an implicit sub-register extraction (%ax -> %ah) which is handled later on by
      the instruction selector.
      
      Fixes PR6679. Patch by Christoph Erhardt!
      
      llvm-svn: 155704
      913da4b2
  19. Apr 03, 2012
  20. Mar 06, 2012
  21. Mar 05, 2012
  22. Feb 27, 2012
  23. Feb 24, 2012
  24. Feb 18, 2012
  25. Feb 16, 2012
  26. Jan 17, 2012
  27. Jan 16, 2012
  28. Jan 12, 2012
  29. Jan 10, 2012
  30. Jan 09, 2012
  31. Jan 01, 2012
  32. Dec 12, 2011
  33. Dec 09, 2011
  34. Dec 08, 2011
    • Evan Cheng's avatar
      Many of the SSE patterns should not be selected when AVX is available. This... · 4d1a2d44
      Evan Cheng authored
      Many of the SSE patterns should not be selected when AVX is available. This led to the following code in X86Subtarget.cpp
      
        if (HasAVX)
          X86SSELevel = NoMMXSSE;
      
      This is so patterns that are predicated on hasSSE3, etc. would not be selected when avx is available. Instead, the AVX variant is selected.
      However, this breaks instructions which do not have AVX variants.
      
      The right way to fix this is for the SSE but not-AVX patterns to predicate on something like hasSSE3() && !hasAVX().
      Then we can take out the hack in X86Subtarget.cpp. Patterns which do not have AVX variants do not need to change.
      
      However, we need to audit all the patterns before we make the change. This patch is workaround that fixes one specific case,
      the prefetch instructions. rdar://10538297
      
      llvm-svn: 146163
      4d1a2d44
  35. Nov 29, 2011
  36. Nov 24, 2011
Loading