Bug 154327

Summary: [JSC] ARM64: Support the immediate format used for bit operations in 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-02-16 21:24:23 PST
[JSC] ARM64: Support the immediate format used for bit operations in Air
Comment 1 Benjamin Poulain 2016-02-16 21:27:28 PST
Created attachment 271534 [details]
Patch
Comment 2 Benjamin Poulain 2016-02-16 21:27:50 PST
                                                  Conf#1                    Conf#2                                      
SunSpider:
   3d-cube                                   10.6259+-0.1609     ?     10.7039+-0.2462        ?
   3d-morph                                   8.4937+-0.1152            8.4609+-0.1249        
   3d-raytrace                                9.9026+-0.7400            9.3949+-0.2922          might be 1.0540x faster
   access-binary-trees                        4.3587+-0.0779            4.1966+-0.3330          might be 1.0386x faster
   access-fannkuch                           12.4793+-0.5196           12.1708+-0.3690          might be 1.0253x faster
   access-nbody                               4.8353+-0.0709            4.8161+-0.0375        
   access-nsieve                              3.6112+-0.0495            3.5861+-0.0552        
   bitops-3bit-bits-in-byte                   1.8573+-0.1579            1.8478+-0.1336        
   bitops-bits-in-byte                        4.3606+-0.0282            4.3381+-0.0277        
   bitops-bitwise-and                         3.2670+-0.0584     ?      3.2806+-0.0428        ?
   bitops-nsieve-bits                         5.9529+-0.0428     ?      5.9532+-0.0327        ?
   controlflow-recursive                      3.5228+-0.2217            3.4280+-0.0583          might be 1.0277x faster
   crypto-aes                                 6.6439+-0.0956            6.5609+-0.0582          might be 1.0126x faster
   crypto-md5                                 4.4277+-0.2567     ?      4.4388+-0.2313        ?
   crypto-sha1                                3.8207+-0.0507     ?      3.8247+-0.0385        ?
   date-format-tofte                         11.1618+-0.1076     ?     11.2150+-0.0481        ?
   date-format-xparb                          7.4947+-0.0688            7.4224+-0.0830        
   math-cordic                                5.5132+-0.0845            5.4836+-0.0885        
   math-partial-sums                         11.5699+-0.0597     ?     11.6865+-0.1306        ? might be 1.0101x slower
   math-spectral-norm                         3.5200+-0.2787     ?      3.6025+-0.2334        ? might be 1.0234x slower
   regexp-dna                                 9.9029+-0.0579     ?      9.9549+-0.1013        ?
   string-base64                              6.7249+-0.1021            6.6929+-0.1031        
   string-fasta                               9.8861+-0.5924            9.6616+-0.4019          might be 1.0232x faster
   string-tagcloud                           11.3032+-0.1542     ?     11.3549+-0.1723        ?
   string-unpack-code                        24.2059+-0.1220     ?     24.2663+-0.2522        ?
   string-validate-input                      6.8876+-0.2015            6.8531+-0.1610        

   <arithmetic>                               7.5511+-0.0423            7.5075+-0.0230          might be 1.0058x faster

                                                  Conf#1                    Conf#2                                      
Octane:
   encrypt                                   0.19698+-0.00186    ?     0.19813+-0.00134       ?
   decrypt                                   3.72593+-0.01081          3.72395+-0.00278       
   deltablue                        x2       0.18019+-0.00498    ?     0.18165+-0.00457       ?
   earley                                    0.43546+-0.01294          0.42855+-0.01119         might be 1.0161x faster
   boyer                                     7.95566+-0.17370          7.78175+-0.20761         might be 1.0223x faster
   navier-stokes                    x2       7.19211+-0.01263    ?     7.19258+-0.02032       ?
   raytrace                         x2       1.31503+-0.00583          1.30708+-0.01012       
   richards                         x2       0.11559+-0.00125          0.11427+-0.00204         might be 1.0116x faster
   splay                            x2       0.76936+-0.03372    ?     0.78618+-0.02068       ? might be 1.0219x slower
   regexp                           x2      37.57838+-0.21623    ?    37.67172+-0.16530       ?
   pdfjs                            x2      58.32623+-1.16359    ?    58.49797+-0.54209       ?
   mandreel                         x2      73.32341+-1.01299         73.28475+-1.23368       
   gbemu                            x2      47.71401+-3.97012         47.09977+-3.85345         might be 1.0130x faster
   closure                                   0.66651+-0.00264    ?     0.66832+-0.00149       ?
   jquery                                    9.93205+-0.04019          9.92038+-0.07714       
   box2d                            x2      16.32389+-0.10072         16.27720+-0.08044       
   zlib                             x2     703.71842+-2.69901        688.32996+-42.49641        might be 1.0224x faster
   typescript                       x2    1187.45579+-10.15948   ?  1192.07112+-20.70651      ?

   <geometric>                               8.32988+-0.05431          8.31031+-0.06174         might be 1.0024x faster

                                                  Conf#1                    Conf#2                                      
