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