- Aug 24, 2005
-
-
Chris Lattner authored
Use this information to avoid doing expensive interval intersections for registers that could not possible be interesting. This speeds up linscan on ia64 compiling kc++ in release mode from taking 7.82s to 4.8s(!), total itanium llc time on this program is 27.3s now. This marginally speeds up PPC and X86, but they appear to be limited by other parts of linscan, not this code. On this program, on itanium, live intervals now takes 41% of llc time. llvm-svn: 22986
-
- Aug 23, 2005
-
-
Chris Lattner authored
llvm-svn: 22985
-
Chris Lattner authored
x%y for 'rem' on fp values. llvm-svn: 22984
-
Chris Lattner authored
llvm-svn: 22983
-
Chris Lattner authored
llvm-svn: 22982
-
Nate Begeman authored
llvm-svn: 22981
-
Nate Begeman authored
llvm-svn: 22979
-
Nate Begeman authored
either seteq X, 0 or srl (ctlz X), size(X-1), depending on what's legal for the target. llvm-svn: 22978
-
Nate Begeman authored
llvm-svn: 22977
-
Nate Begeman authored
llvm-svn: 22976
-
Chris Lattner authored
llvm-svn: 22975
-
Chris Lattner authored
in the asmprinter. This changes the .td files to use lower case register names, avoiding the need to do this call. This speeds up the asmprinter from 1.52s to 1.06s on kc++ in a release build. llvm-svn: 22974
-
- Aug 22, 2005
-
-
Chris Lattner authored
It used to crash on any function that took float arguments. llvm-svn: 22973
-
Chris Lattner authored
number of regs (e.g. most riscs), many functions won't need to use callee clobbered registers. Do a speculative check to see if we can get a free register without processing the fixed list (which has all of these). This saves a lot of time on machines with lots of callee clobbered regs (e.g. ppc and itanium, also x86). This reduces ppc llc compile time from 184s -> 172s on kc++. This is probably worth FAR FAR more on itanium though. llvm-svn: 22972
-
Chris Lattner authored
we spill out of the fast path. The scan of active_ and the calls to updateSpillWeights don't need to happen unless a spill occurs. This reduces debug llc time of kc++ with ppc from 187.3s to 183.2s. llvm-svn: 22971
-
Chris Lattner authored
llvm-svn: 22970
-
Chris Lattner authored
promoted to the right type. This fixes: IA64/2005-08-22-LegalizerCrash.ll llvm-svn: 22969
-
Chris Lattner authored
llvm-svn: 22968
-
Chris Lattner authored
llvm-svn: 22967
-
Chris Lattner authored
add some comments. This loop really needs to be reevaluated! llvm-svn: 22966
-
Chris Lattner authored
llvm-svn: 22965
-
Chris Lattner authored
llvm-svn: 22964
-
Chris Lattner authored
llvm-svn: 22963
-
Chris Lattner authored
allowing us to compile this: float %test2(float* %P) { %Q = load float* %P %R = add float %Q, 10.1 ret float %R } to this: _test2: lfs r2, 0(r3) lis r3, ha16(.CPI_test2_0) lfs r3, lo16(.CPI_test2_0)(r3) fadds f1, r2, r3 blr llvm-svn: 22962
-
Chris Lattner authored
float %test2(float* %P) { %Q = load float* %P %R = add float %Q, %Q ret float %R } By returning the right result. llvm-svn: 22961
-
Chris Lattner authored
Make sure expressions only have one use before emitting them into a place that is conditionally executed llvm-svn: 22960
-
Chris Lattner authored
llvm-svn: 22959
-
Chris Lattner authored
llvm-svn: 22958
-
Chris Lattner authored
llvm-svn: 22957
-
- Aug 21, 2005
-
-
Chris Lattner authored
llvm-svn: 22956
-
Chris Lattner authored
llvm-svn: 22955
-
Chris Lattner authored
llvm-svn: 22954
-
Chris Lattner authored
llvm-svn: 22953
-
Chris Lattner authored
simplifies BRTWOWAY into BR if one of the results is a fall-through. Unless I'm missing something, there is no reason to duplicate this in the target-specific code. llvm-svn: 22952
-
Chris Lattner authored
llvm-svn: 22951
-
Chris Lattner authored
llvm-svn: 22950
-
Chris Lattner authored
llvm-svn: 22949
-
Chris Lattner authored
llvm-svn: 22948
-
Chris Lattner authored
the old condition to a one bit value. The incoming value must have been promoted, and the top bits are undefined. This causes us to generate: _test: rlwinm r2, r3, 0, 31, 31 li r3, 17 cmpwi cr0, r2, 0 bne .LBB_test_2 ; .LBB_test_1: ; li r3, 1 .LBB_test_2: ; blr instead of: _test: rlwinm r2, r3, 0, 31, 31 li r2, 17 cmpwi cr0, r3, 0 bne .LBB_test_2 ; .LBB_test_1: ; li r2, 1 .LBB_test_2: ; or r3, r2, r2 blr for: int %test(bool %c) { %retval = select bool %c, int 17, int 1 ret int %retval } llvm-svn: 22947
-
Chris Lattner authored
it in the block. This codegens: int %test(bool %c) { %retval = select bool %c, int 17, int 1 ret int %retval } as: _test: rlwinm r2, r3, 0, 31, 31 li r2, 17 cmpwi cr0, r3, 0 bne .LBB_test_2 ; .LBB_test_1: ; li r2, 1 .LBB_test_2: ; or r3, r2, r2 blr instead of: _test: rlwinm r2, r3, 0, 31, 31 li r2, 17 li r4, 1 cmpwi cr0, r3, 0 bne .LBB_test_2 ; .LBB_test_1: ; or r2, r4, r4 .LBB_test_2: ; or r3, r2, r2 blr ... which is one fewer instruction. The savings are more significant for global address and constantfp nodes. llvm-svn: 22946
-