Skip to content
  1. Jul 02, 2013
  2. Jul 01, 2013
    • David Blaikie's avatar
      PR16493: DebugInfo with TLS on PPC crashing due to invalid relocation · 1b01ae86
      David Blaikie authored
      Restrict the current TLS support to X86 ELF for now. Test that we don't
      produce it on PPC & we can flesh that test case out with the right thing
      once someone implements it.
      
      llvm-svn: 185389
      1b01ae86
    • Ulrich Weigand's avatar
      · 85c6f7f7
      Ulrich Weigand authored
      [PowerPC] Support all condition register logical instructions
      
      This adds support for all missing condition register logical
      instructions and extended mnemonics to the asm parser.
      
      llvm-svn: 185387
      85c6f7f7
    • Chad Rosier's avatar
      Add a newline. · 797ee3e3
      Chad Rosier authored
      llvm-svn: 185385
      797ee3e3
    • Bill Schmidt's avatar
      Index: test/CodeGen/PowerPC/reloc-align.ll · 48fc20a0
      Bill Schmidt authored
      ===================================================================
      --- test/CodeGen/PowerPC/reloc-align.ll	(revision 0)
      +++ test/CodeGen/PowerPC/reloc-align.ll	(revision 0)
      @@ -0,0 +1,34 @@
      +; RUN: llc -mcpu=pwr7 -O1 < %s | FileCheck %s
      +
      +; This test verifies that the peephole optimization of address accesses
      +; does not produce a load or store with a relocation that can't be
      +; satisfied for a given instruction encoding.  Reduced from a test supplied
      +; by Hal Finkel.
      +
      +target datalayout = "E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f128:128:128-v128:128:128-n32:64"
      +target triple = "powerpc64-unknown-linux-gnu"
      +
      +%struct.S1 = type { [8 x i8] }
      +
      +@main.l_1554 = internal global { i8, i8, i8, i8, i8, i8, i8, i8 } { i8 -1, i8 -6, i8 57, i8 62, i8 -48, i8 0, i8 58, i8 80 }, align 1
      +
      +; Function Attrs: nounwind readonly
      +define signext i32 @main() #0 {
      +entry:
      +  %call = tail call fastcc signext i32 @func_90(%struct.S1* byval bitcast ({ i8, i8, i8, i8, i8, i8, i8, i8 }* @main.l_1554 to %struct.S1*))
      +; CHECK-NOT: ld {{[0-9]+}}, main.l_1554@toc@l
      +  ret i32 %call
      +}
      +
      +; Function Attrs: nounwind readonly
      +define internal fastcc signext i32 @func_90(%struct.S1* byval nocapture %p_91) #0 {
      +entry:
      +  %0 = bitcast %struct.S1* %p_91 to i64*
      +  %bf.load = load i64* %0, align 1
      +  %bf.shl = shl i64 %bf.load, 26
      +  %bf.ashr = ashr i64 %bf.shl, 54
      +  %bf.cast = trunc i64 %bf.ashr to i32
      +  ret i32 %bf.cast
      +}
      +
      +attributes #0 = { nounwind readonly "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf"="true" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "unsafe-fp-math"="false" "use-soft-float"="false" }
      Index: lib/Target/PowerPC/PPCAsmPrinter.cpp
      ===================================================================
      --- lib/Target/PowerPC/PPCAsmPrinter.cpp	(revision 185327)
      +++ lib/Target/PowerPC/PPCAsmPrinter.cpp	(working copy)
      @@ -679,7 +679,26 @@ void PPCAsmPrinter::EmitInstruction(const MachineI
             OutStreamer.EmitRawText(StringRef("\tmsync"));
             return;
           }
      +    break;
      +  case PPC::LD:
      +  case PPC::STD:
      +  case PPC::LWA: {
      +    // Verify alignment is legal, so we don't create relocations
      +    // that can't be supported.
      +    // FIXME:  This test is currently disabled for Darwin.  The test
      +    // suite shows a handful of test cases that fail this check for
      +    // Darwin.  Those need to be investigated before this sanity test
      +    // can be enabled for those subtargets.
      +    if (!Subtarget.isDarwin()) {
      +      unsigned OpNum = (MI->getOpcode() == PPC::STD) ? 2 : 1;
      +      const MachineOperand &MO = MI->getOperand(OpNum);
      +      if (MO.isGlobal() && MO.getGlobal()->getAlignment() < 4)
      +        llvm_unreachable("Global must be word-aligned for LD, STD, LWA!");
      +    }
      +    // Now process the instruction normally.
      +    break;
         }
      +  }
       
         LowerPPCMachineInstrToMCInst(MI, TmpInst, *this);
         OutStreamer.EmitInstruction(TmpInst);
      Index: lib/Target/PowerPC/PPCISelDAGToDAG.cpp
      ===================================================================
      --- lib/Target/PowerPC/PPCISelDAGToDAG.cpp	(revision 185327)
      +++ lib/Target/PowerPC/PPCISelDAGToDAG.cpp	(working copy)
      @@ -1530,6 +1530,14 @@ void PPCDAGToDAGISel::PostprocessISelDAG() {
             if (GlobalAddressSDNode *GA = dyn_cast<GlobalAddressSDNode>(ImmOpnd)) {
               SDLoc dl(GA);
               const GlobalValue *GV = GA->getGlobal();
      +        // We can't perform this optimization for data whose alignment
      +        // is insufficient for the instruction encoding.
      +        if (GV->getAlignment() < 4 &&
      +            (StorageOpcode == PPC::LD || StorageOpcode == PPC::STD ||
      +             StorageOpcode == PPC::LWA)) {
      +          DEBUG(dbgs() << "Rejected this candidate for alignment.\n\n");
      +          continue;
      +        }
               ImmOpnd = CurDAG->getTargetGlobalAddress(GV, dl, MVT::i64, 0, Flags);
             } else if (ConstantPoolSDNode *CP =
                        dyn_cast<ConstantPoolSDNode>(ImmOpnd)) {
      
      llvm-svn: 185380
      48fc20a0
    • Chad Rosier's avatar
      [ARMAsmParser] Sort the ARM register lists based on the encoding value, not the · fa705ee3
      Chad Rosier authored
      tablegen enum values.  This should be the last fix due to fallout from r185094.
      
      llvm-svn: 185379
      fa705ee3
    • Akira Hatanaka's avatar
      [mips] Reverse the order of source operands of shift and rotate instructions that · 1af66c9b
      Akira Hatanaka authored
      have three register operands.
      
      No intended functionality changes.
      
      llvm-svn: 185376
      1af66c9b
    • Ulrich Weigand's avatar
      · f7152a85
      Ulrich Weigand authored
      [PowerPC] Also add "msync" alias
      
      This adds an alias for "msync" (which is used on Book E
      systems instead of "sync").
      
      llvm-svn: 185375
      f7152a85
    • Akira Hatanaka's avatar
      [mips] Increase the number of floating point control registers available to 32. · 263c6af8
      Akira Hatanaka authored
      Create a dedicated register class for floating point condition code registers and
      move FCC0 from register class CCR to the new register class.
      
      llvm-svn: 185373
      263c6af8
    • Anton Korobeynikov's avatar
      Add jump tables handling for MSP430. · 82bedb1f
      Anton Korobeynikov authored
      Patch by Job Noorman!
      
      llvm-svn: 185364
      82bedb1f
    • Hal Finkel's avatar
      Don't form PPC CTR loops for over-sized exit counts · 25e4a0d4
      Hal Finkel authored
      Although you can't generate this from C on PPC64, if you have a loop using a
      64-bit counter on PPC32 then you can't form a CTR-based loop for it. This had
      been cauing the PPCCTRLoops pass to assert.
      
      Thanks to Joerg Sonnenberger for providing a test case!
      
      llvm-svn: 185361
      25e4a0d4
    • Tim Northover's avatar
      AArch64: correct CodeGen of MOVZ/MOVK combinations. · 8625fd8c
      Tim Northover authored
      According to the AArch64 ELF specification (4.6.8), it's the
      assembler's responsibility to make sure the shift amount is correct in
      relocated MOVZ/MOVK instructions.
      
      This wasn't being obeyed by either the MCJIT CodeGen or RuntimeDyldELF
      (which happened to work out well for JIT tests). This commit should
      make us compliant in this area.
      
      llvm-svn: 185360
      8625fd8c
    • Tim Northover's avatar
      Revert r185339 (ARM: relax the atomic release barrier to "dmb ishst") · 7f3d9e1f
      Tim Northover authored
      Turns out I'd misread the architecture reference manual and thought
      that was a load/store-store barrier, when it's not.
      
      Thanks for pointing it out Eli!
      
      llvm-svn: 185356
      7f3d9e1f
    • Ulrich Weigand's avatar
      · 3a75861b
      Ulrich Weigand authored
      [PowerPC] Fix @got references to local symbols
      
      A @got reference must always result in a relocation, so that
      the linker has a chance to set up the GOT entry, even if the
      symbol happens to be local.
      
      Add a PPCELFObjectWriter::ExplicitRelSym routine that enforces
      a relocation to be emitted for GOT references.
      
      llvm-svn: 185353
      3a75861b
    • Ulrich Weigand's avatar
      · 7a9fcdf6
      Ulrich Weigand authored
      [PowerPC] Add "wait" instruction
      
      This adds the "wait" instruction and its extended mnemonics.
      
      llvm-svn: 185350
      7a9fcdf6
    • Ulrich Weigand's avatar
      · 98fcc7b6
      Ulrich Weigand authored
      [PowerPC] Support "eieio" instruction
      
      This adds support for the "eieio" instruction to
      the asm parser.
      
      llvm-svn: 185349
      98fcc7b6
    • Ulrich Weigand's avatar
      · 797f1a3f
      Ulrich Weigand authored
      [PowerPC] Add variants of "sync" instruction
      
      This adds support for the "sync $L" instruction with operand,
      and provides aliases for "lwsync" and "ptesync".
      
      llvm-svn: 185344
      797f1a3f
    • Tim Northover's avatar
      ARM: relax the atomic release barrier to "dmb ishst" · 953abab4
      Tim Northover authored
      I believe the full "dmb ish" barrier is not required to guarantee release
      semantics for atomic operations. The weaker "dmb ishst" prevents previous
      operations being reordered with a store executed afterwards, which is enough.
      
      A key point to note (fortunately already correct) is that this barrier alone is
      *insufficient* for sequential consistency, no matter how liberally placed.
      
      llvm-svn: 185339
      953abab4
    • Justin Holewinski's avatar
      [NVPTX] Add support for module-scope inline asm · d2bbdf05
      Justin Holewinski authored
      Since we were explicitly not calling AsmPrinter::doInitialization,
      any module-scope inline asm was not being printed.
      
      llvm-svn: 185336
      d2bbdf05
    • Justin Holewinski's avatar
      [NVPTX] We dont use NVBuiltin anymore · 3694f11f
      Justin Holewinski authored
      llvm-svn: 185335
      3694f11f
    • Justin Holewinski's avatar
      [NVPTX] Cut down on physical register defs · 8fab95d5
      Justin Holewinski authored
      We are using virtual registers throughout now, but we still need
      to keep a few physical registers per class around to keep the
      infrastructure happy.
      
      llvm-svn: 185334
      8fab95d5
    • Justin Holewinski's avatar
      [NVPTX] 64-bit ADDC/ADDE are not legal · 51cb1349
      Justin Holewinski authored
      llvm-svn: 185333
      51cb1349
    • Justin Holewinski's avatar
    • Justin Holewinski's avatar
      [NVPTX] Handle signext/zeroext attributes properly · a2911283
      Justin Holewinski authored
      Fix a case where we were incorrectly sign-extending a value when we should have been zero-extending the value.
      
      Also change some SIGN_EXTEND to ANY_EXTEND because we really dont care and may have more opportunity to fold subexpressions
      
      llvm-svn: 185331
      a2911283
    • Justin Holewinski's avatar
      [NVPTX] Add support for native SIGN_EXTEND_INREG where available · 318c625f
      Justin Holewinski authored
      llvm-svn: 185330
      318c625f
    • Justin Holewinski's avatar
      [NVPTX] Add isel patterns for [reg+offset] form of ldg/ldu. · e40e929e
      Justin Holewinski authored
      llvm-svn: 185329
      e40e929e
    • Justin Holewinski's avatar
  3. Jun 30, 2013
  4. Jun 29, 2013
  5. Jun 28, 2013
Loading