[JSC] Add support for MADD, MSUB and MNEG to Air
Created attachment 272805 [details] Patch
Created attachment 272814 [details] Patch
Attachment 272814 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/b3/testb3.cpp:884: One line control clauses should not use braces. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/b3/testb3.cpp:908: One line control clauses should not use braces. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/b3/testb3.cpp:935: One line control clauses should not use braces. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/b3/testb3.cpp:962: One line control clauses should not use braces. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/b3/testb3.cpp:986: One line control clauses should not use braces. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/b3/testb3.cpp:1010: One line control clauses should not use braces. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/b3/testb3.cpp:1037: One line control clauses should not use braces. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/b3/testb3.cpp:1064: One line control clauses should not use braces. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/b3/testb3.cpp:1087: One line control clauses should not use braces. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/b3/testb3.cpp:1111: One line control clauses should not use braces. [whitespace/braces] [4] Total errors found: 10 in 5 files If any of these errors are false positives, please file a bug against check-webkit-style.
Not super reliable numbers due to the current state of the builds. This improves ASM and Octane. A tiny bit Kraken too but nothing crazy. SunSpider: 3d-cube 10.4408+-0.0946 10.4405+-0.0949 3d-morph 8.3481+-0.0461 8.3068+-0.0546 3d-raytrace 9.4128+-0.2644 ? 9.6564+-0.3088 ? might be 1.0259x slower access-binary-trees 4.2118+-0.1346 ? 4.3175+-0.0511 ? might be 1.0251x slower access-fannkuch 11.3340+-0.5558 11.3126+-0.4163 access-nbody 4.7576+-0.0200 4.7323+-0.0133 access-nsieve 3.3850+-0.0479 ? 3.3925+-0.0565 ? bitops-3bit-bits-in-byte 1.7078+-0.0510 ? 1.7245+-0.0479 ? bitops-bits-in-byte 4.1624+-0.0280 4.1605+-0.0153 bitops-bitwise-and 3.2124+-0.0311 ? 3.2224+-0.0154 ? bitops-nsieve-bits 5.9200+-0.0642 5.9000+-0.0222 controlflow-recursive 3.6354+-0.1994 3.6121+-0.1798 crypto-aes 6.4368+-0.0379 ? 6.4512+-0.0385 ? crypto-md5 4.1322+-0.1312 ? 4.1443+-0.1267 ? crypto-sha1 3.7396+-0.0262 ? 3.7901+-0.0701 ? might be 1.0135x slower date-format-tofte 11.2921+-0.0848 11.2268+-0.0731 date-format-xparb 7.3162+-0.0413 ^ 7.2285+-0.0207 ^ definitely 1.0121x faster math-cordic 5.3747+-0.0472 ? 5.4332+-0.0771 ? might be 1.0109x slower math-partial-sums 11.7586+-0.1534 11.6844+-0.0496 math-spectral-norm 3.3130+-0.2035 3.2706+-0.1688 might be 1.0130x faster regexp-dna 9.6994+-0.0305 9.6943+-0.0306 string-base64 6.5375+-0.0662 6.5275+-0.0373 string-fasta 9.7480+-0.1079 9.6107+-0.2192 might be 1.0143x faster string-tagcloud 10.8157+-0.0287 ? 10.8560+-0.0339 ? string-unpack-code 23.4357+-0.0547 ? 23.4746+-0.1199 ? string-validate-input 6.4891+-0.1197 ? 6.5610+-0.1032 ? might be 1.0111x slower <arithmetic> 7.3314+-0.0298 ? 7.3358+-0.0266 ? might be 1.0006x slower Conf#1 Conf#2 Octane: encrypt 0.19641+-0.00069 ^ 0.19254+-0.00067 ^ definitely 1.0201x faster decrypt 3.71076+-0.00462 ^ 3.66854+-0.01057 ^ definitely 1.0115x faster deltablue x2 0.17559+-0.00532 ? 0.17764+-0.00509 ? might be 1.0117x slower earley 0.50439+-0.04828 0.44576+-0.01730 might be 1.1315x faster boyer 7.95720+-0.48300 ? 8.32487+-0.47189 ? might be 1.0462x slower navier-stokes x2 7.16412+-0.00381 ? 7.17401+-0.00893 ? raytrace x2 1.27977+-0.00521 ? 1.29354+-0.01551 ? might be 1.0108x slower richards x2 0.11517+-0.00041 0.11413+-0.00130 splay x2 0.75938+-0.02023 0.74177+-0.01966 might be 1.0237x faster regexp x2 34.84198+-0.61834 ? 34.93315+-0.38528 ? pdfjs x2 57.51264+-0.59815 ? 57.83148+-0.63925 ? mandreel x2 69.63957+-0.51244 ? 69.93655+-0.65592 ? gbemu x2 49.46766+-4.72174 45.33480+-2.40918 might be 1.0912x faster closure 0.64175+-0.00156 ? 0.64588+-0.00291 ? jquery 9.54791+-0.05901 ? 9.54962+-0.01808 ? box2d x2 15.92587+-0.06765 15.85957+-0.06363 zlib x2 664.98595+-31.67819 ? 684.82749+-18.07520 ? might be 1.0298x slower typescript x2 1159.21570+-15.50378 1146.40352+-10.46264 might be 1.0112x faster <geometric> 8.17497+-0.04696 8.12081+-0.03764 might be 1.0067x faster Conf#1 Conf#2 Kraken: ai-astar 155.686+-1.458 154.430+-1.007 audio-beat-detection 76.497+-4.232 74.985+-4.459 might be 1.0202x faster audio-dft 136.728+-2.857 ? 137.644+-3.065 ? audio-fft 41.716+-0.025 ? 41.815+-0.143 ? audio-oscillator 54.017+-0.111 ^ 52.422+-0.486 ^ definitely 1.0304x faster imaging-darkroom 69.001+-0.045 ? 69.005+-0.035 ? imaging-desaturate 77.963+-0.236 ? 78.093+-0.414 ? imaging-gaussian-blur 97.881+-0.896 ? 97.981+-1.507 ? json-parse-financial 47.426+-0.294 ^ 47.051+-0.050 ^ definitely 1.0080x faster json-stringify-tinderbox 27.198+-0.095 26.989+-0.119 stanford-crypto-aes 58.740+-0.295 ? 58.876+-0.243 ? stanford-crypto-ccm 46.608+-0.680 ? 46.750+-0.807 ? stanford-crypto-pbkdf2 140.569+-0.342 ! 141.566+-0.562 ! definitely 1.0071x slower stanford-crypto-sha256-iterative 51.079+-0.098 ? 51.235+-0.075 ? <arithmetic> 77.222+-0.334 77.060+-0.474 might be 1.0021x faster Conf#1 Conf#2 AsmBench: bigfib.cpp 706.2462+-26.0387 ? 715.0826+-21.9142 ? might be 1.0125x slower cray.c 556.7903+-2.3568 ? 558.9798+-3.5637 ? dry.c 472.0462+-1.6893 471.3899+-2.2699 FloatMM.c 798.1385+-5.4036 797.6154+-5.2207 gcc-loops.cpp 4652.0685+-2.7353 ? 4652.9970+-3.1680 ? n-body.c 1757.7715+-1.2894 ? 1758.2687+-3.8823 ? Quicksort.c 558.4019+-1.7840 557.6919+-2.7885 stepanov_container.cpp 5574.7046+-11.6736 ? 5592.5347+-11.9302 ? Towers.c 276.7117+-0.5157 ? 277.0325+-0.7472 ? <geometric> 1004.4341+-4.7129 ? 1006.5074+-3.8598 ? might be 1.0021x slower Conf#1 Conf#2 Geomean of preferred means: <scaled-result> 46.4322+-0.1183 46.3615+-0.0945 might be 1.0015x faster
Comment on attachment 272814 [details] Patch Do the mul-add operations correctly round the intermediate result? We cannot land optimizations that result in a change in behavior when you tier up into the FTL. We cannot do this even if we mistakenly had such behavior in llvm.
Oh never mind, these are int operations. I'm fine with this since I don't think the rounding issue arises for ints.
Comment on attachment 272814 [details] Patch Clearing flags on attachment: 272814 Committed r197546: <http://trac.webkit.org/changeset/197546>
All reviewed patches have been landed. Closing bug.