[JSC] Improve DFG's Int32 ArithMul if one operand is a constant
Created attachment 273095 [details] Patch
On x86: Conf#1 Conf#2 SunSpider: 3d-cube 4.8574+-0.0942 ? 4.9586+-0.4402 ? might be 1.0208x slower 3d-morph 5.4292+-0.1108 5.2627+-0.1277 might be 1.0316x faster 3d-raytrace 5.7309+-0.0814 ? 5.7358+-0.1402 ? access-binary-trees 2.1811+-0.0356 ? 2.2704+-0.1346 ? might be 1.0409x slower access-fannkuch 6.0306+-0.0310 ? 6.1673+-0.1569 ? might be 1.0227x slower access-nbody 2.6757+-0.0282 ? 2.7220+-0.0931 ? might be 1.0173x slower access-nsieve 3.0526+-0.1448 ? 3.1037+-0.0760 ? might be 1.0168x slower bitops-3bit-bits-in-byte 1.1945+-0.0199 1.1929+-0.0217 bitops-bits-in-byte 3.4227+-0.1034 3.3877+-0.0882 might be 1.0103x faster bitops-bitwise-and 2.0744+-0.0540 ? 2.0977+-0.0887 ? might be 1.0112x slower bitops-nsieve-bits 3.0978+-0.0797 3.0790+-0.0487 controlflow-recursive 2.3872+-0.0456 ? 2.3875+-0.0353 ? crypto-aes 4.0471+-0.0578 ? 4.0732+-0.1036 ? crypto-md5 2.6192+-0.0518 ? 2.6222+-0.0522 ? crypto-sha1 2.4140+-0.0805 2.3640+-0.0562 might be 1.0211x faster date-format-tofte 6.9142+-0.1727 6.8816+-0.2214 date-format-xparb 4.9666+-0.1661 ? 4.9904+-0.2258 ? math-cordic 2.9794+-0.0564 2.9450+-0.0476 might be 1.0117x faster math-partial-sums 4.9584+-0.0882 ? 5.1454+-0.1990 ? might be 1.0377x slower math-spectral-norm 2.0969+-0.0865 2.0386+-0.0222 might be 1.0286x faster regexp-dna 6.2249+-0.3411 6.0432+-0.0780 might be 1.0301x faster string-base64 4.6161+-0.1515 4.5806+-0.1563 string-fasta 5.9429+-0.0534 ? 6.0599+-0.1392 ? might be 1.0197x slower string-tagcloud 8.3477+-0.3241 8.1136+-0.0791 might be 1.0289x faster string-unpack-code 19.3762+-0.7380 19.3469+-0.5949 string-validate-input 4.2718+-0.0704 4.2703+-0.0463 <arithmetic> 4.6888+-0.0323 4.6862+-0.0348 might be 1.0006x faster Conf#1 Conf#2 Octane: encrypt 0.16074+-0.00373 0.16054+-0.00255 decrypt 2.84634+-0.01231 ? 2.90101+-0.05048 ? might be 1.0192x slower deltablue x2 0.13985+-0.00333 ? 0.14099+-0.00498 ? earley 0.28637+-0.00466 ? 0.29061+-0.00613 ? might be 1.0148x slower boyer 4.83655+-0.14904 4.82590+-0.10295 navier-stokes x2 4.95935+-0.04868 ? 5.04649+-0.09020 ? might be 1.0176x slower raytrace x2 0.91296+-0.01631 0.90195+-0.01531 might be 1.0122x faster richards x2 0.08361+-0.00153 0.08264+-0.00172 might be 1.0118x faster splay x2 0.35900+-0.00737 0.35345+-0.00570 might be 1.0157x faster regexp x2 22.74265+-0.20699 22.61226+-0.27018 pdfjs x2 39.10015+-0.67469 ? 39.20070+-0.58727 ? mandreel x2 43.56655+-0.79587 43.51428+-0.73368 gbemu x2 25.43622+-0.68800 25.12550+-0.26923 might be 1.0124x faster closure 0.57296+-0.01032 0.57119+-0.00617 jquery 7.56814+-0.15480 7.53549+-0.15188 box2d x2 9.46705+-0.10887 9.45053+-0.18078 zlib x2 386.78442+-6.43039 382.73842+-10.62118 might be 1.0106x faster typescript x2 670.32375+-9.92398 663.69694+-7.88898 <geometric> 5.31266+-0.02572 5.29786+-0.02609 might be 1.0028x faster Conf#1 Conf#2 Kraken: ai-astar 98.730+-2.492 98.202+-1.550 audio-beat-detection 48.095+-0.461 47.844+-0.747 audio-dft 98.439+-1.589 ? 98.719+-1.726 ? audio-fft 35.763+-0.031 ? 35.839+-0.112 ? audio-oscillator 49.159+-0.611 ? 50.012+-1.183 ? might be 1.0173x slower imaging-darkroom 60.761+-0.648 ? 61.739+-1.542 ? might be 1.0161x slower imaging-desaturate 48.170+-2.823 44.998+-1.174 might be 1.0705x faster imaging-gaussian-blur 69.332+-2.026 67.029+-2.817 might be 1.0343x faster json-parse-financial 37.904+-0.657 37.619+-0.590 json-stringify-tinderbox 25.889+-0.869 25.392+-0.641 might be 1.0196x faster stanford-crypto-aes 40.299+-0.574 ? 40.782+-1.057 ? might be 1.0120x slower stanford-crypto-ccm 37.424+-1.511 36.843+-1.109 might be 1.0158x faster stanford-crypto-pbkdf2 102.496+-1.580 101.809+-1.012 stanford-crypto-sha256-iterative 39.130+-0.571 ? 39.223+-0.565 ? <arithmetic> 56.542+-0.345 56.146+-0.378 might be 1.0070x faster Conf#1 Conf#2 AsmBench: bigfib.cpp 439.7751+-6.6319 ? 441.5120+-7.3034 ? cray.c 370.3835+-6.3444 369.3076+-4.2756 dry.c 438.1455+-20.7315 434.1410+-25.0515 FloatMM.c 727.2488+-18.5120 717.0821+-10.0868 might be 1.0142x faster gcc-loops.cpp 3769.6583+-86.5835 3717.7134+-55.0558 might be 1.0140x faster n-body.c 818.7570+-10.4321 810.6736+-4.3607 Quicksort.c 406.9741+-8.7269 399.8831+-8.3981 might be 1.0177x faster stepanov_container.cpp 3321.5985+-45.1519 ? 3356.6512+-81.9616 ? might be 1.0106x slower Towers.c 270.9259+-1.7801 ? 271.2108+-4.7590 ? <geometric> 729.3612+-6.2916 725.1048+-5.9318 might be 1.0059x faster Conf#1 Conf#2 Geomean of preferred means: <scaled-result> 31.8351+-0.1122 31.7059+-0.0901 might be 1.0041x faster
Comment on attachment 273095 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=273095&action=review > Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3682 > + case Int32Use: > + if (node->child2()->isInt32Constant()) { I think that the more canonical way to structure this control flow is: case Int32Use: { if (node->child2()->isInt32Constant()) { ... return; } ... return; } This gets rid of an "else" clause.
Created attachment 273156 [details] Patch for landing
Comment on attachment 273156 [details] Patch for landing Clearing flags on attachment: 273156 Committed r197655: <http://trac.webkit.org/changeset/197655>
All reviewed patches have been landed. Closing bug.