If you are interesting to play around X32, you may refer to
http://sourceware.org/glibc/wiki/x32 to bootstrap a local environment on Linux.
Yours
- Michael
-----Original Message-----
From: cfe-commits-bounces at cs.uiuc.edu [mailto:cfe-commits-bounces at
cs.uiuc.edu] On Behalf Of Liao, Michael
Sent: Monday, June 04, 2012 5:09 PM
To: llvm-commits at cs.uiuc.edu; cfe-commits at cs.uiuc.edu
Subject: [cfe-commits] [PATCH] add x32 psABI support
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
Hi Folks,
Anyone got chance to review the patch adding X32 psABI support?
Yours
- Michael
-----Original Message-----
From: llvm-commits-bounces at cs.uiuc.edu [mailto:llvm-commits-bounces at
cs.uiuc.edu] On Behalf Of Liao, Michael
Sent: Tuesday, June 05, 2012 11:18 AM
To: llvm-commits at cs.uiuc.edu; cfe-commits at cs.uiuc.edu; llvmdev at
cs.uiuc.edu; cfe-dev at cs.uiuc.edu
Subject: Re: [llvm-commits] [PATCH] add x32 psABI support
If you are interesting to play around X32, you may refer to
http://sourceware.org/glibc/wiki/x32 to bootstrap a local environment on Linux.
Yours
- Michael
-----Original Message-----
From: cfe-commits-bounces at cs.uiuc.edu [mailto:cfe-commits-bounces at
cs.uiuc.edu] On Behalf Of Liao, Michael
Sent: Monday, June 04, 2012 5:09 PM
To: llvm-commits at cs.uiuc.edu; cfe-commits at cs.uiuc.edu
Subject: [cfe-commits] [PATCH] add x32 psABI support
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
_______________________________________________
llvm-commits mailing list
llvm-commits at cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
Anton Korobeynikov
2012-Jun-08 07:06 UTC
[LLVMdev] [llvm-commits] [PATCH] add x32 psABI support
Hello Michael,> Anyone got chance to review the patch adding X32 psABI support?LLVM patch is quite big to review it alone. Will you please split it into parts? E.g., as it seems to me: 1. Configure-related things (+Triple, etc) 2. MC changes 3. Codegen changes (is possible, split here too) Also, it seems you're totally lacking *any* tests. This means that x32 being the "poor sister" here can quickly become bitrot'ed. Please include ones for: 1. clang driver changes 2. clang ABI bits 3. LLVM codegen Thanks! -- With best regards, Anton Korobeynikov Faculty of Mathematics and Mechanics, Saint Petersburg State University
Possibly Parallel Threads
- [LLVMdev] [PATCH] add x32 psABI support
- [LLVMdev] FYI: IA-32 psABI draft version 0.1
- [LLVMdev] ABI incompatability when passing vector parameters on 32-bit x86
- [LLVMdev] [RFC PATCH] X32 ABI support for Clang/compiler-rt (compiler-rt patch)
- [LLVMdev] Upstreaming x32 ABI support