Kraken:
   ai-astar                                  157.554+-0.813            156.646+-0.304         
   audio-beat-detection                       59.781+-1.664             59.194+-0.505         
   audio-dft                                 162.053+-7.578            156.984+-4.836           might be 1.0323x faster
   audio-fft                                  42.440+-0.828             42.056+-0.112         
   audio-oscillator                           58.044+-0.274      ?      58.233+-0.319         ?
   imaging-darkroom                           69.185+-0.111      !      69.372+-0.069         ! definitely 1.0027x slower
   imaging-desaturate                         79.319+-1.054             78.860+-0.406         
   imaging-gaussian-blur                     107.445+-0.098      ?     107.495+-0.179         ?
   json-parse-financial                       48.552+-0.214      ^      48.087+-0.193         ^ definitely 1.0097x faster
   json-stringify-tinderbox                   27.113+-0.126      ?      27.167+-0.275         ?
   stanford-crypto-aes                        58.307+-0.225      ?      58.551+-0.287         ?
   stanford-crypto-ccm                        46.479+-1.266      ?      47.822+-1.995         ? might be 1.0289x slower
   stanford-crypto-pbkdf2                    141.859+-0.350      ^     139.908+-0.660         ^ definitely 1.0139x faster
   stanford-crypto-sha256-iterative           51.979+-0.393             51.905+-0.641         

   <arithmetic>                               79.294+-0.555             78.734+-0.391           might be 1.0071x faster

                                                  Conf#1                    Conf#2                                      
AsmBench:
   bigfib.cpp                               661.5652+-32.1260         644.4079+-22.7548         might be 1.0266x faster
   cray.c                                   564.2493+-1.7631     ?    564.6086+-1.3027        ?
   dry.c                                    473.1734+-4.5009     ?    476.7126+-3.6193        ?
   FloatMM.c                                794.1680+-1.4626          793.7352+-1.9449        
   gcc-loops.cpp                           4619.4386+-10.1248        4608.3054+-5.4025        
   n-body.c                                1770.3392+-0.6187     !   1774.5906+-3.6078        ! definitely 1.0024x slower
   Quicksort.c                              568.7667+-2.6090     ?    569.0330+-2.8642        ?
   stepanov_container.cpp                  5843.8760+-13.9853        5832.8068+-10.2412       
   Towers.c                                 283.6298+-0.8808          283.3585+-0.6973        

   <geometric>                             1008.5199+-5.2776         1006.2609+-4.4662          might be 1.0022x faster

                                                  Conf#1                    Conf#2                                      
Geomean of preferred means:
   <scaled-result>                           47.3567+-0.1022           47.1509+-0.1418          might be 1.0044x faster
Comment 3 Filip Pizlo 2016-02-17 14:03:22 PST
Comment on attachment 271534 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=271534&action=review

> Source/JavaScriptCore/b3/air/AirOpcode.opcodes:400
> +    arm64: BitImm64, Tmp, Tmp

I don't understand this.

1) Does it really support 64-bit immediates?
2) Why can't we use Imm64 in that case?
Comment 4 Benjamin Poulain 2016-02-17 15:00:35 PST
Created attachment 271596 [details]
Patch
Comment 5 WebKit Commit Bot 2016-02-17 17:38:39 PST
Comment on attachment 271596 [details]
Patch

Clearing flags on attachment: 271596

Committed r196736: <http://trac.webkit.org/changeset/196736>
Comment 6 WebKit Commit Bot 2016-02-17 17:38:42 PST
All reviewed patches have been landed.  Closing bug.