[llvm-commits] [llvm] r108536 - in /llvm/trunk: lib/Target/X86/CMakeLists.txt lib/Target/X86/X86.h lib/Target/X86/X86CodeEmitter.cpp lib/Target/X86/X86FloatingPointRegKill.cpp lib/Target/X86/X86InstrFPStack.td lib/Target/X86/X86InstrInfo.cpp lib/Target/X86/X86TargetMachine.cpp test/CodeGen/X86/2007-06-14-branchfold.ll

Jakob Stoklund Olesen stoklund at 2pi.dk
Sat Jul 17 11:48:49 PDT 2010


On Jul 17, 2010, at 10:38 AM, Chris Lattner wrote:

> 
> On Jul 16, 2010, at 10:41 AM, Jakob Stoklund Olesen wrote:
> 
>> Author: stoklund
>> Date: Fri Jul 16 12:41:44 2010
>> New Revision: 108536
>> 
>> URL: http://llvm.org/viewvc/llvm-project?rev=108536&view=rev
>> Log:
>> Remove the X86::FP_REG_KILL pseudo-instruction and the X86FloatingPointRegKill
>> pass that inserted it.
>> 
>> It is no longer necessary to limit the live ranges of FP registers to a single
>> basic block.
> 
> This is *really really* awesome Jakob.  This was a huge long-standing code quality deficiency of LLVM vs other compilers, thanks for doing it!

No problem, we really needed to lose the arbitrary constraints on FP registers for LICM and live range splitting.

I ran the nightly test suite with -arch i386 -mfpmath=387 -mcpu=pentium, and the global stackifier as llcbeta. These are the double-digit improvements:

Program                                                                  | LLC     LLC-BETA LLC/LLC-BETA
SingleSource/Benchmarks/Misc-C++/stepanov_v1p2                           | 25.5900  7.6800  3.33 
SingleSource/Benchmarks/Misc-C++/oopack_v1p8                             |  0.3800  0.1400  2.71 
SingleSource/Benchmarks/Adobe-C++/stepanov_abstraction                   | 12.0300  5.1200  2.35 
SingleSource/Benchmarks/Misc/fp-convert                                  |  5.6900  2.8400  2.00 
SingleSource/Benchmarks/Adobe-C++/stepanov_vector                        |  6.0600  3.1800  1.91 
SingleSource/Benchmarks/Misc-C++/mandel-text                             |  3.2800  1.7300  1.90 
SingleSource/Benchmarks/Misc/mandel-2                                    |  1.5500  0.8700  1.78 
SingleSource/Benchmarks/Adobe-C++/simple_types_constant_folding          |  2.9700  1.6800  1.77 
MultiSource/Benchmarks/FreeBench/neural/neural                           |  0.3000  0.1700  1.76 
MultiSource/Benchmarks/McCat/04-bisect/bisect                            |  0.1600  0.1300  1.23 
SingleSource/Benchmarks/Misc/flops-3                                     |  2.9100  2.4400  1.19 
MultiSource/Benchmarks/ASC_Sequoia/CrystalMk/CrystalMk                   | 10.4000  8.7200  1.19 
SingleSource/Benchmarks/CoyoteBench/almabench                            | 11.5000  9.7800  1.18 
External/SPEC/CFP2006/447.dealII/447.dealII                              | 22.5700 19.1700  1.18 
SingleSource/Benchmarks/Misc/whetstone                                   |  1.5500  1.3400  1.16 
SingleSource/Benchmarks/Misc/perlin                                      |  7.8100  6.7200  1.16 
MultiSource/Benchmarks/ASC_Sequoia/AMGmk/AMGmk                           | 16.5200 14.3000  1.16 
SingleSource/Benchmarks/Shootout-C++/moments                             |  0.1600  0.1400  1.14 
SingleSource/Benchmarks/Misc/flops-4                                     |  1.3800  1.2100  1.14 
SingleSource/Benchmarks/Misc-C++/Large/ray                               |  4.7500  4.1900  1.13 
MultiSource/Benchmarks/MiBench/consumer-lame/consumer-lame               |  0.3500  0.3100  1.13 
SingleSource/Benchmarks/Misc/flops-8                                     |  2.4500  2.2300  1.10 
SingleSource/Benchmarks/Misc/flops-2                                     |  2.1000  1.9200  1.09 
SingleSource/Benchmarks/Dhrystone/fldry                                  |  1.4600  1.3400  1.09 
SingleSource/Benchmarks/Adobe-C++/simple_types_loop_invariant            |  4.6600  4.2700  1.09 
SingleSource/Benchmarks/Adobe-C++/functionobjects                        |  4.5100  4.1200  1.09 
External/SPEC/CFP2000/179.art/179.art                                    |  2.2000  2.0100  1.09 

And the worst regressions:

MultiSource/Benchmarks/FreeBench/fourinarow/fourinarow                   |  0.8800  0.8900  0.99 
SingleSource/Benchmarks/Shootout-C++/ary3                                |  2.0100  2.0500  0.98 
SingleSource/Benchmarks/CoyoteBench/huffbench                            | 20.4700 20.8700  0.98 
MultiSource/Applications/sqlite3/sqlite3                                 |  5.3400  5.4300  0.98 
MultiSource/Applications/siod/siod                                       |  3.5400  3.6200  0.98 
SingleSource/Benchmarks/Shootout-C++/methcall                            |  5.6600  5.8300  0.97 
MultiSource/Benchmarks/Olden/bh/bh                                       |  1.7000  1.7500  0.97 
External/SPEC/CINT2006/400.perlbench/400.perlbench                       |  7.2000  7.4300  0.97 
SingleSource/Benchmarks/Shootout/strcat                                  |  0.2400  0.2500  0.96 
SingleSource/Benchmarks/Dhrystone/dry                                    |  0.3500  0.3700  0.95 

SPEC floating point:

External/SPEC/CFP2000/177.mesa/177.mesa                                  |  3.2900  3.2300  1.02 
External/SPEC/CFP2000/179.art/179.art                                    |  2.2000  2.0100  1.09 
External/SPEC/CFP2000/183.equake/183.equake                              |  7.7700  7.6900  1.01 
External/SPEC/CFP2000/188.ammp/188.ammp                                  | 16.3700 15.9300  1.03 
External/SPEC/CFP2006/433.milc/433.milc                                  |  8.3900  8.3400  1.01 
External/SPEC/CFP2006/444.namd/444.namd                                  | 18.6700 17.5100  1.07 
External/SPEC/CFP2006/447.dealII/447.dealII                              | 22.5700 19.1700  1.18 
External/SPEC/CFP2006/470.lbm/470.lbm                                    |  3.4700  3.4100  1.02 



-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 1929 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20100717/2cb289c8/attachment.bin>


More information about the llvm-commits mailing list