Bug 154432

Summary: [JSC] Improve the instruction selection of Select
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
Perf results none

Description Benjamin Poulain 2016-02-18 19:09:49 PST
[JSC] Improve the instruction selection of Select
Comment 1 Benjamin Poulain 2016-02-18 19:15:54 PST
Created attachment 271722 [details]
Patch
Comment 2 Benjamin Poulain 2016-02-18 20:31:11 PST
Created attachment 271726 [details]
Perf results


                                                          Conf#1                    Conf#2                                      
SunSpider:
   3d-cube                                            4.4360+-0.0598     ?      4.4409+-0.0707        ?
   3d-morph                                           4.9461+-0.0227     ?      4.9517+-0.0285        ?
   3d-raytrace                                        5.2599+-0.0638            5.2098+-0.0644        
   access-binary-trees                                2.0591+-0.1544            2.0234+-0.0406          might be 1.0176x faster
   access-fannkuch                                    5.5180+-0.0530     ?      5.5263+-0.0434        ?
   access-nbody                                       2.4361+-0.0318     ?      2.4401+-0.0644        ?
   access-nsieve                                      3.0039+-0.0743     ?      3.0251+-0.0616        ?
   bitops-3bit-bits-in-byte                           1.0510+-0.0069     ?      1.0595+-0.0174        ?
   bitops-bits-in-byte                                2.9168+-0.0251     ?      2.9655+-0.0515        ? might be 1.0167x slower
   bitops-bitwise-and                                 1.8761+-0.0222            1.8583+-0.0136        
   bitops-nsieve-bits                                 2.7428+-0.0156     ?      2.7647+-0.0347        ?
   controlflow-recursive                              2.2858+-0.0785            2.2851+-0.0713        
   crypto-aes                                         3.7519+-0.0599            3.7477+-0.0519        
   crypto-md5                                         2.3706+-0.0222     ?      2.4250+-0.0491        ? might be 1.0230x slower
   crypto-sha1                                        2.1907+-0.0378     ?      2.2275+-0.0506        ? might be 1.0168x slower
   date-format-tofte                                  6.2339+-0.0666            6.2041+-0.0490        
   date-format-xparb                                  4.2885+-0.0419            4.2699+-0.0390        
   math-cordic                                        2.7525+-0.0247            2.7250+-0.0148          might be 1.0101x faster
   math-partial-sums                                  4.5327+-0.0533            4.5322+-0.0718        
   math-spectral-norm                                 1.8576+-0.0316            1.8376+-0.0135          might be 1.0109x faster
   regexp-dna                                         5.8638+-0.0987            5.7455+-0.0684          might be 1.0206x faster
   string-base64                                      4.1319+-0.0630            4.0576+-0.0239          might be 1.0183x faster
   string-fasta                                       5.4857+-0.0444     ?      5.5048+-0.0517        ?
   string-tagcloud                                    7.6129+-0.0565            7.6030+-0.0618        
   string-unpack-code                                16.9188+-0.1978     ?     17.0437+-0.2619        ?
   string-validate-input                              4.0032+-0.0470     ?      4.0413+-0.0704        ?

   <arithmetic>                                       4.2510+-0.0139            4.2506+-0.0106          might be 1.0001x faster

                                                          Conf#1                    Conf#2                                      
