| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
llvm-svn: 27683
|
|
|
|
| |
llvm-svn: 25992
|
|
|
|
|
|
|
| |
case, the double being loaded may not be 8-byte aligned, so we have to use
our standard bit_convert game.
llvm-svn: 25967
|
|
|
|
| |
llvm-svn: 25966
|
|
|
|
| |
llvm-svn: 25965
|
|
|
|
| |
llvm-svn: 25962
|
|
|
|
|
|
|
|
|
|
| |
1. Treat FMOVD as a copy instruction, to help with coallescing in V9 mode
2. When in V9 mode, insert FMOVD instead of FpMOVD instructions, as we don't
ever rewrite FpMOVD instructions into FMOVS instructions, thus we just end
up with commented out copies!
This should fix a bunch of failures in V9 mode on sparc.
llvm-svn: 25961
|
|
|
|
|
|
|
| |
Remove the dead getRegClassForType method
minor formating changes.
llvm-svn: 25936
|
|
|
|
| |
llvm-svn: 25932
|
|
|
|
| |
llvm-svn: 25906
|
|
|
|
| |
llvm-svn: 25905
|
|
|
|
| |
llvm-svn: 25855
|
|
|
|
| |
llvm-svn: 25851
|
|
|
|
| |
llvm-svn: 25847
|
|
|
|
| |
llvm-svn: 25846
|
|
|
|
| |
llvm-svn: 25845
|
|
|
|
| |
llvm-svn: 25844
|
|
|
|
| |
llvm-svn: 25843
|
|
|
|
| |
llvm-svn: 25842
|
|
|
|
|
|
| |
an operand that contains the condcode), making things significantly simpler.
llvm-svn: 25840
|
|
|
|
|
|
| |
a CC as an operand. Much smaller, much happier.
llvm-svn: 25839
|
|
|
|
| |
llvm-svn: 25838
|
|
|
|
| |
llvm-svn: 25837
|
|
|
|
| |
llvm-svn: 25834
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
void %X(int %A) {
%C = setlt int %A, 123 ; <bool> [#uses=1]
br bool %C, label %T, label %F
T: ; preds = %0
call int %main( int 0 ) ; <int>:0 [#uses=0]
ret void
F: ; preds = %0
ret void
}
to this:
X:
save -96, %o6, %o6
subcc %i0, 122, %l0
bg .LBBX_2 ! F
nop
...
not this:
X:
save -96, %o6, %o6
sethi 0, %l0
or %g0, 1, %l1
subcc %i0, 122, %l2
bg .LBBX_4 !
nop
.LBBX_3: !
or %g0, %l0, %l1
.LBBX_4: !
subcc %l1, 0, %l0
bne .LBBX_2 ! F
nop
llvm-svn: 25833
|
|
|
|
| |
llvm-svn: 25829
|
|
|
|
|
|
| |
from last night
llvm-svn: 25819
|
|
|
|
|
|
|
| |
SPARC condition codes, not in terms of the DAG condcodes. This allows us to
write nice clean patterns for cmovs/branches.
llvm-svn: 25815
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
uint %test(uint %X) {
%Y = call uint %llvm.ctpop.i32(uint %X)
ret uint %Y
}
to:
test:
save -96, %o6, %o6
sll %i0, 0, %l0
popc %l0, %i0
restore %g0, %g0, %g0
retl
nop
instead of to 40 logical ops. Note the shift-by-zero that clears the top
part of the 64-bit V9 register.
Testcase here: CodeGen/SparcV8/ctpop.ll
llvm-svn: 25814
|
|
|
|
|
|
| |
running it.
llvm-svn: 25811
|
|
|
|
| |
llvm-svn: 25810
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
patterns. This allows emission of this code:
t1:
save -96, %o6, %o6
subcc %i0, %i1, %l0
move %icc, %i0, %i2
or %g0, %i2, %i0
restore %g0, %g0, %g0
retl
nop
instead of this:
t1:
save -96, %o6, %o6
subcc %i0, %i1, %l0
be .LBBt1_2 !
nop
.LBBt1_1: !
or %g0, %i2, %i0
.LBBt1_2: !
restore %g0, %g0, %g0
retl
nop
for this:
int %t1(int %a, int %b, int %c) {
%tmp.2 = seteq int %a, %b
%tmp3 = select bool %tmp.2, int %a, int %c
ret int %tmp3
}
llvm-svn: 25809
|
|
|
|
|
|
|
| |
1. Default to having V9 instructions, instead of just V8.
2. unless -enable-sparc-v9-insts is passed, disable V9 (for use with llcbeta)
llvm-svn: 25807
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
the two operations together. This allows us to compile this:
void %two(int %a, int* %b) {
%tmp.2 = seteq int %a, 0
%tmp.0.0 = select bool %tmp.2, int 10, int 20
store int %tmp.0.0, int* %b
ret void
}
into:
two:
save -96, %o6, %o6
or %g0, 20, %l0
or %g0, 10, %l1
subcc %i0, 0, %l2
be .LBBtwo_2 ! entry
nop
.LBBtwo_1: ! entry
or %g0, %l0, %l1
.LBBtwo_2: ! entry
st %l1, [%i1]
restore %g0, %g0, %g0
retl
nop
instead of:
two:
save -96, %o6, %o6
sethi 0, %l0
or %g0, 1, %l1
or %g0, 20, %l2
or %g0, 10, %l3
subcc %i0, 0, %l4
be .LBBtwo_2 ! entry
nop
.LBBtwo_1: ! entry
or %g0, %l0, %l1
.LBBtwo_2: ! entry
subcc %l1, 0, %l0
bne .LBBtwo_4 ! entry
nop
.LBBtwo_3: ! entry
or %g0, %l2, %l3
.LBBtwo_4: ! entry
st %l3, [%i1]
restore %g0, %g0, %g0
retl
nop
llvm-svn: 25806
|
|
|
|
|
|
| |
interface,making isMaskedValueZeroForTargetNode simpler, and useable from other partsof the compiler.
llvm-svn: 25803
|
|
|
|
|
|
| |
allowing redundant and's to be eliminated by the dag combiner.
llvm-svn: 25800
|
|
|
|
| |
llvm-svn: 25716
|
|
|
|
| |
llvm-svn: 25712
|
|
|
|
|
|
|
| |
the same functionality. This addresses another piece of bug 680. Next,
on to fixing Alpha VAARG, which I broke last time.
llvm-svn: 25696
|
|
|
|
| |
llvm-svn: 25678
|
|
|
|
| |
llvm-svn: 25674
|
|
|
|
| |
llvm-svn: 25642
|
|
|
|
| |
llvm-svn: 25641
|
|
|
|
| |
llvm-svn: 25607
|
|
|
|
|
|
|
| |
Remove TLI.LowerVA* and replace it with SDNodes that are lowered the same
way as everything else.
llvm-svn: 25606
|
|
|
|
| |
llvm-svn: 25603
|
|
|
|
| |
llvm-svn: 25534
|
|
|
|
| |
llvm-svn: 25515
|
|
|
|
| |
llvm-svn: 25509
|
|
|
|
| |
llvm-svn: 25450
|