Skip to content
  1. Mar 29, 2014
    • Tim Northover's avatar
      TableGen: avoid dereferencing nullptr variable · 3e38d290
      Tim Northover authored
      ARM64 ended up reaching odder parts of TableGen alias generation than
      current backends and caused a segfault.
      
      llvm-svn: 205089
      3e38d290
    • Tim Northover's avatar
      CodeGen: add sensible defaults for the ISD::FROUND operation · 753eca0f
      Tim Northover authored
      Some exotic types didn't know how to handle FROUND, which ARM64 uses.
      
      llvm-svn: 205088
      753eca0f
    • Tim Northover's avatar
      MC-exceptions: add support for compact-unwind without .eh_frame · d1c6f517
      Tim Northover authored
      ARM64 has compact-unwind information, but doesn't necessarily want to
      emit .eh_frame directives as well. This teaches MC about such a
      situation so that it will skip .eh_frame info when compact unwind has
      been successfully produced.
      
      For functions incompatible with compact unwind, the normal information
      is still written.
      
      llvm-svn: 205087
      d1c6f517
    • Tim Northover's avatar
      CodeGenPrep: wrangle IR to exploit AArch64 tbz/tbnz inst. · cea0abb6
      Tim Northover authored
      Given IR like:
          %bit = and %val, #imm-with-1-bit-set
          %tst = icmp %bit, 0
          br i1 %tst, label %true, label %false
      
      some targets can emit just a single instruction (tbz/tbnz in the
      AArch64 case). However, with ISel acting at the basic-block level, all
      three instructions need to be together for this to be possible.
      
      This adds another transformation to CodeGenPrep to expose these
      opportunities, if targets opt in via the hook.
      
      llvm-svn: 205086
      cea0abb6
    • Tim Northover's avatar
      MC: add a RefKind field to MCValue · 0999cbd0
      Tim Northover authored
      This is principally to allow neater mapping of fixups to relocations
      in ARM64 ELF. Without this, there isn't enough information available
      to GetRelocType, leading to many more fixup_arm64_... enumerators.
      
      llvm-svn: 205085
      0999cbd0
    • Tim Northover's avatar
      MachO: Add linker-optimisation hint framework to MC. · 53d32518
      Tim Northover authored
      Another part of the ARM64 backend (so tests will be following soon).
      This is currently used by the linker to relax adrp/ldr pairs into nops
      where possible, though could well be more broadly applicable.
      
      llvm-svn: 205084
      53d32518
    • Tim Northover's avatar
      MachO: actually set linker-private prefix at MC level. · 5627670e
      Tim Northover authored
      This was accidentally omitted from r205081.
      
      llvm-svn: 205083
      5627670e
    • Tim Northover's avatar
      MachO: allow each section to have a linker-private symbol · c3988b4a
      Tim Northover authored
      The upcoming ARM64 backend doesn't have section-relative relocations,
      so we give each section its own symbol to provide this functionality.
      Of course, it doesn't need to appear in the final executable, so
      linker-private is the best kind for this purpose.
      
      llvm-svn: 205081
      c3988b4a
    • Tim Northover's avatar
      Make GetCPISymbol a virtual method. · 9086f061
      Tim Northover authored
      ARM64 for iOS is going to want to emit these symbols in a
      linker-private style for efficiency, but other targets probably don't
      want that behaviour.
      
      llvm-svn: 205080
      9086f061
    • Tim Northover's avatar
      Intrinsics: add LLVMHalfElementsVectorType constraint · 4516de34
      Tim Northover authored
      This is like the LLVMMatchType, except the verifier checks that the
      second argument is a vector with the same base type and half the
      number of elements.
      
      This will be used by the ARM64 backend.
      
      llvm-svn: 205079
      4516de34
    • Rafael Espindola's avatar
      Completely rewrite ELFObjectWriter::RecordRelocation. · 5904e12b
      Rafael Espindola authored
      I started trying to fix a small issue, but this code has seen a small fix too
      many.
      
      The old code was fairly convoluted. Some of the issues it had:
      
      * It failed to check if a symbol difference was in the some section when
        converting a relocation to pcrel.
      * It failed to check if the relocation was already pcrel.
      * The pcrel value computation was wrong in some cases (relocation-pc.s)
      * It was missing quiet a few cases where it should not convert symbol
        relocations to section relocations, leaving the backends to patch it up.
      * It would not propagate the fact that it had changed a relocation to pcrel,
        requiring a quiet nasty work around in ARM.
      * It was missing comments.
      
      llvm-svn: 205076
      5904e12b
    • Hal Finkel's avatar
      [PowerPC] Add subregister classes for f64 VSX values · 19be506a
      Hal Finkel authored
      We had stored both f64 values and v2f64, etc. values in the VSX registers. This
      worked, but was suboptimal because we would always spill 16-byte values even
      through we almost always had scalar 8-byte values. This resulted in an
      increase in stack-size use, extra memory bandwidth, etc. To fix this, I've
      added 64-bit subregisters of the Altivec registers, and combined those with the
      existing scalar floating-point registers to form a class of VSX scalar
      floating-point registers. The ABI code has also been enhanced to use this
      register class and some other necessary improvements have been made.
      
      llvm-svn: 205075
      19be506a
    • Saleem Abdulrasool's avatar
      Windows: canonicalise the default windows triple · 37511ece
      Saleem Abdulrasool authored
      Canonicalise the default triple that is used on Windows.  This should hopefully
      fix the MSVC buildbots.
      
      llvm-svn: 205070
      37511ece
    • Akira Hatanaka's avatar
      [x86] Fix printing of register operands with q modifier. · 9afbb8c2
      Akira Hatanaka authored
      Emit 32-bit register names instead of 64-bit register names if the target does
      not have 64-bit general purpose registers.
      
      <rdar://problem/14653996>
      
      llvm-svn: 205067
      9afbb8c2
  2. Mar 28, 2014
Loading