LongSpider:
   3d-cube                                          774.0715+-3.2086     ?    775.9935+-6.7534        ?
   3d-morph                                         566.6292+-0.2764     ?    566.9985+-0.8838        ?
   3d-raytrace                                      596.9485+-5.2473          596.8118+-2.9748        
   access-binary-trees                              896.2965+-3.2881     ?    902.1610+-6.2041        ?
   access-fannkuch                                  272.8734+-18.7757         246.0767+-11.8582         might be 1.1089x faster
   access-nbody                                     490.8175+-0.1177     ^    490.2510+-0.0777        ^ definitely 1.0012x faster
   access-nsieve                                    470.9667+-1.0195          470.0502+-1.3722        
   bitops-3bit-bits-in-byte                          31.7074+-0.0433     ?     31.7152+-0.0354        ?
   bitops-bits-in-byte                              102.6728+-1.1882          101.8636+-1.0776        
   bitops-nsieve-bits                               353.4107+-1.3973          353.4024+-1.3272        
   controlflow-recursive                            434.6621+-1.4076          434.1856+-1.2467        
   crypto-aes                                       634.8440+-2.0643     ^    628.6308+-3.8252        ^ definitely 1.0099x faster
   crypto-md5                                       557.5948+-3.7062     ?    558.9581+-3.8661        ?
   crypto-sha1                                      712.1460+-3.0141     ^    703.7393+-2.9897        ^ definitely 1.0119x faster
   date-format-tofte                                550.8316+-10.7138         545.4917+-7.2942        
   date-format-xparb                                623.8839+-0.9601          621.2838+-2.2836        
   hash-map                                         150.6665+-0.3960          149.3396+-0.9850        
   math-cordic                                      453.4004+-4.8147     ?    455.5772+-5.4404        ?
   math-partial-sums                                389.2124+-0.2610     ?    389.3830+-0.2271        ?
   math-spectral-norm                               525.8647+-0.6303          525.6532+-0.2174        
   string-base64                                    370.2980+-2.9554          368.0991+-2.2718        
   string-fasta                                     337.5433+-2.4426          336.7912+-1.3929        
   string-tagcloud                                  167.7561+-0.6529     ?    168.6504+-2.2468        ?

   <geometric>                                      377.6109+-1.1789     ^    375.2610+-0.8312        ^ definitely 1.0063x faster

                                                          Conf#1                    Conf#2                                      
V8Spider:
   crypto                                            35.9086+-0.1684     ?     35.9649+-0.1311        ?
   deltablue                                         49.2300+-1.2962           48.5656+-0.6914          might be 1.0137x faster
   earley-boyer                                      38.8014+-0.3058     ?     38.9645+-0.1667        ?
   raytrace                                          19.7893+-0.1552     ?     19.9266+-0.1779        ?
   regexp                                            59.6268+-0.8314           59.4792+-0.8893        
   richards                                          39.0741+-0.5151           38.9582+-0.2243        
   splay                                             33.0862+-0.2236           32.9627+-0.2944        

   <geometric>                                       37.5130+-0.1827           37.4614+-0.1366          might be 1.0014x faster

                                                          Conf#1                    Conf#2                                      
Octane:
   encrypt                                           0.14719+-0.00190    ?     0.14740+-0.00220       ?
   decrypt                                           2.63921+-0.00825    ?     2.64235+-0.00681       ?
   deltablue                                x2       0.13297+-0.00437          0.12942+-0.00082         might be 1.0274x faster
   earley                                            0.30162+-0.00333          0.30085+-0.00402       
   boyer                                             4.52145+-0.01952          4.50427+-0.01648       
   navier-stokes                            x2       4.66993+-0.00763          4.66398+-0.00520       
   raytrace                                 x2       0.91453+-0.00375    ?     0.91556+-0.00297       ?
   richards                                 x2       0.07753+-0.00101          0.07711+-0.00077       
   splay                                    x2       0.39091+-0.00406    ?     0.39124+-0.00569       ?
   regexp                                   x2      24.36154+-0.35409    ?    24.61188+-0.13974       ? might be 1.0103x slower
   pdfjs                                    x2      37.43861+-0.15995         37.31097+-0.17971       
   mandreel                                 x2      41.37513+-0.21663    ?    41.38920+-0.23316       ?
   gbemu                                    x2      22.83475+-0.13783         22.72895+-0.11825       
   closure                                           0.53174+-0.00112    ?     0.53303+-0.00105       ?
   jquery                                            6.81585+-0.00895    ?     6.82967+-0.02008       ?
   box2d                                    x2       8.63443+-0.05289          8.58582+-0.04081       
   zlib                                     x2     379.53512+-8.35004    ?   381.70142+-4.05096       ?
   typescript                               x2     629.43975+-2.94287    ?   629.77180+-4.98118       ?

   <geometric>                                       5.11006+-0.00911          5.10084+-0.01150         might be 1.0018x faster

                                                          Conf#1                    Conf#2                                      
