- Jan 21, 2009
-
-
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
-
- 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
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
-
- Jan 16, 2009
-
-
Bill Wendling authored
llvm-svn: 62338
-
- Jan 15, 2009
-
-
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
-
- Jan 14, 2009
-
-
Dan Gohman authored
llvm-svn: 62196
-
Dan Gohman authored
llvm-svn: 62195
-
Dan Gohman authored
to Eli for pointing out that these forms don't ignore the high bits of their index operands, and as such are not immediately suitable for use by isel. llvm-svn: 62194
-
- Jan 13, 2009
-
-
Dan Gohman authored
llvm-svn: 62180
-
Dan Gohman authored
llvm-svn: 62179
-
Devang Patel authored
Use DebugInfo interface to lower dbg_* intrinsics. llvm-svn: 62127
-
- Jan 12, 2009
-
-
Duncan Sands authored
suggested by Chris. llvm-svn: 62099
-
- Jan 10, 2009
-
-
Evan Cheng authored
llvm-svn: 62024
-
- Jan 09, 2009
-
-
Misha Brukman authored
llvm-svn: 61991
-
Dan Gohman authored
llvm-svn: 61972
-
Dan Gohman authored
the same formatting as their corresponding SSE2 instructions, for consistency. llvm-svn: 61971
-
Devang Patel authored
Convert DwarfWriter into a pass. Now Users request DwarfWriter through getAnalysisUsage() instead of creating an instance of DwarfWriter object directly. llvm-svn: 61955
-
- Jan 07, 2009
-
-
Dan Gohman authored
into their left operand, rather than their right. Do this by commuting the operands and inverting the condition. llvm-svn: 61842
-
Dan Gohman authored
llvm-svn: 61841
-
Dan Gohman authored
llvm-svn: 61836
-
Dan Gohman authored
X86_COND_B and X86_COND_AE, respectively. llvm-svn: 61835
-
Dan Gohman authored
converted to LEA64_32r in x86's convertToThreeAddress. This replaces code like this: movl %esi, %edi inc %edi with this: lea 1(%rsi), %edi which appears to be beneficial. llvm-svn: 61830
-
- Jan 05, 2009
-
-
Bill Wendling authored
llvm-svn: 61765
-
Dan Gohman authored
llvm-svn: 61715
-
Devang Patel authored
squash warnings. llvm-svn: 61707
-
Evan Cheng authored
llvm-svn: 61686
-
- Jan 03, 2009
-
-
Evan Cheng authored
llvm-svn: 61603
-
Evan Cheng authored
llvm-svn: 61602
-
- Jan 02, 2009
-
-
Evan Cheng authored
Do not isel load folding bt instructions for pentium m, core, core2, and AMD processors. These are significantly slower than a load followed by a bt of a register. llvm-svn: 61557
-
Evan Cheng authored
llvm-svn: 61556
-