RFR: 8334431: C2 SuperWord: fix performance regression due to store-to-load-forwarding failures [v2]

Emanuel Peter epeter at openjdk.org
Tue Nov 19 16:46:08 UTC 2024


On Tue, 19 Nov 2024 12:46:16 GMT, Quan Anh Mai <qamai at openjdk.org> wrote:

>> @dean-long I tried that with `@param`, but then they are not constants... sadly. And they need to be constants. Let me know if you find some better way though ;)
>
> @eme64 FYI you can make param a constant using this pattern:
> 
>     static final MutableCallSite MUTABLE_CONSTANT = new MutableCallSite(MethodType.methodType(int.class));
>     static final MethodHandle MUTABLE_CONSTANT_HANDLE = MUTABLE_CONSTANT.dynamicInvoker();
> 
>     static {
>         MethodHandle init = MethodHandles.constant(int.class, 1);
>         MUTABLE_CONSTANT.setTarget(init);
>     }
> 
>     @Param({"1", "2"})
>     int size;
> 
>     @Setup(Level.Iteration)
>     public void setup() throws Throwable {
>         if (size != (int) MUTABLE_CONSTANT_HANDLE.invokeExact()) {
>             MethodHandle constant = MethodHandles.constant(int.class, size);
>             MUTABLE_CONSTANT.setTarget(constant);
>         }
>     }
> 
>     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
>     private int test() throws Throwable {
>         return (int) MUTABLE_CONSTANT_HANDLE.invokeExact();
>     }
> 
>     @Benchmark
>     public void run() throws Throwable {
>         test();
>     }

@merykitty The benchmark is now fixed, the results look good. Thanks for the help!


