[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
Sun Jul 18 18:43:21 PDT 2010


On Jul 18, 2010, at 12:44 PM, Evan Cheng wrote:

> Fantastic results! Thanks.
> 
> Are the (few) regressions real though? Are they due to register spills?

I haven't looked into it. I don't really care about -mfpmath=387 performance ;-)

However, if there are many FP registers live out of a basic block, I may insert a *lot* of fxch instructions. Up to 14 instructions are required to shuffle 8 live registers into place. That can probably make the x87 register renamer cry.

There are also new instructions inserted to kill and revive stack registers.

There is room for improvement.


>> 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 
>> 
>> 
>> 
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
> 

-------------- 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/20100718/d08f602e/attachment.bin>


More information about the llvm-commits mailing list