Skip to content
  1. Jun 26, 2012
    • 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
  2. Jun 25, 2012
  3. Jun 24, 2012
  4. Jun 23, 2012
  5. Jun 22, 2012
    • Hal Finkel's avatar
      Revert r158679 - use case is unclear (and it increases the memory footprint). · 8db55472
      Hal Finkel authored
      Original commit message:
          Allow up to 64 functional units per processor itinerary.
      
          This patch changes the type used to hold the FU bitset from unsigned to uint64_t.
          This will be needed for some upcoming PowerPC itineraries.
      
      llvm-svn: 159027
      8db55472
    • Andrew Trick's avatar
      Use "NoItineraries" for processors with no itineraries. · 9c302673
      Andrew Trick authored
      This makes it explicit when ScoreboardHazardRecognizer will be used.
      "GenericItineraries" would only make sense if it contained real
      itinerary values and still required ScoreboardHazardRecognizer.
      
      llvm-svn: 158963
      9c302673
    • Jakob Stoklund Olesen's avatar
      Functions calling __builtin_eh_return must have a frame pointer. · 321d41a8
      Jakob Stoklund Olesen authored
      The code in X86TargetLowering::LowerEH_RETURN() assumes that a frame
      pointer exists, but the frame pointer was forced by the presence of
      llvm.eh.unwind.init which isn't guaranteed.
      
      If llvm.eh.unwind.init is actually required in functions calling
      eh.return (is it?), we should diagnose that instead of emitting bad
      machine code.
      
      This should fix the dragonegg-x86_64-linux-gcc-4.6-test bot.
      
      llvm-svn: 158961
      321d41a8
    • Andrew Trick's avatar
      ARM scheduling fix: don't guess at implicit operand latency. · 77d0b889
      Andrew Trick authored
      This is a minor drive-by fix with no robust way to unit test.
      As an example see neon-div.ll:
      SU(16):   %Q8<def> = VMOVLsv4i32 %D17, pred:14, pred:%noreg, %Q8<imp-use,kill>
       val SU(1): Latency=2 Reg=%Q8
      ...should be latency=1
      
      llvm-svn: 158960
      77d0b889
    • Andrew Trick's avatar
      ARM scheduling fix: compute predicated implicit use properly. · 3ccb1b8c
      Andrew Trick authored
      Minor drive by fix to cleanup latency computation. Calling
      getOperandLatency with a deliberately incorrect operand index does not
      give you the latency you want.
      
      llvm-svn: 158959
      3ccb1b8c
    • Lang Hames's avatar
      Rename -allow-excess-fp-precision flag to -fuse-fp-ops, and switch from a · b8650f10
      Lang Hames authored
      boolean flag to an enum: { Fast, Standard, Strict } (default = Standard).
      
      This option controls the creation by optimizations of fused FP ops that store
      intermediate results in higher precision than IEEE allows (E.g. FMAs). The
      behavior of this option is intended to match the behaviour specified by a
      soon-to-be-introduced frontend flag: '-ffuse-fp-ops'.
      
      Fast mode - allows formation of fused FP ops whenever they're profitable.
      
      Standard mode - allow fusion only for 'blessed' FP ops. At present the only
      blessed op is the fmuladd intrinsic. In the future more blessed ops may be
      added.
      
      Strict mode - allow fusion only if/when it can be proven that the excess
      precision won't effect the result.
      
      Note: This option only controls formation of fused ops by the optimizers.  Fused
      operations that are explicitly requested (e.g. FMA via the llvm.fma.* intrinsic)
      will always be honored, regardless of the value of this option.
      
      Internally TargetOptions::AllowExcessFPPrecision has been replaced by
      TargetOptions::AllowFPOpFusion.
      
      llvm-svn: 158956
      b8650f10
    • Hal Finkel's avatar
      Convert the PPC backend to use the new FMA infrastructure. · 0a479ae7
      Hal Finkel authored
      The existing contraction patterns are replaced with fma/fneg.
      Overall functionality should be the same.
      
      llvm-svn: 158955
      0a479ae7
Loading