Samsung / walrus

WebAssembly Lightweight RUntime
Apache License 2.0
39 stars 10 forks source link

Introduce move.f32 and move.f64 #239

Closed zherczeg closed 5 months ago

zherczeg commented 5 months ago

This patch splits move32/64 to movei32/64 and movef32/64. The advantages of selecting move operation for this:

What do you think?

ksh8281 commented 5 months ago

Could you check interpreter performance difference?

zherczeg commented 5 months ago

Before change:

|        test        |/home/hzoli/Escargot/wabt/walrus/out/walrus|
|--------------------|-------------------------------------------|
|       change       |                   3.633                   |
|      factorial     |                   3.719                   |
|      fannkuch      |                   3.143                   |
|      fibonacci     |                   5.296                   |
|       gregory      |                   4.005                   |
|        hanoi       |                   4.704                   |
|      heapsort      |                   5.237                   |
|       huffman      |                   4.759                   |
|     kNucleotide    |                   3.942                   |
|  mandelbrotDouble  |                   3.772                   |
|   mandelbrotFloat  |                   3.581                   |
|   matrixMultiply   |                   5.927                   |
|     miniWalrus     |                   6.082                   |
|        nbody       |                   4.592                   |
|       nqueens      |                   4.229                   |
|        prime       |                   4.662                   |
|      quickSort     |                   4.515                   |
|      redBlack      |                   5.340                   |
|         rsa        |                   3.953                   |
|      salesman      |                   4.305                   |
|simdMandelbrotDouble|                   5.789                   |
| simdMandelbrotFloat|                   4.237                   |
| simdMatrixMultiply |                   11.720                  |
|      simdNbody     |                   2.784                   |
|      ticTacToe     |                   5.029                   |

After change:

|        test        |/home/hzoli/Escargot/wabt/walrus/out/walrus|
|--------------------|-------------------------------------------|
|       change       |                   3.686                   |
|      factorial     |                   3.649                   |
|      fannkuch      |                   3.245                   |
|      fibonacci     |                   5.363                   |
|       gregory      |                   3.816                   |
|        hanoi       |                   4.720                   |
|      heapsort      |                   5.298                   |
|       huffman      |                   4.946                   |
|     kNucleotide    |                   3.950                   |
|  mandelbrotDouble  |                   3.762                   |
|   mandelbrotFloat  |                   3.647                   |
|   matrixMultiply   |                   5.933                   |
|     miniWalrus     |                   5.383                   |
|        nbody       |                   4.659                   |
|       nqueens      |                   4.236                   |
|        prime       |                   4.635                   |
|      quickSort     |                   4.465                   |
|      redBlack      |                   5.368                   |
|         rsa        |                   4.270                   |
|      salesman      |                   4.417                   |
|simdMandelbrotDouble|                   5.653                   |
| simdMandelbrotFloat|                   4.346                   |
| simdMatrixMultiply |                   11.360                  |
|      simdNbody     |                   2.993                   |
|      ticTacToe     |                   5.118                   |

Looks like noise

zherczeg commented 5 months ago

@clover2123 what do you think about this patch? It does not affect perf, especially because move is rarely used. It is not a real webassembly instruction, more of a helper in some edge cases.

clover2123 commented 5 months ago

It seems that the parsing/compilation overhead is not significant for the overall performance, as you mentioned, so It looks ok.