- Sep 28, 2012
-
-
Manman Ren authored
second output of SUB with first output of TEST. PR13966 llvm-svn: 164835
-
- Sep 27, 2012
-
-
Sylvestre Ledru authored
Revert 'Fix a typo 'iff' => 'if''. iff is an abreviation of if and only if. See: http://en.wikipedia.org/wiki/If_and_only_if Commit 164767 llvm-svn: 164768
-
Sylvestre Ledru authored
llvm-svn: 164767
-
- Sep 26, 2012
-
-
Bill Wendling authored
The hasFnAttr method has been replaced by querying the Attributes explicitly. No intended functionality change. llvm-svn: 164725
-
Michael Liao authored
llvm-svn: 164673
-
- Sep 25, 2012
-
-
Michael Liao authored
- Turn on atomic6432.ll and add specific test case as well llvm-svn: 164616
-
- Sep 19, 2012
-
-
Michael Liao authored
- Merge the processing of LOAD_ADD with other atomic load-arith operations - Separate the logic getting target constant for atomic-load-op and add an optimization for atomic-load-add on i16 with negative value - Optimize a minor case for atomic-fetch-add i16 with negative operand. Test case is revised. llvm-svn: 164243
-
- Sep 13, 2012
-
-
Jakob Stoklund Olesen authored
The patch caused "Wrong topological sorting" assertions. llvm-svn: 163810
-
Jakob Stoklund Olesen authored
We don't have enough GR64_TC registers when calling a varargs function with 6 arguments. Since %al holds the number of vector registers used, only %r11 is available as a scratch register. This means that addressing modes using both base and index registers can't be folded into TCRETURNmi64. <rdar://problem/12282281> llvm-svn: 163761
-
- Sep 12, 2012
-
-
Michael Liao authored
- BlockAddress has no support of BA + offset form and there is no way to propagate that offset into machine operand; - Add BA + offset support and a new interface 'getTargetBlockAddress' to simplify target block address forming; - All targets are modified to use new interface and X86 backend is enhanced to support BA + offset addressing. llvm-svn: 163743
-
Manman Ren authored
"#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)" No functional change. Update r163339. llvm-svn: 163653
-
- Sep 06, 2012
-
-
Manman Ren authored
No functional change. llvm-svn: 163339
-
- Aug 25, 2012
-
-
Richard Smith authored
Reviewed offline by chandlerc. llvm-svn: 162623
-
- Aug 11, 2012
-
-
Craig Topper authored
Add a couple default: llvm_unreachable() to some switch statements. Fix a bad message in an existing llvm_unreachable. llvm-svn: 161725
-
- Aug 08, 2012
-
-
Manman Ren authored
We perform the following: 1> Use SUB instead of CMP for i8,i16,i32 and i64 in ISel lowering. 2> Modify MachineCSE to correctly handle implicit defs. 3> Convert SUB back to CMP if possible at peephole. Removed pattern matching of (a>b) ? (a-b):0 and like, since they are handled by peephole now. rdar://11873276 llvm-svn: 161462
-
- Aug 06, 2012
-
-
Craig Topper authored
Implement proper handling for pcmpistri/pcmpestri intrinsics. Requires custom handling in DAGISelToDAG due to limitations in TableGen's implicit def handling. Fixes PR11305. llvm-svn: 161318
-
- Aug 01, 2012
-
-
Chad Rosier authored
llvm-svn: 161122
-
- Jul 24, 2012
-
-
David Chisnall authored
are targeting an ELF platform. Only fold gs-relative (and fs-relative) loads if it is actually sensible to do so for the target platform. This fixes PR13438. llvm-svn: 160687
-
- Jul 12, 2012
-
-
Craig Topper authored
llvm-svn: 160110
-
- Jul 01, 2012
-
-
Craig Topper authored
Reduce code size by using a second switch statement to avoid extra calls to SelectAtomic64. Also catch cases where SelectAtomic64 fails. llvm-svn: 159503
-
Craig Topper authored
llvm-svn: 159502
-
Craig Topper authored
Fix a crash on release builds if gather intrinsics are passed a non-constant value for the last argument. llvm-svn: 159501
-
Craig Topper authored
Use a second switch statement to reduce number of calls to SelectGather in code. Reduces code size a bit. llvm-svn: 159500
-
- Jun 29, 2012
-
-
Manman Ren authored
Corrected type for index of llvm.x86.avx2.gather.d.pd.256 from 256-bit to 128-bit. Corrected types for src|dst|mask of llvm.x86.avx2.gather.q.ps.256 from 256-bit to 128-bit. Support the following intrinsics: llvm.x86.avx2.gather.d.q, llvm.x86.avx2.gather.q.q llvm.x86.avx2.gather.d.q.256, llvm.x86.avx2.gather.q.q.256 llvm.x86.avx2.gather.d.d, llvm.x86.avx2.gather.q.d llvm.x86.avx2.gather.d.d.256, llvm.x86.avx2.gather.q.d.256 llvm-svn: 159402
-
- Jun 26, 2012
-
-
Manman Ren authored
Support the following intrinsics: llvm.x86.avx2.gather.d.pd, llvm.x86.avx2.gather.q.pd llvm.x86.avx2.gather.d.pd.256, llvm.x86.avx2.gather.q.pd.256 llvm.x86.avx2.gather.d.ps, llvm.x86.avx2.gather.q.ps llvm.x86.avx2.gather.d.ps.256, llvm.x86.avx2.gather.q.ps.256 Modified Disassembler to handle VSIB addressing mode. llvm-svn: 159221
-
- May 23, 2012
-
-
Craig Topper authored
llvm-svn: 157313
-
- May 16, 2012
-
-
- Apr 12, 2012
-
-
Evan Cheng authored
Generalize r153635 to deal with TokenFactor chains; also clean up the logic and fix the tests. rdar://11069732, rdar://11236106 llvm-svn: 154604
-
- Apr 09, 2012
-
-
Chandler Carruth authored
x86 addressing modes. This allows PIE-based TLS offsets to fit directly into an addressing mode immediate offset, which is the last remaining code quality issue from PR12380. With this patch, that PR is completely fixed. To understand why this patch is correct to match these offsets into addressing mode immediates, break it down by cases: 1) 32-bit is trivially correct, and unmodified here. 2) 64-bit non-small mode is unchanged and never matches. 3) 64-bit small PIC code which is RIP-relative is handled specially in the match to try to fit RIP into the base register. If it fails, it now early exits. This behavior is unchanged by the patch. 4) 64-bit small non-PIC code which is not RIP-relative continues to work as it did before. The reason these immediates are safe is because the ABI ensures they fit in small mode. This behavior is unchanged. 5) 64-bit small PIC code which is *not* using RIP-relative addressing. This is the only case changed by the patch, and the primary place you see it is in TLS, either the win64 section offset TLS or Linux local-exec TLS model in a PIC compilation. Here the ABI again ensures that the immediates fit because we are in small mode, and any other operations required due to the PIC relocation model have been handled externally to the Wrapper node (extra loads etc are made around the wrapper node in ISelLowering). I've tested this as much as I can comparing it with GCC's output, and everything appears safe. I discussed this with Anton and it made sense to him at least at face value. That said, if there are issues with PIC code after this patch, yell and we can revert it. llvm-svn: 154304
-
- Apr 04, 2012
-
-
Rafael Espindola authored
This allows us to keep passing reduced masks to SimplifyDemandedBits, but know about all the bits if SimplifyDemandedBits fails. This allows instcombine to simplify cases like the one in the included testcase. llvm-svn: 154011
-
- Mar 29, 2012
-
-
Benjamin Kramer authored
Replace assert(0) with llvm_unreachable to avoid warnings about dropping off the end of a non-void function in Release builds. llvm-svn: 153643
-
Joel Jones authored
This is a code change to add support for changing instruction sequences of the form: load inc/dec of 8/16/32/64 bits store into the appropriate X86 inc/dec through memory instruction: inc[qlwb] / dec[qlwb] The checks that were in X86DAGToDAGISel::Select(SDNode *Node)>>ISD::STORE have been extracted to isLoadIncOrDecStore and reworked to use the better named wrappers for getOperand(unsigned) (e.g. getOffset()) and replaced Chain.getNode() with LoadNode. The comments have also been expanded. llvm-svn: 153635
-
Joel Jones authored
llvm-svn: 153623
-
Joel Jones authored
This is a code change to add support for changing instruction sequences of the form: load inc/dec of 8/16/32/64 bits store into the appropriate X86 inc/dec through memory instruction: inc[qlwb] / dec[qlwb] The checks that were in X86DAGToDAGISel::Select(SDNode *Node)>>ISD::STORE have been extracted to isLoadIncOrDecStore and reworked to use the better named wrappers for getOperand(unsigned) (e.g. getOffset()) and replaced Chain.getNode() with LoadNode. The comments have also been expanded. llvm-svn: 153617
-
- Mar 27, 2012
-
-
Craig Topper authored
llvm-svn: 153502
-
Craig Topper authored
llvm-svn: 153500
-
- Mar 17, 2012
-
-
Craig Topper authored
Reorder includes in Target backends to following coding standards. Remove some superfluous forward declarations. llvm-svn: 152997
-
- Mar 09, 2012
-
-
Craig Topper authored
llvm-svn: 152391
-
- Feb 22, 2012
-
-
Craig Topper authored
Declare register classes as const. Fix a couple pointers to register classes that weren't already const. llvm-svn: 151138
-
- Feb 16, 2012
-
-
Jakob Stoklund Olesen authored
The different calling conventions and call-preserved registers are represented with regmask operands that are added dynamically. llvm-svn: 150708
-