Kraken:
   ai-astar                                           89.459+-1.686      ?      89.660+-1.674         ?
   audio-beat-detection                               45.172+-0.126             44.883+-0.634         
   audio-dft                                          87.786+-0.342             87.601+-0.439         
   audio-fft                                          33.717+-0.050             33.711+-0.051         
   audio-oscillator                                   45.788+-0.325             45.575+-0.036         
   imaging-darkroom                                   57.020+-0.098      ?      57.127+-0.288         ?
   imaging-desaturate                                 41.793+-0.064             41.788+-0.060         
   imaging-gaussian-blur                              69.421+-1.257      ?      71.246+-3.001         ? might be 1.0263x slower
   json-parse-financial                               34.705+-0.134      ?      34.709+-0.436         ?
   json-stringify-tinderbox                           22.901+-0.291             22.763+-0.214         
   stanford-crypto-aes                                38.268+-0.205      ^      37.748+-0.231         ^ definitely 1.0138x faster
   stanford-crypto-ccm                                34.222+-0.883      ?      34.860+-0.544         ? might be 1.0186x slower
   stanford-crypto-pbkdf2                             95.589+-0.458      ?      95.620+-0.799         ?
   stanford-crypto-sha256-iterative                   36.073+-0.160      ?      36.297+-0.102         ?

   <arithmetic>                                       52.279+-0.176      ?      52.399+-0.155         ? might be 1.0023x slower


                                                          Conf#1                    Conf#2                                      
AsmBench:
   bigfib.cpp                                       421.4597+-4.5370     ?    421.8978+-4.4250        ?
   cray.c                                           346.7326+-1.4174     ?    347.0421+-0.8846        ?
   dry.c                                            435.1491+-39.6964         426.0164+-34.4609         might be 1.0214x faster
   FloatMM.c                                        671.6600+-5.5836          671.3678+-5.3007        
   gcc-loops.cpp                                   3424.5765+-16.6313    ?   3438.5442+-21.3603       ?
   n-body.c                                         766.0584+-1.1130          765.8909+-1.4105        
   Quicksort.c                                      379.0844+-2.8810     ?    380.2275+-2.0264        ?
   stepanov_container.cpp                          3030.1382+-13.9361        3028.4640+-9.6985        
   Towers.c                                         253.9166+-0.3235     ?    254.1400+-0.8915        ?

   <geometric>                                      683.3120+-7.2058          682.4397+-5.1792          might be 1.0013x faster

                                                          Conf#1                    Conf#2                                      
CompressionBench:
   huffman                                           30.1706+-0.0871     ?     30.1844+-0.1276        ?
   arithmetic-simple                                247.4444+-0.5567     !    249.0122+-0.7402        ! definitely 1.0063x slower
   arithmetic-precise                               234.8145+-2.6280          232.1072+-1.4971          might be 1.0117x faster
   arithmetic-complex-precise                       233.8417+-1.6906          233.2636+-2.5171        
   arithmetic-precise-order-0                       251.8121+-0.4208     ?    251.8281+-0.4805        ?
   arithmetic-precise-order-1                       285.3417+-1.3316          283.8477+-0.6765        
   arithmetic-precise-order-2                       327.8634+-5.0638          325.5007+-0.9080        
   arithmetic-simple-order-1                        296.6160+-1.7371     ?    297.1154+-1.3573        ?
   arithmetic-simple-order-2                        339.5233+-3.7741          339.2135+-2.3171        
   lz-string                                        307.5160+-5.2210          305.2663+-3.3243        

   <geometric>                                      222.6113+-0.6794          222.0361+-0.5694          might be 1.0026x faster

                                                          Conf#1                    Conf#2                                      
Geomean of preferred means:
   <scaled-result>                                   45.6662+-0.0558           45.6027+-0.0520          might be 1.0014x faster
Comment 3 Benjamin Poulain 2016-02-18 20:32:55 PST
Looks like a ~2% win on deltablue.
Comment 4 WebKit Commit Bot 2016-02-18 22:42:05 PST
Comment on attachment 271722 [details]
Patch

Clearing flags on attachment: 271722

Committed r196799: <http://trac.webkit.org/changeset/196799>
Comment 5 WebKit Commit Bot 2016-02-18 22:42:10 PST
All reviewed patches have been landed.  Closing bug.