Benchmark                                  (OFFSET)  (SIZE)  (seed)  Mode  Cnt     Score      Error  Units
VectorStoreToLoadForwarding.Default.bytes         0   10000       0  avgt    3    84.419 ±    2.318  ns/op
VectorStoreToLoadForwarding.Default.bytes         1   10000       0  avgt    3  3929.075 ± 1010.049  ns/op
VectorStoreToLoadForwarding.Default.bytes         2   10000       0  avgt    3  7330.787 ±  312.536  ns/op
VectorStoreToLoadForwarding.Default.bytes         3   10000       0  avgt    3  4892.922 ±  670.867  ns/op
VectorStoreToLoadForwarding.Default.bytes         4   10000       0  avgt    3   640.643 ±   13.942  ns/op
VectorStoreToLoadForwarding.Default.bytes         5   10000       0  avgt    3  2507.479 ±   63.858  ns/op
VectorStoreToLoadForwarding.Default.bytes         6   10000       0  avgt    3  2381.243 ±  993.419  ns/op
VectorStoreToLoadForwarding.Default.bytes         7   10000       0  avgt    3  1977.162 ±  277.043  ns/op
VectorStoreToLoadForwarding.Default.bytes         8   10000       0  avgt    3   399.015 ±   18.180  ns/op
VectorStoreToLoadForwarding.Default.bytes         9   10000       0  avgt    3  1920.202 ±  135.682  ns/op
VectorStoreToLoadForwarding.Default.bytes        10   10000       0  avgt    3  1874.257 ±  411.567  ns/op
VectorStoreToLoadForwarding.Default.bytes        11   10000       0  avgt    3  1890.358 ± 1538.414  ns/op
VectorStoreToLoadForwarding.Default.bytes        12   10000       0  avgt    3  1701.539 ± 2105.819  ns/op
VectorStoreToLoadForwarding.Default.bytes        13   10000       0  avgt    3  1612.812 ±   58.573  ns/op
VectorStoreToLoadForwarding.Default.bytes        14   10000       0  avgt    3  1442.488 ±   44.108  ns/op
VectorStoreToLoadForwarding.Default.bytes        15   10000       0  avgt    3  1414.342 ±   57.398  ns/op
VectorStoreToLoadForwarding.Default.bytes        16   10000       0  avgt    3   277.813 ±   11.511  ns/op
VectorStoreToLoadForwarding.Default.bytes        17   10000       0  avgt    3  1385.329 ±  419.368  ns/op
VectorStoreToLoadForwarding.Default.bytes        18   10000       0  avgt    3  1368.331 ±   49.108  ns/op
VectorStoreToLoadForwarding.Default.bytes        19   10000       0  avgt    3  1366.278 ±   12.408  ns/op
VectorStoreToLoadForwarding.Default.bytes        20   10000       0  avgt    3  1372.812 ±   51.706  ns/op
VectorStoreToLoadForwarding.Default.bytes        21   10000       0  avgt    3  1398.275 ±   64.086  ns/op
VectorStoreToLoadForwarding.Default.bytes        22   10000       0  avgt    3  1361.567 ±   47.301  ns/op
VectorStoreToLoadForwarding.Default.bytes        23   10000       0  avgt    3  1521.131 ±  372.578  ns/op
VectorStoreToLoadForwarding.Default.bytes        24   10000       0  avgt    3  1508.359 ±  656.543  ns/op
VectorStoreToLoadForwarding.Default.bytes        25   10000       0  avgt    3  1488.101 ±  972.030  ns/op
VectorStoreToLoadForwarding.Default.bytes        26   10000       0  avgt    3  1464.272 ±  314.889  ns/op
VectorStoreToLoadForwarding.Default.bytes        27   10000       0  avgt    3  1557.113 ±   71.264  ns/op
VectorStoreToLoadForwarding.Default.bytes        28   10000       0  avgt    3  1546.363 ±  115.719  ns/op
VectorStoreToLoadForwarding.Default.bytes        29   10000       0  avgt    3  1564.489 ±   23.133  ns/op
VectorStoreToLoadForwarding.Default.bytes        30   10000       0  avgt    3  1571.730 ±  123.272  ns/op
VectorStoreToLoadForwarding.Default.bytes        31   10000       0  avgt    3  1595.116 ±  578.300  ns/op
VectorStoreToLoadForwarding.Default.bytes        32   10000       0  avgt    3   246.158 ±    2.173  ns/op
VectorStoreToLoadForwarding.Default.bytes        33   10000       0  avgt    3  1572.533 ±  188.633  ns/op
VectorStoreToLoadForwarding.Default.bytes        34   10000       0  avgt    3  1586.926 ±  290.448  ns/op
VectorStoreToLoadForwarding.Default.bytes        35   10000       0  avgt    3  1553.085 ±  132.149  ns/op
VectorStoreToLoadForwarding.Default.bytes        36   10000       0  avgt    3  1559.736 ±  125.902  ns/op
VectorStoreToLoadForwarding.Default.bytes        37   10000       0  avgt    3  1594.768 ±  832.743  ns/op
VectorStoreToLoadForwarding.Default.bytes        38   10000       0  avgt    3  1509.641 ±  326.219  ns/op
VectorStoreToLoadForwarding.Default.bytes        39   10000       0  avgt    3  1479.121 ±  164.986  ns/op
VectorStoreToLoadForwarding.Default.bytes        40   10000       0  avgt    3  1425.943 ±   46.541  ns/op
VectorStoreToLoadForwarding.Default.bytes        41   10000       0  avgt    3  1461.884 ±  453.731  ns/op
VectorStoreToLoadForwarding.Default.bytes        42   10000       0  avgt    3  1437.846 ±   41.903  ns/op
VectorStoreToLoadForwarding.Default.bytes        43   10000       0  avgt    3  1483.152 ±  303.466  ns/op
VectorStoreToLoadForwarding.Default.bytes        44   10000       0  avgt    3  1447.585 ±  200.255  ns/op
VectorStoreToLoadForwarding.Default.bytes        45   10000       0  avgt    3  1446.681 ±   21.455  ns/op
VectorStoreToLoadForwarding.Default.bytes        46   10000       0  avgt    3  1475.594 ±  149.059  ns/op
VectorStoreToLoadForwarding.Default.bytes        47   10000       0  avgt    3  1463.778 ±  380.469  ns/op
VectorStoreToLoadForwarding.Default.bytes        48   10000       0  avgt    3  1469.632 ±   10.665  ns/op
VectorStoreToLoadForwarding.Default.bytes        49   10000       0  avgt    3  1478.896 ±   14.962  ns/op
VectorStoreToLoadForwarding.Default.bytes        50   10000       0  avgt    3  1500.971 ±  898.381  ns/op
VectorStoreToLoadForwarding.Default.bytes        51   10000       0  avgt    3  1519.968 ±  815.377  ns/op
VectorStoreToLoadForwarding.Default.bytes        52   10000       0  avgt    3  1522.245 ±  354.020  ns/op
VectorStoreToLoadForwarding.Default.bytes        53   10000       0  avgt    3  1519.103 ±   21.608  ns/op
VectorStoreToLoadForwarding.Default.bytes        54   10000       0  avgt    3  1506.415 ±   10.809  ns/op
VectorStoreToLoadForwarding.Default.bytes        55   10000       0  avgt    3  1531.535 ±  453.600  ns/op
VectorStoreToLoadForwarding.Default.bytes        56   10000       0  avgt    3  1517.761 ±  216.394  ns/op
VectorStoreToLoadForwarding.Default.bytes        57   10000       0  avgt    3  1518.809 ±   76.599  ns/op
VectorStoreToLoadForwarding.Default.bytes        58   10000       0  avgt    3  1534.455 ±  362.115  ns/op
VectorStoreToLoadForwarding.Default.bytes        59   10000       0  avgt    3  1521.613 ±   49.548  ns/op
VectorStoreToLoadForwarding.Default.bytes        60   10000       0  avgt    3  1531.424 ±   15.598  ns/op
VectorStoreToLoadForwarding.Default.bytes        61   10000       0  avgt    3  1545.331 ±   72.731  ns/op
VectorStoreToLoadForwarding.Default.bytes        62   10000       0  avgt    3  1544.233 ±   25.841  ns/op
VectorStoreToLoadForwarding.Default.bytes        63   10000       0  avgt    3  1546.748 ±   88.799  ns/op
VectorStoreToLoadForwarding.Default.bytes        64   10000       0  avgt    3   103.986 ±   18.561  ns/op
VectorStoreToLoadForwarding.Default.bytes        65   10000       0  avgt    3   739.338 ±   70.809  ns/op
VectorStoreToLoadForwarding.Default.bytes        66   10000       0  avgt    3   710.806 ±    2.989  ns/op
VectorStoreToLoadForwarding.Default.bytes        67   10000       0  avgt    3   710.522 ±    1.608  ns/op
VectorStoreToLoadForwarding.Default.bytes        68   10000       0  avgt    3   731.133 ±   13.279  ns/op
VectorStoreToLoadForwarding.Default.bytes        69   10000       0  avgt    3   731.297 ±   28.622  ns/op
VectorStoreToLoadForwarding.Default.bytes        70   10000       0  avgt    3   733.355 ±   22.273  ns/op
VectorStoreToLoadForwarding.Default.bytes        71   10000       0  avgt    3   738.980 ±  154.371  ns/op
VectorStoreToLoadForwarding.Default.bytes        72   10000       0  avgt    3   729.717 ±    3.865  ns/op
VectorStoreToLoadForwarding.Default.bytes        73   10000       0  avgt    3   708.800 ±    5.073  ns/op
VectorStoreToLoadForwarding.Default.bytes        74   10000       0  avgt    3   710.764 ±   11.598  ns/op
VectorStoreToLoadForwarding.Default.bytes        75   10000       0  avgt    3   723.889 ±    3.341  ns/op
VectorStoreToLoadForwarding.Default.bytes        76   10000       0  avgt    3   728.995 ±  154.982  ns/op
VectorStoreToLoadForwarding.Default.bytes        77   10000       0  avgt    3   710.761 ±   48.943  ns/op
VectorStoreToLoadForwarding.Default.bytes        78   10000       0  avgt    3   717.265 ±  132.054  ns/op
VectorStoreToLoadForwarding.Default.bytes        79   10000       0  avgt    3   734.528 ±  269.623  ns/op
VectorStoreToLoadForwarding.Default.bytes        80   10000       0  avgt    3   709.711 ±   42.097  ns/op
VectorStoreToLoadForwarding.Default.bytes        81   10000       0  avgt    3   706.456 ±    3.155  ns/op
VectorStoreToLoadForwarding.Default.bytes        82   10000       0  avgt    3   715.795 ±   69.245  ns/op
VectorStoreToLoadForwarding.Default.bytes        83   10000       0  avgt    3   703.538 ±    2.055  ns/op
VectorStoreToLoadForwarding.Default.bytes        84   10000       0  avgt    3   717.157 ±   23.538  ns/op
VectorStoreToLoadForwarding.Default.bytes        85   10000       0  avgt    3   703.222 ±   12.425  ns/op
VectorStoreToLoadForwarding.Default.bytes        86   10000       0  avgt    3   739.261 ±  136.588  ns/op
VectorStoreToLoadForwarding.Default.bytes        87   10000       0  avgt    3   706.857 ±    1.111  ns/op
VectorStoreToLoadForwarding.Default.bytes        88   10000       0  avgt    3   704.209 ±    3.364  ns/op
VectorStoreToLoadForwarding.Default.bytes        89   10000       0  avgt    3   715.131 ±  105.452  ns/op
VectorStoreToLoadForwarding.Default.bytes        90   10000       0  avgt    3   707.352 ±    8.930  ns/op
VectorStoreToLoadForwarding.Default.bytes        91   10000       0  avgt    3   702.664 ±    0.936  ns/op
VectorStoreToLoadForwarding.Default.bytes        92   10000       0  avgt    3   709.437 ±  101.651  ns/op
VectorStoreToLoadForwarding.Default.bytes        93   10000       0  avgt    3   706.809 ±    4.217  ns/op
VectorStoreToLoadForwarding.Default.bytes        94   10000       0  avgt    3   731.476 ±   10.675  ns/op
VectorStoreToLoadForwarding.Default.bytes        95   10000       0  avgt    3   706.546 ±    2.279  ns/op
VectorStoreToLoadForwarding.Default.bytes        96   10000       0  avgt    3   705.334 ±   38.863  ns/op
VectorStoreToLoadForwarding.Default.bytes        97   10000       0  avgt    3   725.917 ±   52.017  ns/op
VectorStoreToLoadForwarding.Default.bytes        98   10000       0  avgt    3   732.445 ±  187.455  ns/op
VectorStoreToLoadForwarding.Default.bytes        99   10000       0  avgt    3   713.681 ±  156.426  ns/op
VectorStoreToLoadForwarding.Default.bytes       100   10000       0  avgt    3   707.998 ±  162.045  ns/op
VectorStoreToLoadForwarding.Default.bytes       101   10000       0  avgt    3   702.803 ±    0.578  ns/op
VectorStoreToLoadForwarding.Default.bytes       102   10000       0  avgt    3   707.133 ±    3.472  ns/op
VectorStoreToLoadForwarding.Default.bytes       103   10000       0  avgt    3   706.983 ±   12.320  ns/op
VectorStoreToLoadForwarding.Default.bytes       104   10000       0  avgt    3   710.192 ±  119.045  ns/op
VectorStoreToLoadForwarding.Default.bytes       105   10000       0  avgt    3   704.997 ±   59.079  ns/op
VectorStoreToLoadForwarding.Default.bytes       106   10000       0  avgt    3   703.934 ±    4.299  ns/op
VectorStoreToLoadForwarding.Default.bytes       107   10000       0  avgt    3   703.291 ±    7.547  ns/op
VectorStoreToLoadForwarding.Default.bytes       108   10000       0  avgt    3   707.445 ±    9.157  ns/op
VectorStoreToLoadForwarding.Default.bytes       109   10000       0  avgt    3   713.612 ±  158.228  ns/op
VectorStoreToLoadForwarding.Default.bytes       110   10000       0  avgt    3   708.522 ±  172.037  ns/op
VectorStoreToLoadForwarding.Default.bytes       111   10000       0  avgt    3   706.644 ±    8.504  ns/op
VectorStoreToLoadForwarding.Default.bytes       112   10000       0  avgt    3   706.487 ±    2.299  ns/op
VectorStoreToLoadForwarding.Default.bytes       113   10000       0  avgt    3   735.559 ±    4.990  ns/op
VectorStoreToLoadForwarding.Default.bytes       114   10000       0  avgt    3   736.984 ±   49.354  ns/op
VectorStoreToLoadForwarding.Default.bytes       115   10000       0  avgt    3   735.442 ±    0.737  ns/op
VectorStoreToLoadForwarding.Default.bytes       116   10000       0  avgt    3   732.078 ±   29.918  ns/op
VectorStoreToLoadForwarding.Default.bytes       117   10000       0  avgt    3   740.796 ±  176.607  ns/op
VectorStoreToLoadForwarding.Default.bytes       118   10000       0  avgt    3   702.843 ±    2.376  ns/op
VectorStoreToLoadForwarding.Default.bytes       119   10000       0  avgt    3   739.625 ±   66.250  ns/op
VectorStoreToLoadForwarding.Default.bytes       120   10000       0  avgt    3   731.305 ±    7.676  ns/op
VectorStoreToLoadForwarding.Default.bytes       121   10000       0  avgt    3   741.294 ±  163.888  ns/op
VectorStoreToLoadForwarding.Default.bytes       122   10000       0  avgt    3   705.320 ±   46.094  ns/op
VectorStoreToLoadForwarding.Default.bytes       123   10000       0  avgt    3   731.293 ±    8.593  ns/op
VectorStoreToLoadForwarding.Default.bytes       124   10000       0  avgt    3   731.404 ±    9.028  ns/op
VectorStoreToLoadForwarding.Default.bytes       125   10000       0  avgt    3   735.768 ±  107.554  ns/op
VectorStoreToLoadForwarding.Default.bytes       126   10000       0  avgt    3   729.665 ±   10.149  ns/op
VectorStoreToLoadForwarding.Default.bytes       127   10000       0  avgt    3   729.545 ±    7.208  ns/op
VectorStoreToLoadForwarding.Default.bytes       128   10000       0  avgt    3   167.031 ±   14.520  ns/op
VectorStoreToLoadForwarding.Default.bytes       129   10000       0  avgt    3   361.999 ±    1.724  ns/op

-------------

PR Comment: https://git.openjdk.org/jdk/pull/21521#issuecomment-2486224321


More information about the hotspot-compiler-dev mailing list