- Jan 22, 2009
-
-
Chris Lattner authored
llvm-svn: 62760
-
Dan Gohman authored
to be supported in the JIT. llvm-svn: 62730
-
- Jan 21, 2009
-
-
Evan Cheng authored
llvm-svn: 62710
-
Chris Lattner authored
llvm-svn: 62699
-
Dan Gohman authored
we want to clear %ah to zero before a division, just use a zero-extending mov to %al. This fixes PR3366. llvm-svn: 62691
-
Sanjiv Gupta authored
llvm-svn: 62681
-
Duncan Sands authored
prototypes, in operand type legalization. No functionality change. llvm-svn: 62680
-
Sanjiv Gupta authored
Also a few signed comparison fixes. llvm-svn: 62665
-
Scott Michel authored
- Ensure that (operation) legalization emits proper FDIV libcall when needed. - Fix various bugs encountered during llvm-spu-gcc build, along with various cleanups. - Start supporting double precision comparisons for remaining libgcc2 build. Discovered interesting DAGCombiner feature, which is currently solved via custom lowering (64-bit constants are not legal on CellSPU, but DAGCombiner insists on inserting one anyway.) - Update README. llvm-svn: 62664
-
Evan Cheng authored
unsigned test(unsigned a) { return ~a; } llvm used to generate: movl $4294967295, %eax xorl 4(%esp), %eax Now it generates: movl 4(%esp), %eax notl %eax It's 3 bytes shorter. llvm-svn: 62661
-
- Jan 20, 2009
-
-
Evan Cheng authored
llvm-svn: 62600
-
Dan Gohman authored
llvm-svn: 62558
-
- Jan 19, 2009
-
-
Evan Cheng authored
DIVREM isel deficiency: If sign bit is known zero, zero out DX/EDX/RDX instead of sign extending the low part (in AX/EAX/RAX) into it. llvm-svn: 62519
-
Evan Cheng authored
llvm-svn: 62518
-
Evan Cheng authored
llvm-svn: 62516
-
Evan Cheng authored
Minor tweak to LowerUINT_TO_FP_i32. Bias (after scalar_to_vector) has two uses so we should make it the second source operand of ISD::OR so 2-address pass won't have to be smart about commuting. %reg1024<def> = MOVSDrm %reg0, 1, %reg0, <cp#0>, Mem:LD(8,8) [ConstantPool + 0] %reg1025<def> = MOVSD2PDrr %reg1024 %reg1026<def> = MOVDI2PDIrm <fi#-1>, 1, %reg0, 0, Mem:LD(4,16) [FixedStack-1 + 0] %reg1027<def> = ORPSrr %reg1025<kill>, %reg1026<kill> %reg1028<def> = MOVPD2SDrr %reg1027<kill> %reg1029<def> = SUBSDrr %reg1028<kill>, %reg1024<kill> %reg1030<def> = CVTSD2SSrr %reg1029<kill> MOVSSmr <fi#0>, 1, %reg0, 0, %reg1030<kill>, Mem:ST(4,4) [FixedStack0 + 0] %reg1031<def> = LD_Fp32m80 <fi#0>, 1, %reg0, 0, Mem:LD(4,16) [FixedStack0 + 0] RET %reg1031<kill>, %ST0<imp-use,kill> The reason 2-addr pass isn't smart enough to commute the ORPSrr is because it can't look pass the MOVSD2PDrr instruction. llvm-svn: 62505
-
Evan Cheng authored
optimize it to a SINT_TO_FP when the sign bit is known zero. X86 isel should perform the optimization itself. llvm-svn: 62504
-
- Jan 17, 2009
-
-
Bill Wendling authored
llvm-svn: 62415
-
Evan Cheng authored
llvm-svn: 62413
-
Bill Wendling authored
llvm-svn: 62405
-
Bill Wendling authored
X86. This code: void f() { uint32_t x; float y = (float)x; } used to be: movl %eax, -8(%ebp) movl [2^52 double], -4(%ebp) movsd -8(%ebp), %xmm0 subsd [2^52 double], %xmm0 cvtsd2ss %xmm0, %xmm0 Is now: movsd [2^52 double], %xmm0 movsd %xmm0, %xmm1 movd %ecx, %xmm2 orps %xmm2, %xmm1 subsd %xmm0, %xmm1 cvtsd2ss %xmm1, %xmm0 This is faster on X86. Note that there's an extra load of %xmm0 into %xmm1. That will be fixed in a later coalescer fix. llvm-svn: 62404
-
Oscar Fuentes authored
llvm-svn: 62394
-
- Jan 16, 2009
-
-
Evan Cheng authored
Fix PPC ISD::Declare isel and eliminate the need for PPCTargetLowering::LowerGlobalAddress to check if isVerifiedDebugInfoDesc() is true. Given the recent changes, it would falsely return true for a lot of GlobalAddressSDNode's. llvm-svn: 62373
-
Dan Gohman authored
implement getSubtargetImpl. llvm-svn: 62369
-
Bill Wendling authored
llvm-svn: 62338
-
Evan Cheng authored
llvm-svn: 62299
-
Dan Gohman authored
a new toy hazard recognizier heuristic which attempts to direct the scheduler to avoid clumping large groups of loads or stores too densely. llvm-svn: 62291
-
- Jan 15, 2009
-
-
Dan Gohman authored
to support MachineInstr-based scheduling in addition to SDNode-based scheduling. llvm-svn: 62284
-
Rafael Espindola authored
llvm-svn: 62282
-
Mon P Wang authored
llvm-svn: 62281
-
Rafael Espindola authored
llvm-svn: 62279
-
Dan Gohman authored
and into the ScheduleDAGInstrs class, so that they don't get destructed and re-constructed for each block. This fixes a compile-time hot spot in the post-pass scheduler. To help facilitate this, tidy and do some minor reorganization in the scheduler constructor functions. llvm-svn: 62275
-
Dan Gohman authored
llvm-svn: 62267
-
Dan Gohman authored
llvm-svn: 62265
-
Dan Gohman authored
llvm-svn: 62259
-
Richard Osborne authored
the ADDRspii addressing mode. llvm-svn: 62258
-
Richard Osborne authored
changes in the last commit. llvm-svn: 62257
-
Scott Michel authored
sequences in SPUDAGToDAGISel.cpp and SPU64InstrInfo.td, killing custom DAG node types as needed. - i64 mul is now a legal instruction, but emits an instruction sequence that stretches tblgen and the imagination, as well as violating laws of several small countries and most southern US states (just kidding, but looking at a function with 80+ parameters is really weird and just plain wrong.) - Update tests as needed. llvm-svn: 62254
-
- Jan 14, 2009
-
-
Richard Osborne authored
frame index. eliminateFrameIndex will replace these instructions with (LDWSP|STWSP|LDAWSP) or (LDW|STW|LDAWF) if a frame pointer is in use. This fixes PR 3324. Previously we used LDWSP, STWSP, LDAWSP before frame pointer elimination. However since they were marked as implicitly using SP they could not be rematerialised. llvm-svn: 62238
-
Nuno Lopes authored
llvm-svn: 62198
-