Skip to content
  1. Dec 19, 2009
    • Bill Wendling's avatar
      Changes from review: · 022d18fa
      Bill Wendling authored
      - Move DisableScheduling flag into TargetOption.h
      - Move SDNodeOrdering into its own header file. Give it a minimal interface that
        doesn't conflate construction with storage.
      - Move assigning the ordering into the SelectionDAGBuilder.
      
      This isn't used yet, so there should be no functional changes.
      
      llvm-svn: 91727
      022d18fa
    • Dan Gohman's avatar
      Make this comment more precise. · 7db230f5
      Dan Gohman authored
      llvm-svn: 91722
      7db230f5
  2. Dec 18, 2009
    • Evan Cheng's avatar
      Increase opportunities to optimize (brcond (srl (and c1), c2)). · b175de63
      Evan Cheng authored
      llvm-svn: 91717
      b175de63
    • Eli Friedman's avatar
      Fix gcc warning. · 3a7cdaca
      Eli Friedman authored
      llvm-svn: 91715
      3a7cdaca
    • Rafael Espindola's avatar
      Catch more cases of a pointer being marked garbage twice. This helps when · 2c5792a6
      Rafael Espindola authored
      debugging some leaks (PR5770 in particular).
      
      llvm-svn: 91713
      2c5792a6
    • Bob Wilson's avatar
      Reapply 91459 with a simple fix for the problem that broke the x86_64-darwin · 532cd232
      Bob Wilson authored
      bootstrap.  This also replaces the WeakVH references that Chris objected to
      with normal Value references.
      
      llvm-svn: 91711
      532cd232
    • Victor Hernandez's avatar
      Formalize MDNode's function-localness: · 0471abd5
      Victor Hernandez authored
      - an MDNode is designated as function-local when created, and continues to be even if its operands are modified not to refer to function-local IR
      - function-localness is designated via lowest bit in SubclassData
      - getLocalFunction() descends MDNode tree to see if it is consistently function-local
      
      Add verification of MDNodes to checks that MDNodes are consistently function-local.
      Update AsmWriter to use isFunctionLocal().
      
      llvm-svn: 91708
      0471abd5
    • Daniel Dunbar's avatar
      Fix Win32 Path.inc for API update. · cf7744e4
      Daniel Dunbar authored
      llvm-svn: 91706
      cf7744e4
    • Dan Gohman's avatar
      Revert this use of NUW/NSW also. Overflow-undefined multiplication isn't · 51f13056
      Dan Gohman authored
      associative either.
      
      llvm-svn: 91701
      51f13056
    • Rafael Espindola's avatar
      Fix libstdc++ build on ARM linux and part of PR5770. · b73b4fd3
      Rafael Espindola authored
      MI was not being used but it was also not being deleted, so it was kept in the garbage list. The memory itself was freed once the function code gen was done.
      
      Once in a while the codegen of another function would create an instruction on the same address. Adding it to the garbage group would work once, but when another pointer was added it would cause an assert as "Cache" was about to be pushed to Ts.
      
      For a patch that make us detect problems like this earlier, take a look at
      
      http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20091214/092758.html
      
      With that patch we assert as soon and the new instruction is added to the garbage set.
      
      llvm-svn: 91691
      b73b4fd3
    • Tilmann Scheller's avatar
      Fix wrong frame pointer save offset in the 64-bit PowerPC SVR4 ABI. · 5b2df8dc
      Tilmann Scheller authored
      Patch contributed by Ken Werner of IBM!
      
      llvm-svn: 91681
      5b2df8dc
    • Tilmann Scheller's avatar
      Add support for calls through function pointers in the 64-bit PowerPC SVR4 ABI. · 79fef934
      Tilmann Scheller authored
      Patch contributed by Ken Werner of IBM!
      
      llvm-svn: 91680
      79fef934
    • Eli Friedman's avatar
      Optimize icmp of null and select of two constants even if the select has · 86b9d75d
      Eli Friedman authored
      multiple uses.  (The construct in question was found in gcc.)
      
      llvm-svn: 91675
      86b9d75d
    • Evan Cheng's avatar
      On recent Intel u-arch's, folding loads into some unary SSE instructions can · 4cf30b72
      Evan Cheng authored
      be non-optimal. To be precise, we should avoid folding loads if the instructions
      only update part of the destination register, and the non-updated part is not
      needed. e.g. cvtss2sd, sqrtss. Unfolding the load from these instructions breaks
      the partial register dependency and it can improve performance. e.g.
      
      movss (%rdi), %xmm0
      cvtss2sd %xmm0, %xmm0
      
      instead of
      cvtss2sd (%rdi), %xmm0
      
      An alternative method to break dependency is to clear the register first. e.g.
      xorps %xmm0, %xmm0
      cvtss2sd (%rdi), %xmm0
      
      llvm-svn: 91672
      4cf30b72
    • Dan Gohman's avatar
      Revert this use of NSW; this one isn't actually safe. NSW addition · 7a2dab88
      Dan Gohman authored
      is not reassociative.
      
      llvm-svn: 91667
      7a2dab88
    • Dan Gohman's avatar
      Eliminte unnecessary uses of <cstdio>. · 57e80862
      Dan Gohman authored
      llvm-svn: 91666
      57e80862
    • Dan Gohman's avatar
      Add utility routines for NSW multiply. · 4e3b29e3
      Dan Gohman authored
      llvm-svn: 91664
      4e3b29e3
    • Dan Gohman's avatar
      Add utility routines for creating integer negation operators with NSW set. · 4ab4420d
      Dan Gohman authored
      Integer negation only overflows with INT_MIN, but that's an important case.
      
      llvm-svn: 91662
      4ab4420d
    • Dan Gohman's avatar
      Delete an unused variable. · 916fec41
      Dan Gohman authored
      llvm-svn: 91659
      916fec41
    • Eric Christopher's avatar
      Fix typo. · 4c155350
      Eric Christopher authored
      llvm-svn: 91657
      4c155350
    • Dan Gohman's avatar
      Preserve NSW information in more places. · b256ccfb
      Dan Gohman authored
      llvm-svn: 91656
      b256ccfb
    • Evan Cheng's avatar
      Re-apply 91623 now that I actually know what I was trying to do. · 3dfd04e2
      Evan Cheng authored
      llvm-svn: 91655
      3dfd04e2
    • Dan Gohman's avatar
      Add Loop contains utility methods for testing whether a loop · 18fa5686
      Dan Gohman authored
      contains another loop, or an instruction. The loop form is
      substantially more efficient on large loops than the typical
      code it replaces.
      
      llvm-svn: 91654
      18fa5686
    • Dan Gohman's avatar
      Minor code simplification. · fd7231f1
      Dan Gohman authored
      llvm-svn: 91653
      fd7231f1
    • Dan Gohman's avatar
      Whitespace cleanups. · cb0efecd
      Dan Gohman authored
      llvm-svn: 91651
      cb0efecd
    • Bob Wilson's avatar
      Handle ARM inline asm "w" constraints with 64-bit ("d") registers. · 3152b047
      Bob Wilson authored
      The change in SelectionDAGBuilder is needed to allow using bitcasts to convert
      between f64 (the default type for ARM "d" registers) and 64-bit Neon vector
      types.  Radar 7457110.
      
      llvm-svn: 91649
      3152b047
    • Dan Gohman's avatar
      Don't pass const pointers by reference. · b1924e8a
      Dan Gohman authored
      llvm-svn: 91647
      b1924e8a
    • Dan Gohman's avatar
      Update a comment. · 1af19548
      Dan Gohman authored
      llvm-svn: 91645
      1af19548
    • John McCall's avatar
      Pass the error string directly to llvm_unreachable instead of the residual · eabfd8b1
      John McCall authored
      (0 && "error").  Rough consensus seems to be that g++ *should* be diagnosing
      this because the pointer makes it not an ICE in c++03.  Everyone agrees that
      the current standard is silly and null-pointer-ness should not be based on
      ICE-ness.  Excellent fight scene in Act II, denouement weak, two stars.
      
      llvm-svn: 91644
      eabfd8b1
    • Dan Gohman's avatar
      Reapply LoopStrengthReduce and IVUsers cleanups, excluding the part · 92c36965
      Dan Gohman authored
      of 91296 that caused trouble -- the Processed list needs to be
      preserved for the livetime of the pass, as AddUsersIfInteresting
      is called from other passes.
      
      llvm-svn: 91641
      92c36965
    • Sean Callanan's avatar
      Instruction fixes, added instructions, and AsmString changes in the · 04d8cb74
      Sean Callanan authored
      X86 instruction tables.
      
      Also (while I was at it) cleaned up the X86 tables, removing tabs and
      80-line violations.
      
      This patch was reviewed by Chris Lattner, but please let me know if
      there are any problems.
      
      * X86*.td
      	Removed tabs and fixed 80-line violations
      
      * X86Instr64bit.td
      	(IRET, POPCNT, BT_, LSL, SWPGS, PUSH_S, POP_S, L_S, SMSW)
      		Added
      	(CALL, CMOV) Added qualifiers
      	(JMP) Added PC-relative jump instruction
      	(POPFQ/PUSHFQ) Added qualifiers; renamed PUSHFQ to indicate
      		that it is 64-bit only (ambiguous since it has no
      		REX prefix)
      	(MOV) Added rr form going the other way, which is encoded
      		differently
      	(MOV) Changed immediates to offsets, which is more correct;
      		also fixed MOV64o64a to have to a 64-bit offset
      	(MOV) Fixed qualifiers
      	(MOV) Added debug-register and condition-register moves
      	(MOVZX) Added more forms
      	(ADC, SUB, SBB, AND, OR, XOR) Added reverse forms, which
      		(as with MOV) are encoded differently
      	(ROL) Made REX.W required
      	(BT) Uncommented mr form for disassembly only
      	(CVT__2__) Added several missing non-intrinsic forms
      	(LXADD, XCHG) Reordered operands to make more sense for
      		MRMSrcMem
      	(XCHG) Added register-to-register forms
      	(XADD, CMPXCHG, XCHG) Added non-locked forms
      * X86InstrSSE.td
      	(CVTSS2SI, COMISS, CVTTPS2DQ, CVTPS2PD, CVTPD2PS, MOVQ)
      		Added
      * X86InstrFPStack.td
      	(COM_FST0, COMP_FST0, COM_FI, COM_FIP, FFREE, FNCLEX, FNOP,
      	 FXAM, FLDL2T, FLDL2E, FLDPI, FLDLG2, FLDLN2, F2XM1, FYL2X,
      	 FPTAN, FPATAN, FXTRACT, FPREM1, FDECSTP, FINCSTP, FPREM,
      	 FYL2XP1, FSINCOS, FRNDINT, FSCALE, FCOMPP, FXSAVE,
      	 FXRSTOR)
      		Added
      	(FCOM, FCOMP) Added qualifiers
      	(FSTENV, FSAVE, FSTSW) Fixed opcode names
      	(FNSTSW) Added implicit register operand
      * X86InstrInfo.td
      	(opaque512mem) Added for FXSAVE/FXRSTOR
      	(offset8, offset16, offset32, offset64) Added for MOV
      	(NOOPW, IRET, POPCNT, IN, BTC, BTR, BTS, LSL, INVLPG, STR,
      	 LTR, PUSHFS, PUSHGS, POPFS, POPGS, LDS, LSS, LES, LFS,
      	 LGS, VERR, VERW, SGDT, SIDT, SLDT, LGDT, LIDT, LLDT,
      	 LODSD, OUTSB, OUTSW, OUTSD, HLT, RSM, FNINIT, CLC, STC,
      	 CLI, STI, CLD, STD, CMC, CLTS, XLAT, WRMSR, RDMSR, RDPMC,
      	 SMSW, LMSW, CPUID, INVD, WBINVD, INVEPT, INVVPID, VMCALL,
      	 VMCLEAR, VMLAUNCH, VMRESUME, VMPTRLD, VMPTRST, VMREAD,
      	 VMWRITE, VMXOFF, VMXON) Added
      	(NOOPL, POPF, POPFD, PUSHF, PUSHFD) Added qualifier
      	(JO, JNO, JB, JAE, JE, JNE, JBE, JA, JS, JNS, JP, JNP, JL,
      	 JGE, JLE, JG, JCXZ) Added 32-bit forms
      	(MOV) Changed some immediate forms to offset forms
      	(MOV) Added reversed reg-reg forms, which are encoded
      		differently
      	(MOV) Added debug-register and condition-register moves
      	(CMOV) Added qualifiers
      	(AND, OR, XOR, ADC, SUB, SBB) Added reverse forms, like MOV
      	(BT) Uncommented memory-register forms for disassembler
      	(MOVSX, MOVZX) Added forms
      	(XCHG, LXADD) Made operand order make sense for MRMSrcMem
      	(XCHG) Added register-register forms
      	(XADD, CMPXCHG) Added unlocked forms
      * X86InstrMMX.td
      	(MMX_MOVD, MMV_MOVQ) Added forms
      * X86InstrInfo.cpp: Changed PUSHFQ to PUSHFQ64 to reflect table
      	change
      
      * X86RegisterInfo.td: Added debug and condition register sets
      * x86-64-pic-3.ll: Fixed testcase to reflect call qualifier
      * peep-test-3.ll: Fixed testcase to reflect test qualifier
      * cmov.ll: Fixed testcase to reflect cmov qualifier
      * loop-blocks.ll: Fixed testcase to reflect call qualifier
      * x86-64-pic-11.ll: Fixed testcase to reflect call qualifier
      * 2009-11-04-SubregCoalescingBug.ll: Fixed testcase to reflect call
        qualifier
      * x86-64-pic-2.ll: Fixed testcase to reflect call qualifier
      * live-out-reg-info.ll: Fixed testcase to reflect test qualifier
      * tail-opts.ll: Fixed testcase to reflect call qualifiers
      * x86-64-pic-10.ll: Fixed testcase to reflect call qualifier
      * bss-pagealigned.ll: Fixed testcase to reflect call qualifier
      * x86-64-pic-1.ll: Fixed testcase to reflect call qualifier
      * widen_load-1.ll: Fixed testcase to reflect call qualifier
      
      llvm-svn: 91638
      04d8cb74
    • John McCall's avatar
      Sundry dependent-name fixes flagged by clang++. · 753100ce
      John McCall authored
      llvm-svn: 91636
      753100ce
    • Bill Wendling's avatar
      Revert accidental commit. · 3c13667d
      Bill Wendling authored
      llvm-svn: 91635
      3c13667d
    • Bill Wendling's avatar
      Turn off critical edge splitting for landing pads. The introduction of a · 819c356a
      Bill Wendling authored
      non-landing pad basic block as the successor to a block that ends in an
      unconditional jump will cause block folding to remove the added block as a
      successor. Thus eventually removing it AND the landing pad entirely. Critical
      edge splitting is an optimization, so we can safely turn it off when dealing
      with landing pads.
      
      llvm-svn: 91634
      819c356a
  3. Dec 17, 2009
Loading