New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add a PUSHACCMANY opcode. #18967
Add a PUSHACCMANY opcode. #18967
Conversation
@coqbot run full ci |
@coqbot bench |
🏁 Bench results:
INFO: failed to install coq-mathcomp-fingroup (dependency coq-mathcomp-ssreflect failed) 🐢 Top 25 slow downs┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ TOP 25 SLOW DOWNS │ │ │ │ OLD NEW DIFF %DIFF Ln FILE │ ├─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ │ 257.2670 262.3030 5.0360 1.96% 8 coq-neural-net-interp-computed-lite/theories/MaxOfTwoNumbersSimpler/Computed/AllLogits.v.html │ │ 215.7170 218.9060 3.1890 1.48% 103 coq-fiat-crypto-with-bedrock/src/Arithmetic/BarrettReduction.v.html │ │ 62.4220 63.7430 1.3210 2.12% 609 coq-fiat-crypto-with-bedrock/rupicola/bedrock2/bedrock2/src/bedrock2Examples/lightbulb.v.html │ │ 97.8660 99.0440 1.1780 1.20% 376 coq-unimath/UniMath/ModelCategories/Generated/LNWFSMonoidalStructure.v.html │ │ 94.9310 95.7570 0.8260 0.87% 999 coq-performance-tests-lite/src/fiat_crypto_via_setoid_rewrite_standalone.v.html │ │ 95.0650 95.8100 0.7450 0.78% 968 coq-performance-tests-lite/src/fiat_crypto_via_setoid_rewrite_standalone.v.html │ │ 39.2960 40.0260 0.7300 1.86% 236 coq-rewriter-perf-SuperFast/src/Rewriter/Rewriter/Examples/PerfTesting/LiftLetsMap.v.html │ │ 21.9310 22.5630 0.6320 2.88% 2061 coq-fiat-crypto-with-bedrock/rupicola/bedrock2/compiler/src/compiler/FlatToRiscvFunctions.v.html │ │ 66.6740 67.1990 0.5250 0.79% 27 coq-fiat-crypto-with-bedrock/src/Rewriter/Passes/ToFancyWithCasts.v.html │ │ 50.5460 51.0690 0.5230 1.03% 50 coq-fiat-crypto-with-bedrock/src/Bedrock/Field/Synthesis/Examples/p224_64_new.v.html │ │ 26.4290 26.9460 0.5170 1.96% 35 coq-fiat-crypto-with-bedrock/src/Bedrock/End2End/X25519/MontgomeryLadderRISCV.v.html │ │ 39.1010 39.6150 0.5140 1.31% 338 coq-unimath/UniMath/ModelCategories/Generated/LNWFSMonoidalStructure.v.html │ │ 19.7000 20.2000 0.5000 2.54% 819 coq-fiat-crypto-with-bedrock/src/Curves/Weierstrass/Jacobian/CoZ.v.html │ │ 7.0390 7.5050 0.4660 6.62% 602 coq-unimath/UniMath/CategoryTheory/EnrichedCats/Limits/Examples/StructureEnrichedLimits.v.html │ │ 48.2050 48.6540 0.4490 0.93% 50 coq-fiat-crypto-with-bedrock/src/Bedrock/Field/Synthesis/Examples/p224_64_new.v.html │ │ 154.9920 155.4060 0.4140 0.27% 1190 coq-unimath/UniMath/CategoryTheory/GrothendieckConstruction/IsPullback.v.html │ │ 22.9170 23.3230 0.4060 1.77% 296 coq-fiat-crypto-with-bedrock/src/Bedrock/End2End/X25519/EdwardsXYZT.v.html │ │ 46.1790 46.5800 0.4010 0.87% 926 coq-fiat-crypto-with-bedrock/src/Bedrock/End2End/X25519/GarageDoor.v.html │ │ 38.4070 38.7860 0.3790 0.99% 224 coq-performance-tests-lite/PerformanceExperiments/rewrite_lift_lets_map.v.html │ │ 33.0780 33.4310 0.3530 1.07% 97 coq-vst/veric/binop_lemmas5.v.html │ │ 46.2160 46.5650 0.3490 0.76% 110 coq-fiat-crypto-with-bedrock/rupicola/bedrock2/bedrock2/src/bedrock2Examples/full_mul.v.html │ │ 0.3300 0.6780 0.3480 105.45% 868 coq-stdlib/MSets/MSetRBT.v.html │ │ 73.2190 73.5490 0.3300 0.45% 905 coq-unimath/UniMath/ModelCategories/Generated/LNWFSCocomplete.v.html │ │ 7.8720 8.1780 0.3060 3.89% 1225 coq-unimath/UniMath/CategoryTheory/DisplayedCats/Examples/Reindexing.v.html │ │ 36.6950 36.9970 0.3020 0.82% 548 coq-fiat-crypto-with-bedrock/rupicola/bedrock2/compiler/src/compiler/MMIO.v.html │ └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ 🐇 Top 25 speed ups┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ TOP 25 SPEED UPS │ │ │ │ OLD NEW DIFF %DIFF Ln FILE │ ├────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ │ 184.5380 182.1100 -2.4280 -1.32% 233 coq-fiat-crypto-with-bedrock/rupicola/bedrock2/deps/riscv-coq/src/riscv/Proofs/DecodeByExtension.v.html │ │ 132.1320 130.6580 -1.4740 -1.12% 22 coq-fiat-crypto-with-bedrock/src/Rewriter/Passes/ArithWithCasts.v.html │ │ 19.5880 18.1450 -1.4430 -7.37% 820 coq-fiat-crypto-with-bedrock/src/Curves/Weierstrass/Jacobian/CoZ.v.html │ │ 3.7110 2.8700 -0.8410 -22.66% 490 coq-stdlib/Reals/Cauchy/ConstructiveCauchyRealsMult.v.html │ │ 30.8600 30.0360 -0.8240 -2.67% 194 coq-vst/veric/expr_lemmas4.v.html │ │ 12.2330 11.4850 -0.7480 -6.11% 194 coq-fiat-crypto-with-bedrock/src/Fancy/Barrett256.v.html │ │ 31.6550 30.9430 -0.7120 -2.25% 147 coq-vst/veric/expr_lemmas4.v.html │ │ 26.3580 25.6750 -0.6830 -2.59% 22 coq-fiat-crypto-with-bedrock/src/Spec/Test/X25519.v.html │ │ 26.3460 25.6830 -0.6630 -2.52% 17 coq-fiat-crypto-with-bedrock/src/Spec/Test/X25519.v.html │ │ 29.5230 28.9880 -0.5350 -1.81% 79 coq-rewriter-perf-SuperFast/src/Rewriter/Rewriter/Examples/PerfTesting/SieveOfEratosthenes.v.html │ │ 99.7340 99.2310 -0.5030 -0.50% 20 coq-fiat-crypto-with-bedrock/src/Rewriter/Passes/NBE.v.html │ │ 15.2330 14.7470 -0.4860 -3.19% 99 coq-fiat-crypto-with-bedrock/src/Spec/Curve25519.v.html │ │ 15.5580 15.0740 -0.4840 -3.11% 33 coq-fiat-crypto-with-bedrock/src/Curves/EdwardsMontgomery25519.v.html │ │ 20.5800 20.1190 -0.4610 -2.24% 25 coq-fiat-crypto-with-bedrock/src/Spec/Test/X25519.v.html │ │ 14.0260 13.5830 -0.4430 -3.16% 850 coq-unimath/UniMath/CategoryTheory/Profunctors/Transformation.v.html │ │ 15.8960 15.5070 -0.3890 -2.45% 25 coq-fiat-crypto-with-bedrock/src/Curves/EdwardsMontgomery25519.v.html │ │ 47.8180 47.4540 -0.3640 -0.76% 558 coq-fiat-crypto-with-bedrock/rupicola/bedrock2/bedrock2/src/bedrock2Examples/insertionsort.v.html │ │ 35.7740 35.4300 -0.3440 -0.96% 2 coq-fiat-crypto-with-bedrock/src/ExtractionJsOfOCaml/fiat_crypto.v.html │ │ 1.3270 1.0060 -0.3210 -24.19% 854 coq-stdlib/FSets/FMapAVL.v.html │ │ 63.5920 63.2820 -0.3100 -0.49% 609 coq-bedrock2/bedrock2/src/bedrock2Examples/lightbulb.v.html │ │ 13.6600 13.3880 -0.2720 -1.99% 12 coq-fiat-crypto-with-bedrock/src/Spec/Test/X25519.v.html │ │ 17.6490 17.3840 -0.2650 -1.50% 481 coq-verdi-raft/theories/RaftProofs/EndToEndLinearizability.v.html │ │ 4.4610 4.2000 -0.2610 -5.85% 199 coq-fiat-crypto-with-bedrock/src/Fancy/Montgomery256.v.html │ │ 7.6610 7.4300 -0.2310 -3.02% 57 coq-fiat-crypto-with-bedrock/src/Curves/EdwardsMontgomery25519.v.html │ │ 10.6210 10.4090 -0.2120 -2.00% 326 coq-fiat-crypto-with-bedrock/src/Fancy/Barrett256.v.html │ └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ |
The bench unfortunately failed to complete due to concurrent commits in the tested repositories, but it still gives an idea. As with #18964, the overall gain is minor, but specific developments nonetheless benefit heavily from it, e.g., One I was not expecting is |
Let's retry @coqbot bench |
Probably should rebase before retrying |
Doesn't the bench script perform an auto-merge with master? |
no |
@coqbot bench |
🏁 Bench results:
🐢 Top 25 slow downs┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ TOP 25 SLOW DOWNS │ │ │ │ OLD NEW DIFF %DIFF Ln FILE │ ├─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ │ 83.6910 85.7480 2.0570 2.46% 365 coq-mathcomp-odd-order/theories/PFsection4.v.html │ │ 69.6480 71.6450 1.9970 2.87% 368 coq-mathcomp-odd-order/theories/PFsection4.v.html │ │ 47.5950 49.2650 1.6700 3.51% 558 coq-fiat-crypto-with-bedrock/rupicola/bedrock2/bedrock2/src/bedrock2Examples/insertionsort.v.html │ │ 48.0360 49.2130 1.1770 2.45% 558 coq-bedrock2/bedrock2/src/bedrock2Examples/insertionsort.v.html │ │ 96.4730 97.3780 0.9050 0.94% 376 coq-unimath/UniMath/ModelCategories/Generated/LNWFSMonoidalStructure.v.html │ │ 37.3300 38.1210 0.7910 2.12% 3 coq-fiat-crypto-with-bedrock/src/ExtractionJsOfOCaml/bedrock2_fiat_crypto.v.html │ │ 81.4210 82.1590 0.7380 0.91% 48 coq-fiat-crypto-with-bedrock/src/Curves/Weierstrass/AffineProofs.v.html │ │ 1.6360 2.2610 0.6250 38.20% 196 coq-stdlib/setoid_ring/Ncring_tac.v.html │ │ 46.6410 47.2310 0.5900 1.26% 926 coq-fiat-crypto-with-bedrock/src/Bedrock/End2End/X25519/GarageDoor.v.html │ │ 17.0160 17.5630 0.5470 3.21% 607 coq-mathcomp-odd-order/theories/PFsection9.v.html │ │ 33.5840 33.9440 0.3600 1.07% 1333 coq-fiat-crypto-with-bedrock/rupicola/bedrock2/compiler/src/compiler/FlatToRiscvFunctions.v.html │ │ 28.6430 28.9980 0.3550 1.24% 12 coq-fourcolor/theories/job323to383.v.html │ │ 26.0090 26.3590 0.3500 1.35% 12 coq-fourcolor/theories/job531to534.v.html │ │ 25.1310 25.4460 0.3150 1.25% 12 coq-fourcolor/theories/job466to485.v.html │ │ 25.9040 26.2050 0.3010 1.16% 129 coq-fiat-crypto-with-bedrock/src/Curves/Weierstrass/Projective.v.html │ │ 0.3670 0.6670 0.3000 81.74% 2108 coq-stdlib/FSets/FMapFacts.v.html │ │ 25.2210 25.5180 0.2970 1.18% 345 coq-fiat-crypto-with-bedrock/src/Curves/Montgomery/XZProofs.v.html │ │ 0.5890 0.8820 0.2930 49.75% 736 coq-stdlib/Reals/Cauchy/ConstructiveCauchyReals.v.html │ │ 36.7420 37.0340 0.2920 0.79% 548 coq-fiat-crypto-with-bedrock/rupicola/bedrock2/compiler/src/compiler/MMIO.v.html │ │ 19.6860 19.9740 0.2880 1.46% 2061 coq-fiat-crypto-with-bedrock/rupicola/bedrock2/compiler/src/compiler/FlatToRiscvFunctions.v.html │ │ 101.5340 101.8180 0.2840 0.28% 20 coq-fiat-crypto-with-bedrock/src/Rewriter/Passes/NBE.v.html │ │ 1.3090 1.5850 0.2760 21.08% 596 coq-stdlib/Strings/Byte.v.html │ │ 29.3500 29.6120 0.2620 0.89% 12 coq-fourcolor/theories/job001to106.v.html │ │ 21.7530 21.9970 0.2440 1.12% 12 coq-fourcolor/theories/job384to398.v.html │ │ 15.2210 15.4620 0.2410 1.58% 1382 coq-rewriter-perf-SuperFast/src/Rewriter/Language/Wf.v.html │ └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ 🐇 Top 25 speed ups┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ TOP 25 SPEED UPS │ │ │ │ OLD NEW DIFF %DIFF Ln FILE │ ├─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ │ 243.0660 235.9220 -7.1440 -2.94% 141 coq-fiat-crypto-with-bedrock/src/UnsaturatedSolinasHeuristics/Tests.v.html │ │ 259.5740 255.4060 -4.1680 -1.61% 8 coq-neural-net-interp-computed-lite/theories/MaxOfTwoNumbersSimpler/Computed/AllLogits.v.html │ │ 138.5250 134.8720 -3.6530 -2.64% 155 coq-fiat-crypto-with-bedrock/src/UnsaturatedSolinasHeuristics/Tests.v.html │ │ 258.2840 255.7030 -2.5810 -1.00% 1629 coq-metacoq-pcuic/pcuic/theories/PCUICSR.v.html │ │ 182.7430 181.1630 -1.5800 -0.86% 233 coq-fiat-crypto-with-bedrock/rupicola/bedrock2/deps/riscv-coq/src/riscv/Proofs/DecodeByExtension.v.html │ │ 41.0060 39.6710 -1.3350 -3.26% 236 coq-rewriter-perf-SuperFast/src/Rewriter/Rewriter/Examples/PerfTesting/LiftLetsMap.v.html │ │ 63.2610 61.9290 -1.3320 -2.11% 609 coq-bedrock2/bedrock2/src/bedrock2Examples/lightbulb.v.html │ │ 39.9660 38.6800 -1.2860 -3.22% 224 coq-performance-tests-lite/PerformanceExperiments/rewrite_lift_lets_map.v.html │ │ 27.0290 25.8800 -1.1490 -4.25% 17 coq-fiat-crypto-with-bedrock/src/Spec/Test/X25519.v.html │ │ 27.0150 25.8760 -1.1390 -4.22% 22 coq-fiat-crypto-with-bedrock/src/Spec/Test/X25519.v.html │ │ 40.9240 39.8220 -1.1020 -2.69% 236 coq-rewriter/src/Rewriter/Rewriter/Examples/PerfTesting/LiftLetsMap.v.html │ │ 96.4030 95.3500 -1.0530 -1.09% 999 coq-performance-tests-lite/src/fiat_crypto_via_setoid_rewrite_standalone.v.html │ │ 155.2520 154.2390 -1.0130 -0.65% 1190 coq-unimath/UniMath/CategoryTheory/GrothendieckConstruction/IsPullback.v.html │ │ 42.3620 41.4040 -0.9580 -2.26% 139 coq-fiat-parsers/src/Parsers/Refinement/SharpenedJSON.v.html │ │ 96.2690 95.3660 -0.9030 -0.94% 968 coq-performance-tests-lite/src/fiat_crypto_via_setoid_rewrite_standalone.v.html │ │ 21.1630 20.2770 -0.8860 -4.19% 25 coq-fiat-crypto-with-bedrock/src/Spec/Test/X25519.v.html │ │ 3.7380 2.8690 -0.8690 -23.25% 490 coq-stdlib/Reals/Cauchy/ConstructiveCauchyRealsMult.v.html │ │ 27.1670 26.4040 -0.7630 -2.81% 35 coq-fiat-crypto-with-bedrock/src/Bedrock/End2End/X25519/MontgomeryLadderRISCV.v.html │ │ 12.4590 11.7200 -0.7390 -5.93% 194 coq-fiat-crypto-with-bedrock/src/Fancy/Barrett256.v.html │ │ 28.8410 28.1400 -0.7010 -2.43% 32 coq-fiat-crypto-with-bedrock/src/Bedrock/End2End/X25519/MontgomeryLadderRISCV.v.html │ │ 15.5190 14.8370 -0.6820 -4.39% 99 coq-fiat-crypto-with-bedrock/src/Spec/Curve25519.v.html │ │ 3.0560 2.4010 -0.6550 -21.43% 487 coq-stdlib/Numbers/HexadecimalFacts.v.html │ │ 219.5410 218.9330 -0.6080 -0.28% 103 coq-fiat-crypto-with-bedrock/src/Arithmetic/BarrettReduction.v.html │ │ 14.0390 13.4580 -0.5810 -4.14% 12 coq-fiat-crypto-with-bedrock/src/Spec/Test/X25519.v.html │ │ 15.7550 15.1830 -0.5720 -3.63% 33 coq-fiat-crypto-with-bedrock/src/Curves/EdwardsMontgomery25519.v.html │ └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ |
After the merge of #18968, the benefits of this pull request increase notably, at least for The @coqbot run full ci |
@coqbot run full ci |
Especially for symbols defined inside sections, callee functions might be invoked with the exact same arguments as caller functions. A similar situation happens with recursive functions that share most of their arguments across calls. This new opcode replaces a sequence of repeated "PUSH; ACC" opcodes with constant indices.
@coqbot bench |
🏁 Bench results:
INFO: failed to install 🐢 Top 25 slow downs┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ TOP 25 SLOW DOWNS │ │ │ │ OLD NEW DIFF %DIFF Ln FILE │ ├────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ │ 62.6290 64.0820 1.4530 2.32% 609 coq-fiat-crypto-with-bedrock/rupicola/bedrock2/bedrock2/src/bedrock2Examples/lightbulb.v.html │ │ 154.8970 156.2060 1.3090 0.85% 1190 coq-unimath/UniMath/CategoryTheory/GrothendieckConstruction/IsPullback.v.html │ │ 81.5800 82.4580 0.8780 1.08% 48 coq-fiat-crypto-with-bedrock/src/Curves/Weierstrass/AffineProofs.v.html │ │ 11.8630 12.5870 0.7240 6.10% 194 coq-fiat-crypto-with-bedrock/src/Fancy/Barrett256.v.html │ │ 49.0720 49.7950 0.7230 1.47% 558 coq-fiat-crypto-with-bedrock/rupicola/bedrock2/bedrock2/src/bedrock2Examples/insertionsort.v.html │ │ 65.5030 66.2170 0.7140 1.09% 27 coq-fiat-crypto-with-bedrock/src/Rewriter/Passes/ToFancyWithCasts.v.html │ │ 17.4650 18.1480 0.6830 3.91% 31 coq-engine-bench-lite/coq/PerformanceDemos/pattern.v.html │ │ 180.6150 181.2360 0.6210 0.34% 233 coq-fiat-crypto-with-bedrock/rupicola/bedrock2/deps/riscv-coq/src/riscv/Proofs/DecodeByExtension.v.html │ │ 6.9670 7.5610 0.5940 8.53% 604 coq-unimath/UniMath/CategoryTheory/EnrichedCats/Colimits/Examples/StructureEnrichedColimits.v.html │ │ 2.3900 2.9280 0.5380 22.51% 487 coq-stdlib/Numbers/HexadecimalFacts.v.html │ │ 62.1620 62.6360 0.4740 0.76% 609 coq-bedrock2/bedrock2/src/bedrock2Examples/lightbulb.v.html │ │ 5.5290 5.9650 0.4360 7.89% 19 coq-fiat-crypto-with-bedrock/src/Language/IdentifiersBasicGENERATED.v.html │ │ 0.3160 0.6370 0.3210 101.58% 870 coq-stdlib/MSets/MSetRBT.v.html │ │ 16.8450 17.1430 0.2980 1.77% 24 coq-fiat-crypto-with-bedrock/src/Rewriter/Passes/MulSplit.v.html │ │ 34.3380 34.6130 0.2750 0.80% 1333 coq-fiat-crypto-with-bedrock/rupicola/bedrock2/compiler/src/compiler/FlatToRiscvFunctions.v.html │ │ 4.3560 4.6120 0.2560 5.88% 199 coq-fiat-crypto-with-bedrock/src/Fancy/Montgomery256.v.html │ │ 49.0640 49.3200 0.2560 0.52% 558 coq-bedrock2/bedrock2/src/bedrock2Examples/insertionsort.v.html │ │ 33.8740 34.1270 0.2530 0.75% 839 coq-unimath/UniMath/CategoryTheory/GrothendieckConstruction/IsPullback.v.html │ │ 44.7060 44.9580 0.2520 0.56% 827 coq-vst/veric/binop_lemmas4.v.html │ │ 0.6620 0.8990 0.2370 35.80% 813 coq-stdlib/MSets/MSetRBT.v.html │ │ 7.2390 7.4720 0.2330 3.22% 602 coq-unimath/UniMath/CategoryTheory/EnrichedCats/Limits/Examples/StructureEnrichedLimits.v.html │ │ 29.0270 29.2520 0.2250 0.78% 79 coq-rewriter/src/Rewriter/Rewriter/Examples/PerfTesting/SieveOfEratosthenes.v.html │ │ 0.5280 0.7500 0.2220 42.05% 200 coq-stdlib/Numbers/HexadecimalNat.v.html │ │ 8.2310 8.4420 0.2110 2.56% 900 coq-fiat-crypto-with-bedrock/src/Rewriter/RulesProofs.v.html │ │ 29.0320 29.2260 0.1940 0.67% 79 coq-rewriter-perf-SuperFast/src/Rewriter/Rewriter/Examples/PerfTesting/SieveOfEratosthenes.v.html │ └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ 🐇 Top 25 speed ups┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ TOP 25 SPEED UPS │ │ │ │ OLD NEW DIFF %DIFF Ln FILE │ ├──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ │ 242.1150 236.0070 -6.1080 -2.52% 141 coq-fiat-crypto-with-bedrock/src/UnsaturatedSolinasHeuristics/Tests.v.html │ │ 220.9590 217.1980 -3.7610 -1.70% 8 coq-neural-net-interp-computed-lite/theories/MaxOfTwoNumbersSimpler/Computed/AllLogits.v.html │ │ 83.6860 80.4870 -3.1990 -3.82% 365 coq-mathcomp-odd-order/theories/PFsection4.v.html │ │ 138.8370 135.7170 -3.1200 -2.25% 155 coq-fiat-crypto-with-bedrock/src/UnsaturatedSolinasHeuristics/Tests.v.html │ │ 221.3040 218.3740 -2.9300 -1.32% 103 coq-fiat-crypto-with-bedrock/src/Arithmetic/BarrettReduction.v.html │ │ 69.2010 66.8900 -2.3110 -3.34% 368 coq-mathcomp-odd-order/theories/PFsection4.v.html │ │ 259.2140 257.1350 -2.0790 -0.80% 1629 coq-metacoq-pcuic/pcuic/theories/PCUICSR.v.html │ │ 40.9340 39.6640 -1.2700 -3.10% 236 coq-rewriter-perf-SuperFast/src/Rewriter/Rewriter/Examples/PerfTesting/LiftLetsMap.v.html │ │ 40.7890 39.6940 -1.0950 -2.68% 236 coq-rewriter/src/Rewriter/Rewriter/Examples/PerfTesting/LiftLetsMap.v.html │ │ 39.8590 39.2150 -0.6440 -1.62% 224 coq-performance-tests-lite/PerformanceExperiments/rewrite_lift_lets_map.v.html │ │ 17.3180 16.7010 -0.6170 -3.56% 607 coq-mathcomp-odd-order/theories/PFsection9.v.html │ │ 37.3200 36.7450 -0.5750 -1.54% 139 coq-fiat-parsers/src/Parsers/Refinement/SharpenedJSON.v.html │ │ 96.8010 96.2600 -0.5410 -0.56% 999 coq-performance-tests-lite/src/fiat_crypto_via_setoid_rewrite_standalone.v.html │ │ 33.7840 33.2590 -0.5250 -1.55% 97 coq-vst/veric/binop_lemmas5.v.html │ │ 29.3790 28.8770 -0.5020 -1.71% 32 coq-fiat-crypto-with-bedrock/src/Bedrock/End2End/X25519/MontgomeryLadderRISCV.v.html │ │ 25.2880 24.7860 -0.5020 -1.99% 12 coq-fourcolor/theories/job503to506.v.html │ │ 11.5040 11.0280 -0.4760 -4.14% 2103 coq-mathcomp-ssreflect/mathcomp/ssreflect/order.v.html │ │ 29.9730 29.5700 -0.4030 -1.34% 12 coq-fourcolor/theories/job323to383.v.html │ │ 17.4840 17.0900 -0.3940 -2.25% 474 coq-metacoq-erasure/erasure/theories/EWcbvEvalCstrsAsBlocksFixLambdaInd.v.html │ │ 3.6970 3.3710 -0.3260 -8.82% 490 coq-stdlib/Reals/Cauchy/ConstructiveCauchyRealsMult.v.html │ │ 25.5770 25.2560 -0.3210 -1.26% 375 coq-unimath/UniMath/ModelCategories/Generated/LNWFSMonoidalStructure.v.html │ │ 47.2190 46.8990 -0.3200 -0.68% 926 coq-fiat-crypto-with-bedrock/src/Bedrock/End2End/X25519/GarageDoor.v.html │ │ 29.2370 28.9180 -0.3190 -1.09% 144 coq-fiat-crypto-with-bedrock/src/Bedrock/End2End/X25519/GarageDoorTop.v.html │ │ 26.3120 25.9940 -0.3180 -1.21% 12 coq-fourcolor/theories/job466to485.v.html │ │ 27.6300 27.3140 -0.3160 -1.14% 147 coq-fiat-crypto-with-bedrock/src/Bedrock/End2End/X25519/GarageDoorTop.v.html │ └──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ |
Doesn't seem to be very useful now. Leaderboard:
|
Maybe your comment is only about vo sizes but I just wanted to make sure the performance improvements don't get lost. At the usual going rate of 6 billion instructions per second this change yields an estimated ~5 minute overall improvement in the bench. |
We can see a 5% decrease in CPU instructions for fourcolor (heavy VM user) but apparently doesn't really translates in time. |
It's possible that the usual exchange rate between instructions and time does not apply because this is only about the vm. However, even the time measurements attest about a minute of time saved across the bench. Given that the change does not seem super complex (at least in terms of lines of code) it almost seems like free (as in "the work is already done") performance to me. |
We can also merge, it's basically zero-cost in terms of maintenance. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
FWIW.
Alea jacta est, @coqbot merge now |
Especially for symbols defined inside sections, callee functions might be invoked with the exact same arguments as caller functions. A similar situation happens with recursive functions that share most of their arguments across calls. This new opcode replaces a sequence of repeated
PUSH; ACC
opcodes with constant indices.