Skip to content
  1. Oct 31, 2013
    • Manman Ren's avatar
      Debug Info: remove duplication of DIEs when a DIE can be shared across CUs. · 4dbdc902
      Manman Ren authored
      We add a map in DwarfDebug to map MDNodes that are shareable across CUs to the
      corresponding DIEs: MDTypeNodeToDieMap. These DIEs can be shared across CUs,
      that is why we keep the maps in DwarfDebug instead of CompileUnit.
      
      We make the assumption that if a DIE is not added to an owner yet, we assume
      it belongs to the current CU. Since DIEs for the type system are added to
      their owners immediately after creation, and other DIEs belong to the current
      CU, the assumption should be true.
      
      A testing case is added to show that we only create a single DIE for a type
      MDNode and we use ref_addr to refer to the type DIE.
      
      We also add a testing case to show ref_addr relocations for non-darwin
      platforms.
      
      llvm-svn: 193779
      4dbdc902
    • Alexey Samsonov's avatar
      DWARFAbbreviationDeclaration: remove dead code, refactor parsing code and make... · d5cc93c3
      Alexey Samsonov authored
      DWARFAbbreviationDeclaration: remove dead code, refactor parsing code and make it more robust. No functionality change.
      
      llvm-svn: 193770
      d5cc93c3
    • Andrew Trick's avatar
      74f4c749
    • Andrew Trick's avatar
      Enable variable arguments support for intrinsics. · a2efd99b
      Andrew Trick authored
      llvm-svn: 193766
      a2efd99b
    • Andrew Trick's avatar
      whitespace · d4d1d9c0
      Andrew Trick authored
      llvm-svn: 193765
      d4d1d9c0
    • Rafael Espindola's avatar
      Remove another unused flag. · 4b102d0e
      Rafael Espindola authored
      llvm-svn: 193756
      4b102d0e
    • Rafael Espindola's avatar
      Remove unused flag. · 74e1d0a0
      Rafael Espindola authored
      llvm-svn: 193752
      74e1d0a0
    • Rafael Espindola's avatar
      Rules adjustments in order to build on DragonFly BSD. · aca9739a
      Rafael Espindola authored
      Patch by Robin Hahling.
      
      llvm-svn: 193750
      aca9739a
    • Rafael Espindola's avatar
      Remove the --shrink-wrap option. · dbec9d9b
      Rafael Espindola authored
      It had no tests, was unused and was "experimental at best".
      
      llvm-svn: 193749
      dbec9d9b
    • Cameron McInally's avatar
      Add AVX512 unmasked integer broadcast intrinsics and support. · 394d557f
      Cameron McInally authored
      llvm-svn: 193748
      394d557f
    • Elena Demikhovsky's avatar
      AVX-512: Implemented CMOV for 512-bit vectors · 49665690
      Elena Demikhovsky authored
      llvm-svn: 193747
      49665690
    • Richard Sandiford's avatar
      [SystemZ] Automatically detect zEC12 and z196 hosts · f834ea19
      Richard Sandiford authored
      As on other hosts, the CPU identification instruction is priveleged,
      so we need to look through /proc/cpuinfo.  I copied the PowerPC way of
      handling "generic".
      
      Several tests were implicitly assuming z10 and so failed on z196.
      
      llvm-svn: 193742
      f834ea19
    • Amara Emerson's avatar
      [AArch64] Make the use of FP instructions optional, but enabled by default. · f80f95fc
      Amara Emerson authored
      This adds a new subtarget feature called FPARMv8 (implied by NEON), and
      predicates the support of the FP instructions and registers on this feature.
      
      llvm-svn: 193739
      f80f95fc
    • Rafael Espindola's avatar
      Fix a use after free on invalid input. · 26b43cac
      Rafael Espindola authored
      llvm-svn: 193737
      26b43cac
    • Rafael Espindola's avatar
      Fix most memory leaks in tablegen. · 8fb73c87
      Rafael Espindola authored
      Found by the valgrind bot.
      
      llvm-svn: 193736
      8fb73c87
    • Rafael Espindola's avatar
      Merge CallGraph and BasicCallGraph. · 6554e5a9
      Rafael Espindola authored
      llvm-svn: 193734
      6554e5a9
    • Jim Grosbach's avatar
      Legalize: Improve legalization of long vector extends. · 72366786
      Jim Grosbach authored
      When an extend more than doubles the size of the elements (e.g., a zext
      from v16i8 to v16i32), the normal legalization method of splitting the
      vectors will run into problems as by the time the destination vector is
      legal, the source vector is illegal. The end result is the operation
      often becoming scalarized, with the typical horrible performance. For
      example, on x86_64, the simple input of:
      define void @bar(<16 x i8> %a, <16 x i32>* %p) nounwind {
        %tmp = zext <16 x i8> %a to <16 x i32>
        store <16 x i32> %tmp, <16 x i32>*%p
        ret void
      }
      
      Generates:
        .section  __TEXT,__text,regular,pure_instructions
        .section  __TEXT,__const
        .align  5
      LCPI0_0:
        .long 255                     ## 0xff
        .long 255                     ## 0xff
        .long 255                     ## 0xff
        .long 255                     ## 0xff
        .long 255                     ## 0xff
        .long 255                     ## 0xff
        .long 255                     ## 0xff
        .long 255                     ## 0xff
        .section  __TEXT,__text,regular,pure_instructions
        .globl  _bar
        .align  4, 0x90
      _bar:
        vpunpckhbw  %xmm0, %xmm0, %xmm1
        vpunpckhwd  %xmm0, %xmm1, %xmm2
        vpmovzxwd %xmm1, %xmm1
        vinsertf128 $1, %xmm2, %ymm1, %ymm1
        vmovaps LCPI0_0(%rip), %ymm2
        vandps  %ymm2, %ymm1, %ymm1
        vpmovzxbw %xmm0, %xmm3
        vpunpckhwd  %xmm0, %xmm3, %xmm3
        vpmovzxbd %xmm0, %xmm0
        vinsertf128 $1, %xmm3, %ymm0, %ymm0
        vandps  %ymm2, %ymm0, %ymm0
        vmovaps %ymm0, (%rdi)
        vmovaps %ymm1, 32(%rdi)
        vzeroupper
        ret
      
      So instead we can check if there are legal types that enable us to split
      more cleverly when the input vector is already legal such that we don't
      turn it into an illegal type. If the extend is such that it's more than
      doubling the size of the input we check if
        - the number of vector elements is even,
        - the source type is legal,
        - the type of a split source is illegal,
        - the type of an extended (by doubling element size) source is legal, and
        - the type of that extended source when split is legal.
      If the conditions are met, instead of just splitting both the
      destination and the source types, we create an extend that only goes up
      one "step" (doubling the element width), and the continue legalizing the
      rest of the operation normally. The result is that this operates as a
      new, more effecient, termination condition for the loop of "split the
      operation until the destination type is legal."
      
      With this change, the above example now compiles to:
      _bar:
        vpxor %xmm1, %xmm1, %xmm1
        vpunpcklbw  %xmm1, %xmm0, %xmm2
        vpunpckhwd  %xmm1, %xmm2, %xmm3
        vpunpcklwd  %xmm1, %xmm2, %xmm2
        vinsertf128 $1, %xmm3, %ymm2, %ymm2
        vpunpckhbw  %xmm1, %xmm0, %xmm0
        vpunpckhwd  %xmm1, %xmm0, %xmm3
        vpunpcklwd  %xmm1, %xmm0, %xmm0
        vinsertf128 $1, %xmm3, %ymm0, %ymm0
        vmovaps %ymm0, 32(%rdi)
        vmovaps %ymm2, (%rdi)
        vzeroupper
        ret
      
      This generalizes a custom lowering that was added a while back to the
      ARM backend. That lowering is no longer necessary, and is removed. The
      testcases for it, however, provide excellent ARM tests for this change
      and so remain.
      
      rdar://14735100
      
      llvm-svn: 193727
      72366786
    • Matt Arsenault's avatar
      Fix a few typos · 909d0c06
      Matt Arsenault authored
      llvm-svn: 193723
      909d0c06
    • Matt Arsenault's avatar
      Fix CodeGen for unaligned loads with address spaces · 2ba54c3d
      Matt Arsenault authored
      llvm-svn: 193721
      2ba54c3d
  2. Oct 30, 2013
Loading