| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
llvm-svn: 27128
|
|
|
|
|
|
| |
a constant. This implements test_constant_insert in CodeGen/Generic/vector.ll
llvm-svn: 26851
|
|
|
|
|
|
|
|
| |
Make the PPC backend not dependent on BRTWOWAY_CC and make the branch
selector smarter about the code it generates, fixing a case in the
readme.
llvm-svn: 26814
|
|
|
|
| |
llvm-svn: 26731
|
|
|
|
|
|
|
|
| |
Regression/CodeGen/PowerPC/and_add.ll
a case that occurs with dynamic allocas of constant size.
llvm-svn: 26727
|
|
|
|
| |
llvm-svn: 26724
|
|
|
|
| |
llvm-svn: 26548
|
|
|
|
|
|
| |
It's causing an infinite loop compiling ldecod on x86 / Darwin.
llvm-svn: 26544
|
|
|
|
| |
llvm-svn: 26543
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
fold (shl (add x, c1), c2) -> (add (shl x, c2), c1<<c2)
This allows us to compile CodeGen/PowerPC/addi-reassoc.ll into:
_test1:
slwi r2, r4, 4
add r2, r2, r3
lwz r3, 36(r2)
blr
_test2:
mulli r2, r4, 5
add r2, r2, r3
lbz r2, 11(r2)
extsb r3, r2
blr
instead of:
_test1:
addi r2, r4, 2
slwi r2, r2, 4
add r2, r3, r2
lwz r3, 4(r2)
blr
_test2:
addi r2, r4, 2
mulli r2, r2, 5
add r2, r3, r2
lbz r2, 1(r2)
extsb r3, r2
blr
llvm-svn: 26535
|
|
|
|
|
|
| |
in the dag combiner on 176.gcc on x86.
llvm-svn: 26459
|
|
|
|
| |
llvm-svn: 26454
|
|
|
|
| |
llvm-svn: 26443
|
|
|
|
| |
llvm-svn: 26441
|
|
|
|
|
|
| |
implementing Regression/CodeGen/X86/mul-shift-reassoc.ll
llvm-svn: 26440
|
|
|
|
| |
llvm-svn: 26436
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
unsigned foo4(unsigned short *P) { return *P & 255; }
unsigned foo5(short *P) { return *P & 255; }
to:
_foo4:
lbz r3,1(r3)
blr
_foo5:
lbz r3,1(r3)
blr
not:
_foo4:
lhz r2, 0(r3)
rlwinm r3, r2, 0, 24, 31
blr
_foo5:
lhz r2, 0(r3)
rlwinm r3, r2, 0, 24, 31
blr
llvm-svn: 26419
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
unsigned foo3(unsigned *P) { return *P & 255; }
as:
_foo3:
lbz r3, 3(r3)
blr
instead of:
_foo3:
lwz r2, 0(r3)
rlwinm r3, r2, 0, 24, 31
blr
and:
unsigned short foo2(float a) { return a; }
as:
_foo2:
fctiwz f0, f1
stfd f0, -8(r1)
lhz r3, -2(r1)
blr
instead of:
_foo2:
fctiwz f0, f1
stfd f0, -8(r1)
lwz r2, -4(r1)
rlwinm r3, r2, 0, 16, 31
blr
llvm-svn: 26417
|
|
|
|
| |
llvm-svn: 26416
|
|
|
|
| |
llvm-svn: 26390
|
|
|
|
|
|
|
| |
them to get ressurected, in which case, deleting the undead nodes is
unfriendly.
llvm-svn: 26291
|
|
|
|
|
|
|
| |
where we were doing exactly that which was causing failures on x86 and
alpha.
llvm-svn: 26284
|
|
|
|
|
|
|
| |
exactly the API we wanted to call into. This fixes the crash on crafty last
night.
llvm-svn: 26269
|
|
|
|
|
|
|
| |
Make more use of the new mask helpers in valuetypes.h
Combine (sra (srl x, c1), c1) -> sext_inreg if legal
llvm-svn: 26263
|
|
|
|
|
|
| |
generate illegal nodes.
llvm-svn: 26261
|
|
|
|
|
|
|
| |
and SUBE nodes that actually expose what's going on and allow for
significant simplifications in the targets.
llvm-svn: 26255
|
|
|
|
|
|
|
| |
and ComputeMaskedBits to match the new improved versions in instcombine.
Tested against all of multisource/benchmarks on ppc.
llvm-svn: 26238
|
|
|
|
|
|
| |
by Nate, I'm just committing it for him.
llvm-svn: 26230
|
|
|
|
|
|
| |
MachineDebugInfo tables.
llvm-svn: 26216
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
xori r6, r2, 1
rlwinm r6, r6, 0, 31, 31
cmpwi cr0, r6, 0
bne cr0, LBB1_3 ; endif
to this:
rlwinm r6, r2, 0, 31, 31
cmpwi cr0, r6, 0
beq cr0, LBB1_3 ; endif
llvm-svn: 26047
|
|
|
|
| |
llvm-svn: 26006
|
|
|
|
| |
llvm-svn: 26005
|
|
|
|
| |
llvm-svn: 26001
|
|
|
|
| |
llvm-svn: 26000
|
|
|
|
| |
llvm-svn: 25945
|
|
|
|
| |
llvm-svn: 25934
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
and instruction. This allows us to compile stuff like this:
bool %X(int %X) {
%Y = add int %X, 14
%Z = setne int %Y, 12345
ret bool %Z
}
to this:
_X:
cmpl $12331, 4(%esp)
setne %al
movzbl %al, %eax
ret
instead of this:
_X:
cmpl $12331, 4(%esp)
setne %al
movzbl %al, %eax
andl $1, %eax
ret
This occurs quite a bit with the X86 backend. For example, 25 times in
lambda, 30 times in 177.mesa, 14 times in galgel, 70 times in fma3d,
25 times in vpr, several hundred times in gcc, ~45 times in crafty,
~60 times in parser, ~140 times in eon, 110 times in perlbmk, 55 on gap,
16 times on bzip2, 14 times on twolf, and 1-2 times in many other SPEC2K
programs.
llvm-svn: 25901
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(C1-X) == C2 --> X == C1-C2
(X+C1) == C2 --> X == C2-C1
This allows us to compile this:
bool %X(int %X) {
%Y = add int %X, 14
%Z = setne int %Y, 12345
ret bool %Z
}
into this:
_X:
cmpl $12331, 4(%esp)
setne %al
movzbl %al, %eax
andl $1, %eax
ret
not this:
_X:
movl $14, %eax
addl 4(%esp), %eax
cmpl $12345, %eax
setne %al
movzbl %al, %eax
andl $1, %eax
ret
Testcase here: Regression/CodeGen/X86/compare-add.ll
nukage of the and coming up next.
llvm-svn: 25898
|
|
|
|
|
|
| |
of the SELECT_CC, BR_CC, and BRTWOWAY_CC nodes.
llvm-svn: 25875
|
|
|
|
|
|
| |
interface,making isMaskedValueZeroForTargetNode simpler, and useable from other partsof the compiler.
llvm-svn: 25803
|
|
|
|
|
|
| |
to permit recursion
llvm-svn: 25799
|
|
|
|
| |
llvm-svn: 25767
|
|
|
|
| |
llvm-svn: 25723
|
|
|
|
| |
llvm-svn: 25515
|
|
|
|
|
|
| |
Now all constant folding in the code generator is in one place.
llvm-svn: 25426
|
|
|
|
|
|
| |
fixes: test/Regression/CodeGen/Generic/2005-01-18-SetUO-InfLoop.ll
llvm-svn: 25419
|
|
|
|
| |
llvm-svn: 25339
|
|
|
|
|
|
|
|
|
|
|
| |
subfic r3, r2, 33
instead of this:
subfic r2, r2, 32
addi r3, r2, 1
llvm-svn: 25255
|
|
|
|
|
|
| |
promote/expand code yet. This fixes the 177.mesa failure on PPC.
llvm-svn: 25250
|
|
|
|
|
|
|
|
|
| |
Add dag combiner code to recognize rotl, rotr
Add ppc code to match rotl
Targets should add rotl/rotr patterns if they have them
llvm-svn: 25222
|