[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