- Feb 27, 2010
-
-
Chris Lattner authored
llvm-svn: 97316
-
Evan Cheng authored
llvm-svn: 97310
-
- Feb 26, 2010
-
-
Dale Johannesen authored
as X86 is currently the only FastISel target. Per review. llvm-svn: 97255
-
Dan Gohman authored
llvm-svn: 97227
-
Dan Gohman authored
llvm-svn: 97201
-
- Feb 25, 2010
-
-
Daniel Dunbar authored
llvm-svn: 97151
-
Dan Gohman authored
just discarding one of the registers. llvm-svn: 97100
-
- Feb 24, 2010
-
-
Daniel Dunbar authored
the hopes of fixing PPC bootstrap. llvm-svn: 97040
-
Dan Gohman authored
necessary to swap the operands to handle NaN and negative zero properly. Also, reintroduce logic for checking for NaN conditions when forming SSE min and max instructions, fixed to take into consideration NaNs and negative zeros. This allows forming min and max instructions in more cases. llvm-svn: 97025
-
Evan Cheng authored
llvm-svn: 97011
-
Jakob Stoklund Olesen authored
instead of %AL/%AH. llvm-svn: 97006
-
- Feb 23, 2010
-
-
Evan Cheng authored
llvm-svn: 96990
-
Chris Lattner authored
disables load folding at -O0. llvm-svn: 96973
-
Chris Lattner authored
then use it as an MMX register (!?). llvm-svn: 96901
-
Chris Lattner authored
though some look dubious afaict, these are all ok. llvm-svn: 96899
-
Chris Lattner authored
place where an i32 imm was required, the old isel just got lucky. This fixes CodeGen/X86/x86-64-and-mask.ll llvm-svn: 96894
-
Chris Lattner authored
don't alis it in the MMX .td file with a different width, split into two X86ISD opcodes. This fixes an x86 testcase. llvm-svn: 96859
-
- Feb 22, 2010
-
-
Arnold Schwaighofer authored
during a tail call. A parameter might overwrite this stack slot during the tail call. The sequence during a tail call is: 1.) load return address to temp reg 2.) move parameters (might involve storing to return address stack slot) 3.) store return address to new location from temp reg If the stack location is marked immutable CodeGen can colocate load (1) with the store (3). This fixes bug 6225. llvm-svn: 96783
-
Dan Gohman authored
llvm-svn: 96778
-
Dan Gohman authored
SSE min and max instructions. The real thing this code needs to be concerned about is negative zero. Update the sse-minmax.ll test accordingly, and add tests for -enable-unsafe-fp-math mode as well. llvm-svn: 96775
-
Chris Lattner authored
create an X86ISD::Cmp node with result type i64 on the CodeGen/X86/shift-i256.ll testcase and the new isel was assert on it downstream. llvm-svn: 96768
-
- Feb 21, 2010
-
-
Daniel Dunbar authored
llvm-svn: 96763
-
Anton Korobeynikov authored
It turned out that we failed to emit proper symbol stubs on non-x86/darwin for ages (we emitted a reference to a stub, but no stub was emitted). The code inside x86-32/macho target objfile lowering should actually be the generic one - move it there. This (I really, really hope) should fix EH issues on ppc/darwin and arm/darwin. llvm-svn: 96755
-
Chris Lattner authored
llvm-svn: 96720
-
Chris Lattner authored
it to follow the mode needed by the new isel. Instead of returning the input and output chains, it just returns the (currently only one, which is a silly limitation) node that has input and output chains. Since we want the old thing to still work, add a new SelectScalarSSELoad to emulate the old interface. The XXX suffix and the wrapper will eventually go away. llvm-svn: 96715
-
- Feb 19, 2010
-
-
Charles Davis authored
Also, FileCheck'ize a test. llvm-svn: 96686
-
Bob Wilson authored
ARM and Thumb tests. llvm-svn: 96680
-
Duncan Sands authored
dragonegg self-host build. I reverted 96640 in order to revert 96556 (96640 goes on top of 96556), but it also looks like with both of them applied the breakage happens even earlier. The symptom of the 96556 miscompile is the following crash: llvm[3]: Compiling AlphaISelLowering.cpp for Release build cc1plus: /home/duncan/tmp/tmp/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:4982: void llvm::SelectionDAG::ReplaceAllUsesWith(llvm::SDNode*, llvm::SDNode*, llvm::SelectionDAG::DAGUpdateListener*): Assertion `(!From->hasAnyUseOfValue(i) || From->getValueType(i) == To->getValueType(i)) && "Cannot use this version of ReplaceAllUsesWith!"' failed. Stack dump: 0. Running pass 'X86 DAG->DAG Instruction Selection' on function '@_ZN4llvm19AlphaTargetLowering14LowerOperationENS_7SDValueERNS_12SelectionDAGE' g++: Internal error: Aborted (program cc1plus) This occurs when building LLVM using LLVM built by LLVM (via dragonegg). Probably LLVM has miscompiled itself, though it may have miscompiled GCC and/or dragonegg itself: at this point of the self-host build, all of GCC, LLVM and dragonegg were built using LLVM. Unfortunately this kind of thing is extremely hard to debug, and while I did rummage around a bit I didn't find any smoking guns, aka obviously miscompiled code. Found by bisection. r96556 | evancheng | 2010-02-18 03:13:50 +0100 (Thu, 18 Feb 2010) | 5 lines Some dag combiner goodness: Transform br (xor (x, y)) -> br (x != y) Transform br (xor (xor (x,y), 1)) -> br (x == y) Also normalize (and (X, 1) == / != 1 -> (and (X, 1)) != / == 0 to match to "test on x86" and "tst on arm" r96640 | evancheng | 2010-02-19 01:34:39 +0100 (Fri, 19 Feb 2010) | 16 lines Transform (xor (setcc), (setcc)) == / != 1 to (xor (setcc), (setcc)) != / == 1. e.g. On x86_64 %0 = icmp eq i32 %x, 0 %1 = icmp eq i32 %y, 0 %2 = xor i1 %1, %0 br i1 %2, label %bb, label %return => testl %edi, %edi sete %al testl %esi, %esi sete %cl cmpb %al, %cl je LBB1_2 llvm-svn: 96672
-
Anton Korobeynikov authored
This hopefulyl should unbreak EH on PPC/Darwin. llvm-svn: 96637
-
- Feb 18, 2010
-
-
Dale Johannesen authored
comes out as comments but will eventually generate DWARF. llvm-svn: 96601
-
Chris Lattner authored
llvm-svn: 96574
-
Evan Cheng authored
Transform br (xor (x, y)) -> br (x != y) Transform br (xor (xor (x,y), 1)) -> br (x == y) Also normalize (and (X, 1) == / != 1 -> (and (X, 1)) != / == 0 to match to "test on x86" and "tst on arm" llvm-svn: 96556
-
- Feb 17, 2010
-
-
Chris Lattner authored
reverse engineering what they are. llvm-svn: 96456
-
Anton Korobeynikov authored
Hopefully, this will fix the remaining issues seen there. llvm-svn: 96454
-
Chris Lattner authored
llvm-svn: 96440
-
Chris Lattner authored
It's not clear why this is really required, but it was explicitly added in r48808 with no real explanation or rdar #. llvm-svn: 96438
-
Dan Gohman authored
64 bits, fixing a variety of problems. llvm-svn: 96421
-
- Feb 16, 2010
-
-
rdar://7653908Chris Lattner authored
into a roundss intrinsic, producing a cyclic dag. The root cause of this is badness handling ComplexPattern nodes in the old dagisel that I noticed through inspection. Eliminate a copy of the of the code that handled ComplexPatterns by making EmitChildMatchCode call into EmitMatchCode. llvm-svn: 96408
-
Evan Cheng authored
If there exists a use of a build_vector that's the bitwise complement of the mask, then transform the node to (and (xor x, (build_vector -1,-1,-1,-1)), (build_vector ~c1,~c2,~c3,~c4)). Since this transformation is only useful when 1) the given build_vector will become a load from constpool, and 2) (and (xor x -1), y) matches to a single instruction, I decided this is appropriate as a x86 specific transformation. rdar://7323335 llvm-svn: 96389
-
David Greene authored
Add support for emitting non-temporal stores for DAGs marked non-temporal. Fix from r96241 for botched encoding of MOVNTDQ. Add documentation for !nontemporal metadata. Add a simpler movnt testcase. llvm-svn: 96386
-