[cfe-commits] [PATCH] add x32 psABI support
Liao, Michael
michael.liao at intel.com
Mon Jun 4 17:08:46 PDT 2012
Hi, Folks
There are 2 feature support patches adding X32 psABI support (https://sites.google.com/site/x32abi/), respectively to LLVM and clang. The patch to LLVM adds X32 psABI support and introduce a new 'X32' environment for x86-64 target to tell X32 psABI from LP64 psABI (i.e. the original x86-64 ABI). The patch to clang adds '-mx32' option to generate x32 binaries as well as support calling convention changes due to pointer size reduction. Please commit the patch if it seems acceptable.
This new osABI, X32 psABI, allows programs to run in the 64-bit mode but only using 32-bit pointers. Though, programs will be limited to 4GB virtual address space (not all application requires more than 4GB), X32 psABI helps reduce memory footprint and file size and allow them run faster. The following are statistics on both runtime and file size I collected with LLVM patch (plus another dragonegg patch) against CPU2000 and CPU2006. In summary, X32 psABI could boost ~10% performance from legacy 32-bit and has roughly the same performance from 64-bit app. It also reduces file size by +5% from the original x86-64 psABI and has roughly the same file size from legacy 32-bit app. Several workloads do have much better performance due to the reduction of memory footprint, e.g. 181.mcf in CINT2000, up to 100+% and 429.mcf in CINT2006, up to 30+%)
(Note the data in perf columns are the ratio to the base reference time. Data are collected on my laptop with 2.5GHz i5 CPU w/o HT and 8GB memory.)
Perf Size
CINT2000 x32 32 64 x32/32 x32/64 x32 32 64 x32/32 x32/64
===============================================================================================
164.gzip 1833 1729 1753 6.02% 4.56% 55604 55384 62073 0.40% -10.42%
175.vpr 2501 2295 2232 8.98% 12.05% 172341 174327 185564 -1.14% -7.13%
176.gcc 4031 3384 3532 19.12% 14.13% 1549297 1575029 1667266 -1.63% -7.08%
181.mcf 4816 4771 2297 0.94% 109.66% 18157 18088 21218 0.38% -14.43%
186.crafty 3571 2622 3532 36.19% 1.10% 228387 261518 243007 -12.67% -6.02%
197.parser 2418 2118 1956 14.16% 23.62% 162463 162287 179753 0.11% -9.62%
252.eon 4077 2944 3551 38.49% 14.81% 450825 497778 470576 -9.43% -4.20%
253.perlbmk 2975 2887 2970 3.05% 0.17% 529309 537496 566977 -1.52% -6.64%
254.gap 3527 3201 3286 10.18% 7.33% 662043 654386 723806 1.17% -8.53%
255.vortex 3921 3183 3828 23.19% 2.43% 644793 710252 669460 -9.22% -3.68%
256.bzip2 2263 2054 2241 10.18% 0.98% 54008 53922 58123 0.16% -7.08%
300.twolf 3706 3578 3388 3.58% 9.39% 223957 219748 234142 1.92% -4.35%
-----------------------------------------------------------------------------------------------
geomean 3183 2794 2788 13.91% 14.15% 219228 225405 236945 -2.74% -7.48%
Perf Size
CFP2000 x32 32 64 x32/32 x32/64 x32 32 64 x32/32 x32/64
===============================================================================================
168.wupwise 3417 2873 3428 18.93% -0.32% 41970 43851 49154 -4.29% -14.62%
171.swim 7086 7126 7105 -0.56% -0.27% 16906 16857 18641 0.29% -9.31%
172.mgrid 2007 1917 1982 4.69% 1.26% 21272 21224 23086 0.23% -7.86%
173.applu 3445 3285 3241 4.87% 6.29% 67164 67124 63130 0.06% 6.39%
177.mesa 3612 2752 3597 31.25% 0.42% 570567 590889 561250 -3.44% 1.66%
178.galgel 6637 6809 6617 -2.53% 0.30% 225564 225583 233742 -0.01% -3.50%
179.art 6710 5219 5588 28.57% 20.08% 25111 24188 28126 3.82% -10.72%
183.equake 5247 4813 5118 9.02% 2.52% 32539 34011 31431 -4.33% 3.53%
187.facerec 4332 4072 4380 6.39% -1.10% 82061 84290 85737 -2.64% -4.29%
188.ammp 2632 2424 2677 8.58% -1.68% 155976 155712 161403 0.17% -3.36%
189.lucas 5588 3471 5301 60.99% 5.41% 63282 69200 62861 -8.55% 0.67%
191.fma3d 3574 3345 3535 6.85% 1.10% 1140557 1210044 1125430 -5.74% 1.34%
200.sixtrack 1126 1107 1120 1.72% 0.54% 1120202 1192306 1175774 -6.05% -4.73%
301.apsi 3113 2914 3005 6.83% 3.59% 137011 137991 144108 -0.71% -4.92%
-----------------------------------------------------------------------------------------------
geomean 3760 3350 3665 12.23% 2.60% 102995 105400 106972 -2.28% -3.72%
Perf Size
CINT2006 x32 32 64 x32/32 x32/64 x32 32 64 x32/32 x32/64
===============================================================================================
400.perlbench 24.01 24.34 23.44 -1.34% 2.45% 1170386 1157597 1274308 1.10% -8.16%
401.bzip2 18.07 15.91 16.22 13.59% 11.36% 81511 81424 88741 0.11% -8.15%
403.gcc 26.75 23.48 23.69 13.94% 12.92% 3376599 3560736 3760072 -5.17% -10.20%
429.mcf 32.13 31.56 24.44 1.79% 31.47% 18071 18002 21180 0.38% -14.68%
445.gobmk 21.23 20.16 20.44 5.35% 3.87% 3957331 3996450 4314643 -0.98% -8.28%
456.hmmer 13.51 12.39 13.79 9.06% -2.02% 325607 332770 346631 -2.15% -6.07%
458.sjeng 22.78 21.53 21.77 5.81% 4.65% 151169 153498 161067 -1.52% -6.15%
462.libquantum 57.10 36.09 54.98 58.23% 3.86% 44078 46139 48001 -4.47% -8.17%
464.h264ref 43.20 29.66 37.00 45.65% 16.78% 624517 606351 638083 3.00% -2.13%
471.omnetpp 21.79 20.05 18.19 8.67% 19.79% 815698 866301 903660 -5.84% -9.73%
473.astar 17.17 16.06 15.85 6.86% 8.32% 47740 47881 50448 -0.29% -5.37%
483.xalancbmk 28.28 26.47 24.29 6.82% 16.42% 5859115 6016864 6301893 -2.62% -7.03%
-----------------------------------------------------------------------------------------------
geomean 25.14 22.17 22.75 13.39% 10.48% 372433 378376 404327 -1.57% -7.89%
Perf Size
CFP2006 x32 32 64 x32/32 x32/64 x32 32 64 x32/32 x32/64
===============================================================================================
410.bwaves 23.10 33.31 23.76 -30.66% -2.79% 36724 36677 40465 0.13% -9.25%
416.gamess 27.75 23.15 24.85 19.87% 11.67% 9234580 9311389 9498620 -0.82% -2.78%
433.milc 23.38 21.11 23.76 10.72% -1.63% 143476 148267 155756 -3.23% -7.88%
434.zeusmp 19.58 18.92 20.01 3.49% -2.16% 264976 273096 279569 -2.97% -5.22%
435.gromacs 13.67 12.96 13.54 5.49% 0.94% 1061640 1100340 1138544 -3.52% -6.75%
436.cactusADM 15.51 15.78 15.42 -1.77% 0.53% 847904 869614 910019 -2.50% -6.83%
437.leslie3d 15.90 14.65 15.35 8.60% 3.65% 102357 106347 111073 -3.75% -7.85%
444.namd 20.02 18.20 19.91 10.06% 0.55% 333622 332808 341476 0.24% -2.30%
447.dealII 33.17 27.53 31.54 20.49% 5.16% 3832100 3907425 4034575 -1.93% -5.02%
450.soplex 31.03 30.43 29.93 1.97% 3.66% 428589 432496 447497 -0.90% -4.23%
453.povray 29.21 25.47 28.01 14.70% 4.29% 1204162 1245736 1252418 -3.34% -3.85%
454.calculix 9.77 7.78 9.60 25.67% 1.82% 1923695 1980032 1976249 -2.85% -2.66%
459.GemsFDTD 19.61 14.92 19.66 31.41% -0.24% 406358 430149 447996 -5.53% -9.29%
465.tonto 18.31 14.96 18.65 22.39% -1.81% 4674046 4724002 4875130 -1.06% -4.12%
470.lbm 42.77 39.82 43.49 7.42% -1.65% 19390 21372 21544 -9.27% -10.00%
481.wrf 14.57 14.88 15.10 -2.13% -3.54% 4956659 4873380 5270234 1.71% -5.95%
482.sphinx3 27.12 25.69 25.82 5.55% 5.03% 213919 217765 233070 -1.77% -8.22%
-----------------------------------------------------------------------------------------------
geomean 21.20 19.62 20.93 8.05% 1.31% 563864 578104 600126 -2.46% -6.04%
Yours
- Michael
-------------- next part --------------
A non-text attachment was scrubbed...
Name: clang-add-x32-psABI-support.patch
Type: application/octet-stream
Size: 15707 bytes
Desc: clang-add-x32-psABI-support.patch
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20120605/e638c3b6/attachment.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: llvm-add-x32-psABI-support.patch
Type: application/octet-stream
Size: 125609 bytes
Desc: llvm-add-x32-psABI-support.patch
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20120605/e638c3b6/attachment-0001.obj>
More information about the cfe-commits
mailing list