Bug 154997

Summary: [JSC] Add support for MADD, MSUB and MNEG to Air
Product: WebKit Reporter: Benjamin Poulain <benjamin>
Component: New BugsAssignee: Benjamin Poulain <benjamin>
Status: RESOLVED FIXED    
Severity: Normal CC: commit-queue, fpizlo, keith_miller, mark.lam, msaboff, sbarati
Priority: P2    
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
Patch
none
Patch none

Description Benjamin Poulain 2016-03-03 17:18:17 PST
[JSC] Add support for MADD, MSUB and MNEG to Air
Comment 1 Benjamin Poulain 2016-03-03 17:24:19 PST
Created attachment 272805 [details]
Patch
Comment 2 Benjamin Poulain 2016-03-03 18:36:30 PST
Created attachment 272814 [details]
Patch
Comment 3 WebKit Commit Bot 2016-03-03 18:37:48 PST
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.
Comment 4 Benjamin Poulain 2016-03-03 18:55:19 PST
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 5 Filip Pizlo 2016-03-03 19:04:15 PST
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.
Comment 6 Filip Pizlo 2016-03-03 19:05:50 PST
Oh never mind, these are int operations.  I'm fine with this since I don't think the rounding issue arises for ints.
Comment 7 WebKit Commit Bot 2016-03-03 20:40:08 PST
Comment on attachment 272814 [details]
Patch

Clearing flags on attachment: 272814

Committed r197546: <http://trac.webkit.org/changeset/197546>
Comment 8 WebKit Commit Bot 2016-03-03 20:40:12 PST
All reviewed patches have been landed.  Closing bug.