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
Apparently Analagous 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